在修复我的 Ubuntu 12.04 工作站上确实有些自定义的设置时,当我连接 VPN 连接时,它的 DNS 服务器被添加到 /etc/resolv.conf 的底部而不是顶部,导致所有针对 VPN 目标的 DNS 查询失败(因为此列表中的第一个 DNS 服务器对查询做出了负面响应,并且我的计算机从不要求底部的 DNS 服务器提供答案)。
如果我手动编辑 /etc/resolv.conf 并简单地将网络管理器添加的名称服务器记录移到顶部,它就可以正常工作。但这种解决方法显然不是首选。
我可能应该提到我关闭了 dnsmasq,因为有了它,VPN 的 DNS 解析根本不起作用,尽管所有文件都包含了它们应该有的内容。
修复此问题的正确方法是什么?
答案1
应该发生的是,VPN 客户端进程应在记录名称 IFACE.CLIENT 下向 resolvconf 注册 VPN 名称服务器地址,其中 IFACE 是 VPN 网络接口的名称(例如 tun0),CLIENT 是 VPN 客户端程序的名称;文件 /etc/resolvconf/interface-order 应包含与此记录名称匹配的 glob 模式,优先级应适当高:在环回接口 lo* 之后但在 LAN 接口(例如 eth*)之前。在出厂时提供的 interface-order 文件中,tun* 和 tap* 模式位于顺序中的正确位置。
如果您正在使用第三方 VPN 客户端程序,那么它可能不支持此功能,在这种情况下,您要么破解后一个程序的脚本,要么采用一些解决方法,例如将地址放在 /etc/network/interfaces 中的 dns-nameservers 行上(如果使用 ifup)或编写自定义 resolvconf 更新脚本。