ubuntu 自从12.04后,会自动刷写 /etc/resolv.conf 文件,导致写入的dns信息会在重启的时候丢失。
============================
转自:http://i2cq.com/2012/05/1343
安装了ubuntu server 12.04 LTS之后,发现用过去的方法配置ip后,会出现dns失效的问题,每次启动后resolv.conf文件就被清空,查看wiki之后发现这个问题的原因。
我配置固定ip喜欢这样做
auto eht0 iface eth0 inet static address 192.168.1.5 gateway 192.168.1.1 netmask 255.255.255.0
之后/etc/init.d/networking restart后就可以正常访问网络,如果需要配置dns,我选择直接修改resolv.conf文件
$ vi /etc/resolv.conf nameserver 192.168.1.1 nameserver 8.8.8.8
在ubuntu 12.04之前是没问题的,更新到ubuntu 12.04之后,却出现文章开头的问题,修改resolv.conf文件,发现一条警告
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGE WILL BE OVERWRITTEN
意思是这个文件已经改由resolvconf程序来动态生成,手动编辑会被覆盖。这个resolvconf我还是第一次遇到,它是怎样的一个程序呢?wiki查询说ubuntu 12.04 lts启用了这个程序,在ubuntu manpage查到了对这个程序的功能说明,http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html 或者直接man resolvconf。
resolvconf是用来解决大量自动修改resolv.conf配置的程序所设立的,官方页面是http://packages.qa.debian.org/r/resolvconf.html
他解决了一些如手动修改/etc/network/interfaces,pppd拨号,dhcp自动分配,dnsmasq缓存解析等等程序对resolv.conf文件的影响,所有改变自动被resolvconf程序吸收修改而不会相互影响冲突。
resolvconf -a eth0 添加一个设备后,resolvconf –enable-updates开启自动更新功能,我再次修改/etc/network/interfaces
auto eht0 iface eth0 inet static address 192.168.1.5 gateway 192.168.1.1 netmask 255.255.255.0 dns-nameservers 192.168.1.1 8.8.8.8
之后,此时的resolv.conf文件就多了两行
nameserver 192.168.1.1 nameserver 8.8.8.8
如果不开启自动更新,使用resolvconf -u也能更新一次resolv.conf文件。
resolvconf是在ubuntu 12.04之后引入的一项新功能,这个守护进程能很好的解决手动编辑resolv.conf时遇到的冲突问题,很有实际意义。