分页: 1 / 1

[分享]关于/etc/resolv.conf 被改写的解决办法

发表于 : 2009-08-12 15:57
xiajiebuhui
为火狐增加本地dns缓存的文章已经遍地了,其中大多数的步骤是相同的,很多人没有这个文件。
执行以下命令
sudo gedit /etc/ppp/peers/dsl-provider
在 usepeerdns 前面增加 # ,也就是把这条语句覆盖掉。
以防,resolv.conf的设置被pppoe覆盖。
我没有这个文件,我做的是provider文件,今天才发现,原来由于自动dhcp的存在,resolve.conf总是会被覆盖掉
找了很多办法,下面这个算是比较全面的
http://blog.csdn.net/xport/archive/2007 ... 95769.aspx
最近又遇到 /etc/resolv.conf 会定时被改写掉的问题了,这回是在FreeBSD中!

在 LAN via NAT 或是 PPPoE 的环境中上Internet,我们总得在 resolv.conf 中指定 DNS server,而这里的 DNS server 是
通过 DHCP server 自动获取的,如果不能正确获得则需要手动把 ISP 给出的 DNS server 加入。可有时候一些“聪明”的程
序总是会跳出来搞些小动作,把我们自己写入的设定换掉,而且还是轮询的,你再改,没有过几分钟就又被改掉。

之前遇到过的情况有(DNS server 抓不对,且会被改写!):

1. Ubuntu 6.10 (Edgy) 通过 ppp 拨号时,只抓到 ADSL Modem DHCP server IP.
2. Ubuntu 7.04 (Feisty) 那个可恶的network-manager程序会定时抓 ADSL Modem DHCP server IP.
3. VMWare 中的 Guest OS 以 NAT 网络 获取IP的时候,只抓到NAT DHCP server IP.

于是有很多人都跳出来问一个问题:“如何避免 resolv.conf 被修改、改写和覆写等等?“

然而对于*NIX 这样灵活的系统,解法也有很多,我们一一看来,哪个粗糙,哪个优雅!

解法一:修改 /sbin/dhclient-script,注释掉对 resolv.conf 进行操作的地方.

Linux :

把 make_resolv_conf 这个函数的调用都给注释掉!

FreeBSD:

把 > resolv.conf 所在的行都给注释掉!

解法二:强制修改 resolv.conf 的文件flag,设定为不可被更改.

Linux:

chattr +i /etc/resolv.conf

FreeBSD:

chflags schg /etc/resolv.conf

解法三:变更DHCP Client的配置文件,在特定的环节追加我们的设定.

Linux (Ubuntu Dist.):

在 /etc/dhcp3/dhclient.conf 中增加如下设定:prepend domain-name-servers <ip1>, <ip2>;

FreeBSD:

在 /etc/dhclient.conf 中增加如下设定:prepend domain-name-servers <ip1>, <ip2>;

就我自己看来:解法一属于粗糙,解法二属于暴力,解法三才是好办法!

解法三不会变更系统框架,还是原来执行流程。我们只是在默认的prepend环节,多增加prepend的内容,让DHCP Client
在得到DNS server信息后,把我们所需要的配置追加在前面。

Re: [分享]关于/etc/resolv.conf 被改写的解决办法

发表于 : 2009-08-12 17:07
skyx

代码: 全选

DHCPCD_ARGS="-q"
#DHCPCD_ARGS="-C resolv.conf -q"
#DHCPCD_ARGS="-t 30 -h $HOSTNAME -R"

Re: [分享]关于/etc/resolv.conf 被改写的解决办法

发表于 : 2009-08-12 17:34
xiajiebuhui
skyx 写了:

代码: 全选

DHCPCD_ARGS="-q"
#DHCPCD_ARGS="-C resolv.conf -q"
#DHCPCD_ARGS="-t 30 -h $HOSTNAME -R"
不明白,向哪里写这些东西?

Re: [分享]关于/etc/resolv.conf 被改写的解决办法

发表于 : 2009-12-13 9:32
ha1cy0n
修改/etc/dhcp3/client.conf中的
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
删除其中的domain-name, domain-name-servers, domain-search, host-name何如?