WSL2 ubuntu可以存取主機IP但無法存取主機連接埠

WSL2 ubuntu可以存取主機IP但無法存取主機連接埠

Windows 設定:

  1. 執行範例 Web 伺服器並開啟連接埠 5000(請參閱圖 1)
  2. Windows防火牆完全關閉

WSL2:

  1. 可以成功存取網際網路並使用主機 IP 或 ping Windows $(hostname).local,但無法curl http://172.18.16.1:5000
sandowner@ENIGMATIC-MACHINE:~$ hostip=$(ip route | grep default | awk '{print $3}')
sandowner@ENIGMATIC-MACHINE:~$ echo $hostip
172.18.16.1
sandowner@ENIGMATIC-MACHINE:~$ ping 172.18.16.1
PING 172.18.16.1 (172.18.16.1) 56(84) bytes of data.
64 bytes from 172.18.16.1: icmp_seq=1 ttl=128 time=0.514 ms
64 bytes from 172.18.16.1: icmp_seq=2 ttl=128 time=0.690 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ ping $(hostname).local
PING ENIGMATIC-MACHINE (172.18.16.1) 56(84) bytes of data.
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=1 ttl=128 time=0.355 ms
64 bytes from ENIGMATIC-MACHINE (172.18.16.1): icmp_seq=2 ttl=128 time=0.729 ms
^C
sandowner@ENIGMATIC-MACHINE:~$ curl http://172.18.16.1:5000
^C (will timeout)
  1. 主機的 5000 連接埠也無法從 WSL2 瀏覽器訪問,並且將以以下內容結束ERR_CONNECTION_TIMED_OUT(見圖 2)

圖片1

圖2

任何幫助將不勝感激!謝謝!

答案1

當你想連結時從 WSL 2 到主機,沒有專門的機制。 WSL 2 在虛擬機器中運行,並且就 Windows 網路堆疊而言是遠端主機。這意味著:

  • 您無法存取綁定到、或localhost上的任何 IP 的應用程式127.0.0.0/8::1
  • 防火牆必須允許入站連接

不幸的是,WSL 2 虛擬網路具有完全不可預測的動態位址,因此僅監聽那裡意味著您必須始終更新網路服務配置。相反,綁定到0.0.0.0or ::(“所有介面”)更容易。這意味著每個人都能夠連接,因此請確保您了解如果您位於不受信任的網路上的後果。

相關內容