先把本文的总结放在前面:
总结:
1、当有应用需要进行域名解析时(如:ping www.sohu.com),会读取resolv.conf文件获取dns服务器地址,然后再向该dns服务器发送域名解析请求,若resolv.conf设置的不对或者没有resolv.conf都会导致域名解析失败.
2、通过ifcfg-eth0也可以设置DNS服务器地址,并自动修改或生成resolv.conf文件.在ifcfg-eth0中可以通过PEERDNS参数决定是否修改resolv.conf文件,设置PEERDNS=yes(这也是系统的默认配置)则启用该网络设备时,会修改或生成resolv.conf文件,设置PEERDNS=no,则不对resolv.conf做任何变动.
3、若ifcfg-eth0被配置为DHCP模式,则系统默认PEERDNS=no,也就是会用DHCP获取的DNS地址修改或生成resolv.conf文件.
4、我觉得没有特殊情况,不用在resolv.conf中设置DNS,应在ifcfg-eth0中设定DNS服务器地址方便些,即符合正常思维也更便于维护和管理.
参考文档:
红帽的随机文档/usr/share/doc/initscripts-8.45.30/sysconfig.txt,我是红帽子5.5,不同的版本这个‘initscripts-8.45.30’可能不一样.
附件中是redhat 5.5的sysconfig.txt,可以下载先看看.强烈推荐大家看看该文档,里面还写了不少其它有用的资料,至少我是这么认为的.
---------------------------------正文开始------------------------------------
与DNS设置有关的系统配置文件有2个,即:
/etc/resolv.conf ’程序在需要域名解析时,会通过该文件获取DNS服务器地址
/etc/sysconfig/network-scripts/ifcfg-eth0 ‘ifcfg-eth0这个文件名根据不同的网络设备名字会不同.该文件也可以设置DNS服务器地址
看到此,肯定会想到,两个文件都可以设置DNS,难倒不会产生冲突吗?下面,通过实验来验证这个问题
1.1通过resolv.conf设置DNS服务器IP地址
只要在文件中加入nameserver <DNS服务器IP地址>就可以了.
我的resolv.conf配置如下:
nameserver 202.96.134.33
nameserver 202.96.128.68
PING 搜狐网站通过:
[root@linux_1 ~]# ping www.sohu.com
PING pgctcgzt01.a.sohu.com (121.14.0.20) 56(84) bytes of data.
64 bytes from 121.14.0.20: icmp_seq=1 ttl=55 time=31.6 ms
64 bytes from 121.14.0.20: icmp_seq=2 ttl=55 time=29.4 ms
64 bytes from 121.14.0.20: icmp_seq=3 ttl=55 time=28.9 ms
--- pgctcgzt01.a.sohu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2328ms
rtt min/avg/max/mdev = 28.996/30.027/31.659/1.183 ms
再试下把resolv.conf改名为resolv.conf.bak,看是否还能ping通,此时相当于没有resolv.conf文件
[root@linux_1 ~]# mv /etc/resolv.conf /etc/resolv.conf.bak
[root@linux_1 ~]# ping www.sohu.com
ping: unknown host www.sohu.com
系统提示‘ping: unknown host www.sohu.com’,说明不能进行域名解析,由此可以判断出,系统是先读取resolv.conf文件获取dns服务器地址,然后再去向dns服务器发送域名解析请求的.
马上恢复resolv.conf
[root@linux_1 ~]# mv /etc/resolv.conf.bak /etc/resolv.conf
注意:resolv.conf文件修改后立即生效,是不需要重新应用网络服务的.
1.2 通过ifcfg-eth0文件设置DNS服务器IP地址
只要在文件中增加以下配置就可以了:
DNS1=<dns服务器ip地址>
DNS2=<dns服务器ip地址>
注:最多设置两个dns服务器.
我的resolv.conf配置如下:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
IPADDR=192.168.1.63
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.96.134.33
DNS2=202.96.128.68
注:系统默认在应用网络配置时,会自动创 |