
我試圖讓 WSL 在我的 Windows 上使用本地主機代理(實際上是它的 Fiddler),但我看不到任何類似的連接,並且下載通常會失敗,我該如何解決這個問題?
我知道我可以從 Windows 本地連接到 Linux 本機,但我該如何扭轉這種情況?
WSL 是 Ubuntu 18.04
答案1
答案2
答案3
與 WSL 1 相比,WSL 2 需要一些額外的工作。
允許所需連接埠通過防火牆。
1.1 啟動
Windows Defender Firewall with Advanced Security
1.2 在左側窗格中選擇
Incoming Rules
。1.3 在右側窗格中按一下
New Rule
。1.4 對於規則類型,選擇
Port
。下一個。1.5 選擇
TCP
和Specific local ports
。插入連接埠、以逗號分隔的連接埠清單或連接埠範圍。下一個。1.6 選擇
Allow connection
。下一個。1.7 僅檢查
Public
設定檔。下一個。1.8 輸入規則的名稱。例如
WSL
。完畢。從其中找出 WSL 的 IP 位址:
grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'
這是網路介面的 IPv4 位址vEthernet (WSL)
。
curl
使用或測試與 Windows 主機的連線telnet
:3.1
curl ip.from.step.2:port
我已使用此程序連接到在 Windows 上運行的 Oracle 伺服器和 X 伺服器。
更新:由於每次Windows重新啟動時WSL的IP位址都會改變,因此自動取得它並更新檔案很方便hosts
。
在 WSL 中:
執行
cat /etc/hosts
以找出 Windows 主機的名稱。將以下程式碼新增至
~/.profile
:HOST=<WINDOWS_HOSTNAME> IP_HOST=$(grep -m 1 $HOST /etc/hosts) OLD_IP=$(echo "$IP_HOST" | awk '{print $1}') NEW_IP=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}') if [ "$NEW_IP" != "$OLD_IP" ]; then echo "Updating IP Address-hostname mapping" sudo sed -i "s|$IP_HOST|$NEW_IP\t$HOST|" /etc/hosts echo "$HOST has the IP Address $NEW_IP" fi
答案4
有一個方便的“功能”WSL-VPN套件。如果您按照 README 說明中所示安裝並匯入此發行版,則您可以使用它host.internal
來存取 Windows 主機,而無需知道其 IP 位址。
下載後,
wsl --import wsl-vpnkit --version 2 $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz
添加到你的~/.bashrc,
wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit status >/dev/null || wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit start
重新載入終端後,請嘗試host.internal
從 WSL 進行點擊。例如如果Fiddler代理埠是8888,
nc -v -w5 -z host.internal 8888