最近新装了一台ubuntu 11.10的机器,为了使用固定IP, 直接把/etc/network/interfaces改成了固定IP,指定了网关和子网掩码。麻烦就由此而来了。
机器只要一重启,就无法找到DNS服务器。不管多少次一直是这样。
我们知道。ubuntu读取DNS的配置文件为/etc/resolv.conf,即使在里面指定了nameserver的IP地址,只要机器一重启,自己修改的DNS就不见了。
最后就来研究/etc/resolv.conf这个文件了。第一行有一段注释# Generated by NetworkManager,告诉我们,这个文件是由NetworkManager自动产生的,不是手工修改的。
这么说还得看看NetworkManager这个软件怎么设的网卡信息。于是打开system里的network,发现处理unmanaged状态,也就是NetworkManager这个软件无法管理网卡。
于是网上找资料http://thilo.cestona.ro/?p=196,对着这个办法试过,没有作用。不过里面提到的命令sudo apt-get install –reinstall libnss3:i386 libnss3倒是可以记下来。
于是就来分析NetworkManager这个软件的一些配置情况了。
在更改NetworkManager的配置文件之前,先要把/etc/network/interfaces下的关于eth0的相关东西都注释掉,让NetworkManager软件来管理所有的网络接口。
一共有下面几个配置文件需要注意:
/var/lib/NetworkManager/NetworkManager.state记录了当前的软件使用状态,直接删掉,让软件自动生成。
/etc/NetworkManager/NetworkManager.conf核心的配置文件,需要把managed设为true。
[ifupdown]
managed=true
然后重启。
在NetworkMagager软件中设IP,网关,子网掩码,DNS。如果设置成为。会产生这个文件。
/etc/NetworkManager/system-connections/Wired connection 1
这个文件就是NetworkManager对网卡的管理的详细信息。里面的DNS设置就是给/etc/resolv.conf这个文件使用的。
关于NetworkManager.conf这个配置文件的一些信息可以参考http://manpages.ubuntu.com/manpages/maverick/man5/NetworkManager.conf.5.html
重启,DNS能够正常分配,问题解决。
经验:
软件要从下面几个方面找原因
1. 软件的当前运行状态,主要从/var/lib下面去看
2. 哪些配置文件是手工修改,哪些是自动生成的,由什么软件自动生成?
3. 安装相应的包,更新对应的库
4. 尽量使用linux的发行版所附带的功能。而不要自己去更改底层的一些东西。