resolv.conf的疑惑
发表于 : 2011-09-17 7:27
我的网络环境是电信ADSL开路由。很久以前就用IPV6爬墙了,以前用gogoc,速度太慢,现在用着he的隧道。我并没有按照大多数人的做法修改hosts,主要是一些IP经常变动,不经常更新的话会有一些网站打不开,另一方面,我总觉得靠人工收集的方式,可能不太全面。我是直接把IPV6的DNS服务器写在resolv.conf里面,然后再sudo chattr +i /etc/resolv.conf,防止networking manager修改该文件。在修改该文件的过程中,我发现里面的DNS服务器有优先级的区别,写在最前面的地址优先级最高,所以,为了使用DNS服务器优先返回IPV6地址,需要把支持IPV6的DNS写在前面,比如:
nameserver 2001:470:20::2
nameserver 8.8.8.8
以前我这样写没有一点问题,不过现在却不行了。原因是he的隧道需要客户端的IPV4地址进行配置,因为是ADSL,所以,路由器每一次断电重启后得到的IPV4地址都会变,解决的办法是用一个脚本取得本机的IPV4地址,然后再通过一个URL(https://ipv4.tunnelbroker.net/ipv4_end.php)提交到he的服务器,这样就能成功连上了(我把这个脚本丢到/etc/network/if-up.d/里面,以便在开机的时候自动运行)。不过在成功连上IPV6之前至少需要向DNS服务器提交一次查询,解析出ipv4.tunnelbroker.net这个域名的IPV4地址。
在以前,我象上面那样写resolv.conf是没问题的,一开始的时候,没有连上IPV6时,2001:470:20::2这个DNS不能用,但是系统会通过后面的8.8.8.8解析ipv4.tunnelbroker.net,然后提交变更后的客户端IPV4地址,连上IPV6隧道后,写在resolv.conf前面的2001:470:20::2就起作用了,它会优先返回待查询域名的IPV6地址,这样就不用改hosts了。
不过在重装系统后,我发现一个莫名其妙的问题:写在resolv.conf里的DNS服务器,只有第一个起作用,后面的根本就不起作用。后果就是,在刚开始开机的时候,eth0激活,ipv6脚本运行,它会向https://ipv4.tunnelbroker.net/ipv4_end.php提交客户端当前的IP地址,此时IPV6隧道还没有建立,resolv.conf中的2001:470:20::2这个DNS服务器是访问不了的,问题就出在,这时候系统不会自动使用第二个DNS服务器时行查询,脚本运行失败。开机后所有网站打不开,但是外网IP能ping通,可见resolv.conf中的第二个DNS服务器:8.8.8.8压根就没起作用。
希望达人能详细讲讲resolv.conf中的多个DNS服务器是怎么起作用的。
nameserver 2001:470:20::2
nameserver 8.8.8.8
以前我这样写没有一点问题,不过现在却不行了。原因是he的隧道需要客户端的IPV4地址进行配置,因为是ADSL,所以,路由器每一次断电重启后得到的IPV4地址都会变,解决的办法是用一个脚本取得本机的IPV4地址,然后再通过一个URL(https://ipv4.tunnelbroker.net/ipv4_end.php)提交到he的服务器,这样就能成功连上了(我把这个脚本丢到/etc/network/if-up.d/里面,以便在开机的时候自动运行)。不过在成功连上IPV6之前至少需要向DNS服务器提交一次查询,解析出ipv4.tunnelbroker.net这个域名的IPV4地址。
在以前,我象上面那样写resolv.conf是没问题的,一开始的时候,没有连上IPV6时,2001:470:20::2这个DNS不能用,但是系统会通过后面的8.8.8.8解析ipv4.tunnelbroker.net,然后提交变更后的客户端IPV4地址,连上IPV6隧道后,写在resolv.conf前面的2001:470:20::2就起作用了,它会优先返回待查询域名的IPV6地址,这样就不用改hosts了。
不过在重装系统后,我发现一个莫名其妙的问题:写在resolv.conf里的DNS服务器,只有第一个起作用,后面的根本就不起作用。后果就是,在刚开始开机的时候,eth0激活,ipv6脚本运行,它会向https://ipv4.tunnelbroker.net/ipv4_end.php提交客户端当前的IP地址,此时IPV6隧道还没有建立,resolv.conf中的2001:470:20::2这个DNS服务器是访问不了的,问题就出在,这时候系统不会自动使用第二个DNS服务器时行查询,脚本运行失败。开机后所有网站打不开,但是外网IP能ping通,可见resolv.conf中的第二个DNS服务器:8.8.8.8压根就没起作用。
希望达人能详细讲讲resolv.conf中的多个DNS服务器是怎么起作用的。