DNS 無法在使用 VPN 的 Windows 上的 Bash (Ubuntu) 中運作

DNS 無法在使用 VPN 的 Windows 上的 Bash (Ubuntu) 中運作

我剛剛開始測試“Bash on Ubuntu on Windows”,我喜歡它!

只是,問題是我需要使用 VPN 才能存取我們的後端和開發人員伺服器。當嘗試(例如)使用 Windows Bash shell ssh 到我們的開發伺服器時,它無法解析主機名稱。

請注意,我可以使用 ip 位址進行 ssh,而這些主機名稱在 Windows 的其他地方也可以正常運作。就像 putty、常規 cmd、檔案總管等一樣。

我還檢查了 /etc/resolv.conf 並可以看到我們的工作名稱伺服器列在那裡。

從這裡開始,我的網路技能有所不足,尤其是在 Linux 方面,所以請幫忙:D

答案1

這是路由問題,而不是 WSL 的 bug。您的本機子網路很可能與遠端子網路相同。我假設您使用橋接 VPN。

我遇到了同樣的問題。我使用 OpenVPN 連接我的辦公室(遠端)和我的家(本地)。這兩個子網路都是 192.168.1.0,這是許多路由器上最常見的子網路。

我最終透過以下配置解決了該問題。我的目標是使用 tun 來減少開銷,並且僅重定向目的地位於辦公室的流量。不過,這也適用於橋接 VPN。

;make the dhcp-option works on Windows 10.
script-security 2
;do not accept any pushed route command.
route-nopull
;make sure the connection still go through my home router. This line may not be necessary. You can try to remove this line and see it the VPN works.
route 192.168.1.1 255.255.255.0 net_gateway
;redirect the traffic where the destination is within the 192.168.1.0 subnet to OpenVPN gateway.
route 192.168.1.128 255.255.255.128
route 192.168.1.0 255.255.255.128
;set the DNS server which is in the office
dhcp-option DNS 192.168.1.254
dhcp-option DNS 192.168.1.253
dhcp-option DOMAIN my.company.domain

答案2

這並不能解決 DNS 無法運作的問題,但它是一種使其看起來正常工作的解決方法。

您可以編輯主機檔案(位於 /etc/hosts)並為要使用的主機名稱新增項目。

新增一個條目,其中包含 IP 位址,後面跟著空格和主機名稱。

123.456.1.1 target.host.net

請注意,您需要sudo編輯命令。sudo vi /etc/hosts

對我來說,編輯會在 bash shell 會話中持續存在。我假設這是微軟希望在未來修復的錯誤。目前,我只使用這個解決方法。

答案3

我也有同樣的問題。我暫時編輯了 /etc/resolv.conf,僅使用一個名稱伺服器和一個搜尋網域(用於 VPN 網路),它解析了該網路上的主機名稱。此變更不是持久性的,因此在 Windows 上的 Ubuntu 上退出並重新啟動 Bash 會將 /etc/resolv.conf 還原為其預設值。

相關內容