我有安装在Virtualbox官方网站的最新干净的Ubuntu 14.04.1 64位。 我使用vpnc连接到VPNnetworking,使用DHCP设置2个DNS服务器:
user@virtual:~$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.88.94.1 nameserver 8.8.8.8 nameserver 10.40.0.1
其中,vpn dhcp返回10.88.94.1和8.8.8.8 ,lan dhcp返回10.40.0.1 。 由vpn dhcp返回的第一个DNS服务器被configuration为一些内部名称的权威的,非recursion的名称服务器。
问题是 – Ubuntu以某种方式忽略了权威标志并放弃了有效的响应,因为它是非recursion的:
user@virtual:~$ nslookup > video.something.com ;; Got recursion not available from 10.88.94.1, trying next server Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: video.something.com Address: 180.112.94.1
由于tcpdump清楚地显示第一个DNS服务器的答案有'权威'标志设置,但不知何故它被忽略('*'在第二个响应是“权威”,“ – ”是“非recursion”):
13:23:44.505098 IP 10.40.130.209.44159 > 10.88.94.1.domain: 63790+ A? video.something.com. (32) 13:23:44.506285 IP 10.88.94.1.domain > 10.40.130.209.44159: 63790*- 1/0/0 A 10.88.94.12 (48) 13:23:44.506390 IP 10.40.130.209.45437 > 8.8.8.8.domain: 63790+ A? video.something.com. (32) 13:23:44.608414 IP 8.8.8.8.domain > 10.40.130.209.45437: 63790 1/0/0 A 180.112.94.1 (48)
在Windows和OSX上,相同的设置按预期工作(使用第一个DNS结果)。 但不是在Ubuntu上。 是否我可以在Ubuntu中修复,以便权威响应能够被正确处理,而不pipe是“非recursion”的标志,还是已经完全破坏了,哪里可以做什么?
你似乎预期的回退行为不是DNS如何工作的一部分。 resolv.conf中的第二个名称服务器只能在第一个没有响应或者有其他types的networking错误的情况下联系。
微软显然做了他们自己的事情,而且它确实对你正在做的事很有用,但不应该依靠build立一个VPN。 微软还为不同的networking接口使用不同的名称parsing。
如果你不能影响VPNconfiguration,那么在Linux上最好的办法可能是build立你自己的域名服务器,它决定在哪里按域转发请求。
为了使DNSrecursion适用于Ubuntu bind9服务器,您应确保以下行位于DNS服务器上的/etc/bind/named.conf.options中:
recursion yes; allow-recursion { any; };
这就是说,你声称你没有访问DNS服务器。 在这种情况下,你有没有考虑改变你的DNS服务器的顺序? 例如,如果你把你最后的DNS条目…
nameserver 10.40.0.1
并将其放在/etc/resolvconf/resolv.conf.d/head文件中,然后运行resolvconf -u命令,该条目将自动添加到/etc/resolv.conf的顶部。 这样做是使10.40.0.1第一个DNS服务器使用,然后它检查VPNlogging(假设10.40.0.1允许DNSrecursion)。