Windows 設定:
- 執行範例 Web 伺服器並開啟連接埠 5000(請參閱圖 1)
- Windows防火牆完全關閉
WSL2:
- 可以成功存取網際網路並使用主機 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)
- 主機的 5000 連接埠也無法從 WSL2 瀏覽器訪問,並且將以以下內容結束
ERR_CONNECTION_TIMED_OUT
(見圖 2)
任何幫助將不勝感激!謝謝!
答案1
當你想連結時從 WSL 2 到主機,沒有專門的機制。 WSL 2 在虛擬機器中運行,並且就 Windows 網路堆疊而言是遠端主機。這意味著:
- 您無法存取綁定到、或
localhost
上的任何 IP 的應用程式127.0.0.0/8
::1
- 防火牆必須允許入站連接
不幸的是,WSL 2 虛擬網路具有完全不可預測的動態位址,因此僅監聽那裡意味著您必須始終更新網路服務配置。相反,綁定到0.0.0.0
or ::
(“所有介面”)更容易。這意味著每個人都能夠連接,因此請確保您了解如果您位於不受信任的網路上的後果。