使用 VPN 的 Windows 上的 Bash(Ubuntu)中 DNS 不起作用

使用 VPN 的 Windows 上的 Bash(Ubuntu)中 DNS 不起作用

我刚刚开始测试“Windows 上的 Ubuntu 上的 Bash”,我很喜欢它!

只是,问题是我需要使用 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 恢复为其默认设置。

相关内容