/etc/resolv.conf 的更改在重启后丢失的解决办法

本文解决RedHat5系统重启后重写resolv.conf导致DNS信息丢失的问题,通过修改ifcfg-eth<N>文件中的PEERDNS选项为'no',并添加DNS信息至/etc/resolv.conf文件,确保DNS设置在重启后得以保留。

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

转自http://hi.baidu.com/iamcyh/blog/item/4cfa1c021e9630f208fa9300.html

解决方法:

在 /etc/sysconfig/network-scripts/ifcfg-eth<N> 文件中加入 PEERDNS 选项。<N>可以是 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


<think>我们正在处理一个关于在RK3567设备上修改/etc/resolv.conf文件的问题。根据引用,我们知道修改这个文件通常与DNS设置有关,目的是解决网络连接问题,特别是能够ping通IP地址但无法解析域名的情况。 参考引用[1]、[4]和[5],修改/etc/resolv.conf文件的方法主要有两种: 1. 直接编辑/etc/resolv.conf文件,添加或修改nameserver行,指定DNS服务器地址。 2. 通过创建符号链接,将/etc/resolv.conf链接到systemd-resolved服务管理的文件(如引用[1]所示)。 但是,需要注意的是,在某些系统中(尤其是使用systemd-resolved服务的系统),/etc/resolv.conf可能是一个符号链接,直接编辑可能会被覆盖。因此,我们需要先检查/etc/resolv.conf的属性。 步骤: 1. 首先,查看/etc/resolv.conf是普通文件还是符号链接。 使用命令:`ls -l /etc/resolv.conf` 2. 根据情况处理: a) 如果是普通文件,可以直接编辑(注意权限)。 b) 如果是符号链接,则可能需要修改源文件或者改变链接目标(如引用[1]的方法)。 引用[1]中提到了创建符号链接指向systemd-resolved服务的文件: sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf 引用[4]和[5]中则是直接修改/etc/resolv.conf文件的内容,添加有效的DNS服务器地址,例如: nameserver 8.8.8.8 但是,引用[4]中提到,即使修改了/etc/resolv.conf,它可能被系统管理(如systemd-resolved)覆盖。因此,如果系统使用systemd-resolved,更推荐的方法是修改systemd-resolved的配置文件,或者按照引用[1]的方法让/etc/resolv.conf链接到systemd-resolved管理的文件,然后在该文件中配置。 然而,在RK3567设备上,我们需要考虑设备运行的具体系统。由于RK3567与引用[3]中的RK3328和引用[4][5]中的RK3568/RK3588类似,都是Rockchip平台,系统可能是基于Linux的,且可能使用systemd(如Ubuntu)或其他init系统。 因此,我们给出两种常见情况的处理: 情况一:系统使用systemd-resolved服务(如Ubuntu) 步骤1:检查systemd-resolved服务是否运行:`systemctl status systemd-resolved` 步骤2:如果正在运行,则按照引用[1]的方法创建符号链接: sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf 步骤3:然后编辑源文件(即/run/systemd/resolve/resolv.conf)或者通过systemd-resolved的配置来设置DNS。但注意,/run目录下的文件是临时文件,重启丢失,所以正确的方法是修改/etc/systemd/resolved.conf文件。 在/etc/systemd/resolved.conf中,设置DNS参数,例如: [Resolve] DNS=8.8.8.8 8.8.4.4 然后重启服务:`sudo systemctl restart systemd-resolved` 情况二:系统不使用systemd-resolved,或者/etc/resolv.conf是普通文件 步骤1:直接编辑/etc/resolv.conf(需要root权限) sudo vi /etc/resolv.conf 步骤2:添加或修改nameserver行,例如: nameserver 8.8.8.8 nameserver 8.8.4.4 注意:如果系统使用DHCP,这个文件可能会被DHCP客户端覆盖。为了防止覆盖,可以修改DHCP客户端的配置(例如,在/etc/dhcp/dhclient.conf中添加supersede domain-name-servers 8.8.8.8, 8.8.4.4;),或者将文件属性设置为不可变(使用chattr命令,但需谨慎)。 另外,引用[5]提到,在设置静态IP时,也可以在网络接口配置文件中指定DNS。例如,在Ubuntu系统中,修改/etc/netplan/下的配置文件;在Debian系统中,修改/etc/network/interfaces文件。 例如,在Ubuntu的netplan配置中,可以在网络接口配置中添加dns服务器: network: version: 2 renderer: networkd ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] 然后应用配置:`sudo netplan apply` 总结:在RK3567设备上修改/etc/resolv.conf文件,需要根据系统具体的网络管理方式选择合适的方法。如果系统使用systemd-resolved,建议通过修改resolved.conf并创建符号链接;如果是静态IP配置,则可以在网络接口配置文件中指定DNS;如果直接修改/etc/resolv.conf,需注意文件属性和可能被覆盖的情况。 操作步骤总结: 1. 确定当前系统如何管理/etc/resolv.conf(是符号链接还是普通文件?是否被systemd-resolved管理?) 2. 根据情况选择上述方法之一进行修改。 3. 修改后,使用`ping www.baidu.com`测试域名解析是否正常。 注意:修改系统文件需要root权限,请谨慎操作。 根据用户的问题,我们只被要求修改/etc/resolv.conf文件,但为了持久化和避免被覆盖,我们建议使用网络接口配置文件或修改systemd-resolved的配置。 由于用户没有提供具体的系统版本,我们给出通用方法。 相关问题: 1. 如何检查RK3567设备上/etc/resolv.conf是符号链接还是普通文件? 2. 在RK3567设备上,如何设置静态IP地址并指定DNS服务器? 3. 如果修改/etc/resolv.conf重启网络服务配置被重置,应该如何解决?</think>### 如何在 RK3567 设备中修改 /etc/resolv.conf 文件 在 RK3567 Linux 设备中修改 `/etc/resolv.conf` 文件(DNS 配置文件)的方法如下,需根据系统管理方式选择操作: --- #### **方法 1:直接编辑文件(适用于临时修改)** 1. **打开终端**,使用 root 权限编辑文件: ```bash sudo vi /etc/resolv.conf ``` *或使用其他编辑器如 `nano`* 2. **修改 DNS 服务器**,添加有效的公共 DNS(如 Google DNS): ```conf nameserver 8.8.8.8 # 主 DNS nameserver 8.8.4.4 # 备用 DNS ``` > 📌 示例:若需国内 DNS,可用 `nameserver 202.96.128.86`(广州电信)[^4][^5] 3. **保存文件**,重启网络服务生效: ```bash sudo systemctl restart systemd-resolved # 若使用 systemd-resolved sudo reboot # 或直接重启设备 ``` --- #### **方法 2:通过 systemd-resolved 管理(推荐持久化配置)** 若系统使用 `systemd-resolved` 服务(常见于 Ubuntu): 1. **修改主配置文件**: ```bash sudo vi /etc/systemd/resolved.conf ``` 取消注释并添加 DNS: ```conf [Resolve] DNS=8.8.8.8 8.8.4.4 # 多个 DNS 用空格分隔 ``` 2. **更新符号链接**(防止文件被覆盖): ```bash sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf # 强制链接[^1] ``` 3. **重启服务**: ```bash sudo systemctl restart systemd-resolved ``` --- #### **方法 3:网络配置文件(静态 IP 场景)** 若设备配置了静态 IP(如通过 Netplan 或 DHCPCD): 1. **编辑网络配置文件**: - **Netplan(Ubuntu)**:修改 `/etc/netplan/*.yaml`,添加 `nameservers` 字段: ```yaml network: ethernets: eth0: addresses: [192.168.1.100/24] nameservers: addresses: [8.8.8.8, 8.8.4.4] # 指定 DNS ``` 应用配置:`sudo netplan apply` - **DHCPCD**:修改 `/etc/dhcpcd.conf`: ```conf static domain_name_servers=8.8.8.8 8.8.4.4 ``` --- #### **验证 DNS 是否生效** ```bash ping baidu.com # 测试域名解析 systemd-resolve --status # 检查当前 DNS 配置 cat /etc/resolv.conf # 确认文件内容 ``` > ⚠️ **注意** > - 直接修改 `/etc/resolv.conf` 可能被网络服务覆盖(如 DHCP)。 > - 推荐优先使用 **方法 2** 或 **方法 3** 持久化配置[^1][^4][^5]。 > - RK3567 的 Rockchip SDK 中,网络配置通常位于 `/etc/netplan` 或 `/etc/network/interfaces`[^3]。 --- ### 相关问题 1. **RK3567 设备重启后 `/etc/resolv.conf` 被重置怎么办?** > 需检查是否被 DHCP 或 `systemd-resolved` 覆盖,建议通过 [方法 2](#方法-2通过-systemd-resolved-管理推荐持久化配置) 强制符号链接[^1]。 2. **如何为 RK3567 的 4G 模块(如 ME3630)配置 DNS?** > 在 PPP 拨号脚本中复制预配置的 `resolv.conf`(参考引用[2]的 `cp /home/4g/resolv.conf /etc`)。 3. **RK3567 开发板域名解析失败,但 IP 可通,如何排查?** > 检查: > - `/etc/resolv.conf` 是否包含有效 DNS > - 防火墙是否拦截 DNS 端口(UDP 53) > - 使用 `nslookup baidu.com` 测试解析[^4][^5]。 4. **如何永久禁用 RK3567 上对 `/etc/resolv.conf` 的自动修改?** > 禁用相关服务: > ```bash > sudo systemctl stop systemd-resolved > sudo systemctl disable systemd-resolved > sudo chattr +i /etc/resolv.conf # 锁定文件(谨慎使用) > ``` [^1]: 通过符号链接指向 `systemd-resolved` 管理的 DNS 文件 [^2]: 4G 模块拨号脚本中预置 DNS 配置文件 [^3]: Rockchip 开发板的网络配置路径 [^4]: 修改 DNS 解决浏览器无法联网问题 [^5]: 静态 IP 场景下 DNS 问题的临时解决方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值