Ubuntu设置DNS服务器的根本解决方法

下面是本文Ubuntu设置DNS服务器的根本解决方法。

因为network-manager总是带来各种问题,所以一怒之下将其卸载,手动修改/etc/network/interfaces如下:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.2.10
netmask 255.255.255.0
gateway 192.168.2.1

因为我是用路由拨号的,所以设置一个静态地址比较方便。由此带来的问题是DNS服务器地址无法保存,修改/etc/resolv.conf没有用,重启之后就没有了。google一番能找到的也都是之前转载过的方法。这个方法的根本在于修改/etc/dhcp3/dhclient.conf来添加DNS服务器,而我现在将eth0配置为静态地址了,所以用不上。发现这个问题是因为这种方法需要注释掉/etc/ppp/peers/dsl-provide中的usepeerdns,可这个文件我根本没有!不断试验并重启了n次之后终于找到了解决的方法。关键在于dns信息是由/etc/resolv.conf提供,而这个文件我将其权限设为444后重启仍恢复为空。这就意味着这个文件是在开机过程中生成的,一通乱翻之后发现是由/sbin/resolvconf -u生成,http://ubuntuone.cn/其“原材料”就是/etc/resolvconf/resolv.conf.d下的三个文件:head,base和tail。这三个文件名简直再清楚不过了,这样一来就很简单了:把需要添加的dns添加到base中(其他两个其实也一样)即可。例如要使用OpenDNS的服务器只要作如下操作:


su
echo “nameserver 208.67.220.220″ >> /etc/resolvconf/resolv.conf.d/base
echo “nameserver 208.67.222.222″ >> /etc/resolvconf/resolv.conf.d/base

其实只要知道DNS服务器设置在/etc/resolv.conf中就可以有一个很简单的解决方法:在/etc/rc.local中添加一句:


echo “nameserver 208.67.220.220″ >> /etc/resolv.conf

这样等于每次开机时自动配置一次DNS服务器——只不过这样的解决解不开心里的疙瘩。

相关推荐