修改/etc/resolv.conf又恢复到原来的状态?

本文介绍了解决CentOS5.4系统中DNS解析不稳定的问题。通过在ifcfg-eth0文件中设置DNS服务器而非直接修改resolv.conf,确保了网络重启后DNS配置依然有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新装一台机器环境为服务器主板,双网卡,系统为CentOS5.4 ,eth0为内网ip,eth1为公网ip。但是由于在本地测试,设置的内网ip,域名服务器同样使用的是上海本地的域名解析,没有问题,可以上网,可以解析。

放到外地公网上去,ip地址已经设好了。使用setup更改了一下外地公网的dns,保存退出。重启service network restart后发现不能解析了。用ip地址可以连,但是不能ping www.sina.com.cn

总是这样,设置一次可以,过一会或者重启一下服务器,重启一下network都不能解析了。发现/etc/resolv.conf又恢复到原来的状态,里面什么都没有了。手动加入nameserver也不行。

后来到网上查找,发现有人与我同样的问题。原来在CentOS5.4下面直接修改/etc/resolv.conf不行。必须要在/etc /sysconfig/network-scripts/ifcfg-eth0里面最后加上dns的设置。要不然,重启后,肯定使用eth0设置中没有设 dns的相关信息,使/etc/resolv.conf恢复到原来的状态。

打开/etc/sysconfig/network-scripts/ifcfg-eth0,为了保险起见,可以同样修改eth1的设置

DEVICE=eth0 
  BOOTPROTO=none 
  HWADDR=00:xx:19:xx:xx:xx 
  ONBOOT=yes 
  TYPE=Ethernet 
  USERCTL=no 
  IPV6INIT=no 
  PEERDNS=yes 
  NETMASK=255.255.255.0 
  IPADDR=xxx.xxx.xxx.xxx 
  GATEWAY=xxx.xxx.xxx.xxx 
  DNS1=202.96.209.5 #上海dns,根据实际情况更换 
  DNS2=202.96.209.133 #上海dns,根据实际情况更换

这样设置后,/etc/resolv.conf里面根本就不需要设置。service network restart 后,可以发现/etc/resolv.conf里面就有两个dns的解析ip了。配置好以后重启网络,cat /etc/resolv.conf,可以看到如下参数:

# Generated by NetworkManager 
  nameserver 202.96.209.5 
  nameserver 202.96.209.133 
  search localdomain

DNS解析设置成功。 
  在此要强调一点的是,直接修改/etc/resolv.conf这个文件是没用的,网络服务重启以后会根据/etc/sysconfig /network-scripts/ifcfg-eth0来重载配置,如果ifcfg-eth0没有配置DNS,那么resolv.conf会被冲掉,重 新变成空值。

不过对于其他的CentOS系统是否也是这样的,要是遇到同样的问题。就这样设一下试试

### 解决 Linux 系统 `/etc/resolv.conf` 文件缺失的方法 当遇到 `/etc/resolv.conf` 文件缺失的情况时,可以通过以下方法来解决问题: #### 方法一:创建并配置 `tail` 文件 如果系统中存在 `/etc/resolvconf/` 目录,则可以尝试通过创建 `tail` 文件的方式恢复 DNS 配置。具体操作如下: 1. 创建 `/etc/resolvconf/resolv.conf.d/tail` 文件[^1]。 2. 在该文件中添加所需的 DNS 服务器地址,例如: ```bash nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 3. 执行命令以应用更改: ```bash sudo resolvconf -u ``` 此方法适用于基于 Debian 的发行版(如 Ubuntu),能够有效防止 `/etc/resolv.conf` 被覆盖。 --- #### 方法二:手动编辑 `/etc/resolv.conf` 尽管某些情况下 `/etc/resolv.conf` 可能被标记为只读或链接文件,但仍可通过以下方式解决: 1. 如果 `/etc/resolv.conf` 是一个符号链接且指向不存在的目标文件,可先删除原链接: ```bash sudo rm /etc/resolv.conf ``` 2. 创建一个新的普通文件并写入 DNS 配置: ```bash echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf ``` 3. 设置权限以确保其不会轻易被修改: ```bash sudo chmod 644 /etc/resolv.conf ``` 需要注意的是,在部分环境中直接编辑 `/etc/resolv.conf` 并不可靠,因为 NetworkManager 或其他服务可能会频繁重写该文件[^2]。 --- #### 方法三:重新配置 NetworkManager 对于使用 NetworkManager 进行网络管理的系统,可能需要调整其设置以保留自定义的 DNS 配置: 1. 使用文本编辑器打开 NetworkManager 配置文件: ```bash sudo nano /etc/NetworkManager/NetworkManager.conf ``` 2. 将 `[main]` 部分中的 `dns=dnsmasq` 替换为 `dns=default` 或者注释掉这一行: ```ini [main] dns=default ``` 3. 重启 NetworkManager 服务使更改生效: ```bash sudo systemctl restart NetworkManager ``` 完成上述步骤后,再次检查 `/etc/resolv.conf` 是否正常生成以及其中的内容是否符合预期[^4]。 --- #### 方法四:安装必要的网络管理工具 有时由于缺少特定的网络管理组件而导致 `/etc/resolv.conf` 出现异常行为。此时建议执行以下操作: 1. 安装 `resolvconf` 工具包(如果没有预装的话): ```bash sudo apt update && sudo apt install resolvconf ``` 2. 同步现有 DNS 配置到实际使用的 `/etc/resolv.conf` 中: ```bash sudo service resolvconf start ``` 这种方法特别适合于那些因软件卸载或其他原因造成基础功能不全的情形[^3]。 --- ### 总结 以上四种方案分别针对不同场景提供了修复措施。通常推荐优先采用 **方法一** 和 **方法三** 来处理此类问题,因其更加稳定可靠;而仅在特殊条件下才考虑运用其余两种途径作为补充手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值