我正在运行 Windows 10 机器进行工作(必需),因此使用 VirtualBox 获取 Fedora 29 机器,以便我可以在投入生产之前在本地运行代码。我们的 github 位于 VPN 后面,我们使用 OpenVPN 来做到这一点,因此为了克隆我们的存储库,我必须遵循以下步骤:
- 在主机上以管理员身份运行 OpenVPN 并进行身份验证
- 启动 VirtualBox 并启动 Fedora 29 机器
- 使用 PuTTy 从主机登录虚拟机
我可以从主机 ping 访客,也可以从访客 ping 主机。我的 VirtualBox 设置为同时具有 Host-only 适配器和 NAT 适配器。客人可以完全访问互联网。
现在,来宾计算机已安装并更新了 NetworkManager,当它启动时,它知道 VPN 使用特定的 DNS,比如说x.x.x.x
,我知道这一点是因为:
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver general.dns.server.one
nameserver general.dns.server.two
nameserver x.x.x.x
看起来不错,但现在如果我尝试访问公司网站(我们称之为internal.company.github.website.net
),它无法解析主机名:
$ host internal.company.github.website.net
Host internal.company.github.website.net not found: 3(NXDOMAIN)
$ curl internal.company.github.website.net
curl: (6) Could not resolve host: internal.company.github.website.net
我知道 DNS/etc/resolv.conf
是正确的,因为:
$ dig internal.company.github.website.net @x.x.x.x
; <<>> DiG 9.11.5-P4-RedHat-9.11.5-4.P4.fc29 <<>> internal.company.github.website.net @x.x.x.x
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58282
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL:
这status: NOERROR
表明一切都很好,并且进一步我可以看到它解析为正确的 IP。
我假设发生的情况是它首先尝试使用其他两个通用 DNS 服务器(来自),因此我尝试通过打开并添加规则resolv.conf
来设置规则:dnsmasq
/etc/dnsmasq.conf
server=/internal.company.github.website.net/x.x.x.x
但在系统完全重新启动后,问题仍然存在,并且我没有观察到任何变化。
以类似的方式,我一直在尝试将 DNS 添加到顶部resolv.conf
但 NetworkManager 只是覆盖它(正如它应该的那样) - 所以那里没有任何变化。此外,我希望能够不必直接输入 DNS 域,因为我知道它可以更改(我不确定,我不负责我们的 IT),然后我将不得不再次经历整个过程。
关于这一点的一个非常奇怪的额外事实是,我的一位同事正在使用相同的图像,我们都从头开始导入,他能连接,但我不能。真是奇怪的东西。另外,我在测试时完全禁用了 Windows 防火墙和 Defender,所以不可能是这样。
编辑:旁注,我可以通过使用内部网站的实际 IP 来避免这个问题,从而避免 DNS 查找,但如果这种情况发生变化(同样,我不知道是否/何时会发生),那么我将不得不重新-进入其中,这似乎是一种痛苦。