在 WSL2 中,我可以通过 FQDN ping:
$ ping host02.foo.org
PING host02.foo.org (10.10.10.1) 56(84) bytes of data.
64 bytes from host02.foo.org (10.10.10.1): icmp_seq=1 ttl=122 time=33.7 ms
但不是主机名:
$ ping host02
ping: host02: Name or service not known
我可以通过主机中的任一地址 ping 通。
** 编辑 **
我正在使用 Cisco AnyConnect 建立与公司网络的 VPN 连接。
** /编辑 **
WSL 中缺少什么?
简短的回答:
尝试添加:
...到您手动生成的`/etc/resolv.conf
更多细节:
在不知道您的确切配置(主要是公司网络端)的情况下,我在这里做出一些有根据的猜测......
默认情况下,WSL2 仅在其自动生成的名称中设置一个名称服务器
/etc/resolv.conf
:Hyper-V 虚拟交换机是从 WSL2 到 Windows 解析器的代理解析。所以最终,它是(默认情况下)在正常情况下处理该问题的Windows解析器。
ping host02
Windows end-of-things 获取由以下任一配置的搜索后缀:
只要Windows代表 WSL2 进行解析,就可以正常工作:
ping host02
/etc/resolv.conf
host02
但是,如果您覆盖您的
/etc/resolv.conf
并将 Windows/Hyper-V 解析器排除在外,则不会发生这种情况。虽然我目前无法直接对此进行测试,但您应该能够:
添加
search foo.org
到您手动生成的/etc/resolv.conf
,因为您已经有公司名称服务器在那里或者重新添加 Hyper-V 交换机地址。这里的挑战是每次 WSL2 重新启动时该交换机地址都会更改,因此您必须对其进行解析并通过脚本添加它。就像是:
由于这必须在每次重新启动时完成,因此您需要某种单例检查以确保每次重新启动时只添加一次。