当前位置: > Linux服务器 > DNS >

debian下/etc/resolv.conf修改后老是复原的问题

时间:2015-08-24 17:33来源:linux.it.net.cn 作者:IT
我的/etc/resolv.conf文件在插拔USB无线网卡后会被自动修改,我从网上找到的不让修改方法如下:







打开/etc/ppp/peers/provider 文件,找到 “usepeerdns” 这一行然后在前面加上#号注释掉,执行命令如下:

[yjm@debian]:/etc/ppp/peers$ sudo gedit /etc/ppp/peers/provider

找到 “usepeerdns” 这一行然后在前面加上#号注释掉

我虽然做了上述修改但是还没有验证这种方法的有效性。下面是网上的几篇文献





debian下/etc/resolv.conf修改后老是复原的问题
http://hi.baidu.com/manbuzhe2009/item/f9c0b0a32e9ced38020a4d68
debian下/etc/resolv.conf修改后老是复原的问题

本文来自 :  http://blog.csdn.net/xiangshimoni/article/details/6958243

修改ubuntu的dns,嘿嘿,虽然修改完了/etc/resolve.conf,但是马上又被覆盖了,自动恢复成默认值了。 

  
google发现可以用下面的方法禁止DNS被自动修改,保留系统的dns配置(/etc/resolv.conf),终端键入: 

sudo gedit /etc/ppp/peers/dsl-provider 

找到userpeerdns这一行,注释掉即可禁止使用电信自动配置的dns,保留使用resolv.conf的dns,该文件位于/etc/resolv.conf。 


dsl-provider内容如下: 
# Minimalistic default options file for DSL/PPPoE connections 

noipdefault 
defaultroute 
replacedefaultroute 
hide-password 
#lcp-echo-interval 30 
#lcp-echo-failure 4 
noauth 
persist 
#mtu 1492 
#persist 
#maxfail 0 
#holdoff 20 
plugin rp-pppoe.so eth0 
#usepeer



DNS服务器设置(Ubuntu10.04) 
1、两个免费好用的DNS服务器

    googleDNS:   8.8.8.8;            8.8.8.4
    openDNS     :   208.67.220.220;    208.67.222.222
2、查看及修改本机DNS服务器

    查看DNS server:nslookup;        server
    修改DNS server: sudo gedit /etc/resolv.conf, 修改 nameserver

  NDS服务器的修改是即时生效的,但这种修改方法在重启电脑后ubuntu系统会自动重写/etc/resolv.conf文件,恢复默认的DNS
3、永久修改DNS

    sudo gedit /etc/dhcp3/dhclient.conf

    里面有一行注释掉的:#prepend domain-name-servers x.x.x.x;

    将改行的注释去掉或者直接在文件中加上一行(后面加上想用的DNS):
    prepend domain-name-servers 8.8.8.8,8.8.8.4;


在rc.local里加入这个重启网络配置的命令:
sudo /etc/init.d/networking restart

sudo /etc/init.d/dns-clean start





/etc/resolv.conf 的更改在重启后丢失的解决办法
http://blog.163.com/haizhifeng6@126/blog/static/45615427201231254052646/

2012-04-12 17:40:52|  分类: linux

转自http://hi.baidu.com/iamcyh/blog/item/4cfa1c021e9630f208fa9300.html
解决方法:

在 /etc/sysconfig/network-scripts/ifcfg-eth文件中加入 PEERDNS 选项。可以是 0, 1, 2 等等,代表不同网卡的配置文件。例如,系统上第一张网卡是eth0的话,那它的配置文件就是 /etc/sysconfig/network-scripts/ifcfg-eth0 。

然后在文件中把 PEERDNS 改为 'no'. 例如:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
PEERDNS=no这个选项可令 /etc/resolv.conf 在系统重启后不会被重写。

此法无效的话还要在eth0中添加dns信息:

/etc/ resolv.conf文件中的 namesever 在重启RedHat5或重启service network restart 后丢失,我按文件的说明到/etc/sysconfig/network-scripts/ ifcfg-eth0 添加DNS后解决。但是我不知道到底是什么在重启的时候重写了/etc/ resolv.conf文件。

/etc/ resolv.conf文件如下:

nameserver 59.51.78.210
nameserver 59.51.78.211
nameserver 192.168.0.1
search domain
domain domain
# Generated by NetworkManager

# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:

# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
===============================================
/etc/sysconfig/network-scripts/ ifcfg-eth0 的内容:

# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=08:00:27:cc:64:86
NETMASK=255.255.255.0
IPADDR=192.168.0.155
GATEWAY=192.168.0.1
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=no

#我在这添加了DNS后,/etc/ resolv.conf文件内容保存下来了
DNS1=202.96.128.86
DNS2=202.96.128.166
DNS3=8.8.8.8










dns自动改变/etc/resolv.conf
方法1:

在/etc/sysconfig/network-scripts/ifc-eth0里(你使用的网卡的配置文件)添加PEERDNS=no参数
下次再启动就不会自动修改了

方法 2:

sudo gedit /etc/dhcp3/dhclient.conf

在 /etc/dhcp3/dhclient.conf 中找到 #prepend domain-name-servers,去掉注释并增加如下设定:

代码:
prepend domain-name-servers

, ;

这里的、 是你的ISP给出来的DNS服务器地址。

最近又遇到 /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  , ;

    FreeBSD:

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

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

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




























禁止Ubuntu&BT5 r3的DNS被自动修改

在虚拟机桥接环境下发现BT5 r3会把自己设置的DNS自动修改
步骤一、禁止DNS被自动修改
用下面的方法禁止DNS被自动修改,保留系统的dns配置(/etc/resolv.conf),终端键入:
sudo vi /etc/ppp/peers/dsl-provider     ###此为较早版本linux该配置文件路径
在BT5 r3中此处配置文件路径为/etc/ppp/peers/provider
找到userpeerdns这一行,注释掉即可禁止使用电信自动配置的dns,保留使用resolv.conf的dns,该文件位于/etc/resolv.conf。
provider内容如下:
# Minimalistic default options file for DSL/PPPoE connections
noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth0
#usepeerdns
user
ps:关于resolv.conf
/etc/resolv.conf
该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:
nameserver
#定义DNS服务器的IP地址domain
#定义本地域名search
#定义域名的搜索列表sortlist
#对返回的域名进行排序


/etc/resolv.conf的一个示例:
nameserver 8.8.8.8
#此为谷歌域名服务器
步骤二、重启网络服务
sudo /etc/init.d/networking restart
若仍不生效,重启Linux即可解决

(责任编辑:IT)
------分隔线----------------------------