Forward Port từ Ubuntu WSL sang Windows Host

Forward Port từ Ubuntu WSL sang Windows Host

·

3 min read

Chuyển tiếp cổng là một kỹ thuật hữu ích cho phép bạn truy cập các dịch vụ chạy trên các máy tính và mạng khác nhau. Nếu bạn đang phát triển một dịch vụ FastAPI trên Ubuntu cài đặt trong Windows Subsystem for Linux (WSL), bạn có thể muốn truy cập nó từ chính máy Windows của mình. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách chuyển tiếp cổng từ Ubuntu WSL sang máy chủ Windows và truy cập dịch vụ FastAPI được phát triển trên Ubuntu từ Windows.

Những thứ cần thiết (tiền đề):

  • Cài đặt Ubuntu chạy trên Windows Subsystem for Linux (WSL)

  • Máy tính Windows

Bước 1: Khởi động máy chủ SSH trên Ubuntu WSL

Để bắt đầu, chúng ta cần kích hoạt máy chủ SSH trên Ubuntu WSL. Mở cửa sổ terminal trên Ubuntu và chạy lệnh sau:

sudo service ssh start

Bước 2: Tìm địa chỉ IP của Ubuntu WSL

Để tiếp tục, bạn cần tìm địa chỉ IP của Ubuntu WSL. Mở cửa sổ terminal trên Ubuntu và chạy lệnh sau:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Bước 3: Chạy lệnh netsh trên máy chủ Windows

Mở Command Prompt với quyền quản trị trên máy chủ Windows của bạn và chạy lệnh sau:

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=<LOCAL_PORT> connectaddress=<WSL_IP_ADDRESS> connectport=<WSL_PORT>

Thay thế [WSL_IP_ADDRESS] bằng địa chỉ IP của Ubuntu WSL mà bạn đã tìm thấy ở Bước 2.

Bước 4: Kiểm tra chuyển tiếp cổng

Kiểm tra việc chuyển tiếp cổng bằng cách mở trình duyệt web trên máy Windows của bạn và truy cập vào http://localhost:<LOCAL_PORT> (trong đó <LOCAL_PORT> là số cổng bạn đã chỉ định ở bước 4).

Nếu việc chuyển tiếp cổng được thiết lập chính xác, bạn sẽ thấy nội dung web từ phiên bản Ubuntu WSL của mình được hiển thị trên trình duyệt web trên máy Windows của bạn.

Ví dụ: Chạy dịch vụ FastAPI mẫu trên Ubuntu WSL và truy cập dịch vụ đó trên trình duyệt Windows.

Bước 1: Tạo một file tên hello.py với nội dung bên dưới:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=5001)

Bước 2: Khởi động dịch vụ FastAPI

python3 hello.py

Bước 3: Truy cập dịch vụ FastAPI trên trình duyệt Windows

LƯU Ý: Để chuyển tiếp cổng hoạt động, máy chủ SSH trên Ubuntu WSL của bạn cần phải luôn chạy. Nếu bạn khởi động lại phiên bản Ubuntu WSL, bạn sẽ cần phải khởi động lại máy chủ SSH trước khi có thể sử dụng chuyển tiếp cổng.