linux /etc/resolv.conf 改完dns 怎么保证重启仍然生效
时间: 2023-02-08 22:43:27 浏览: 509
在 Linux 系统中,可以使用 `resolvconf` 工具来管理 `/etc/resolv.conf` 文件。这个工具会在系统重启后自动重新配置 DNS。
另外一种方法是直接修改`/etc/network/interfaces` 文件,在里面加上 dns-nameservers x.x.x.x 便可
你可以通过运行 `sudo resolvconf -u` 来更新 DNS 配置,使之生效。
此外,也可以在`/etc/network/interfaces` 中配置,如下
```
# The primary network interface
auto enp0s3
iface enp0s3 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
```
如果你是通过修改 /etc/resolv.conf 文件来修改 DNS 配置的,请确保这个文件的权限设置正确。
相关问题
/etc/resolv.conf 修改后重启无效
如果你修改了 `/etc/resolv.conf` 文件但重启后仍然无效,可能是因为你的系统使用了 NetworkManager 服务来管理网络配置。NetworkManager 可能会覆盖 `/etc/resolv.conf` 文件中的设置。
要让修改生效,可以尝试以下方法:
1. 使用 NetworkManager 命令行工具 nmcli 修改 DNS 配置。例如,运行以下命令将 DNS 服务器设置为 8.8.8.8:
```
nmcli con mod <connection_name> ipv4.dns "8.8.8.8"
```
其中 `<connection_name>` 是你要修改的连接的名称。
2. 将 `/etc/resolv.conf` 文件设置为只读,以防止 NetworkManager 覆盖该文件。运行以下命令:
```
sudo chattr +i /etc/resolv.conf
```
这会将 `/etc/resolv.conf` 文件设置为只读,并且只有当你使用 `sudo chattr -i /etc/resolv.conf` 命令取消只读属性后才能修改该文件。
3. 禁用 NetworkManager 服务并使用传统的网络配置方法。这种方法可能需要更多的配置和管理工作,但可以确保你的 DNS 设置不会被覆盖。
你可以通过运行以下命令禁用 NetworkManager:
```
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
```
然后,你可以使用 `/etc/network/interfaces` 文件来配置网络接口和 DNS 设置。例如,你可以添加以下行以设置 DNS 服务器:
```
dns-nameservers 8.8.8.8
```
然后,重启网络服务以使更改生效:
```
sudo systemctl restart networking
```
嵌入式/etc/resolv.conf修改不生效
嵌入式系统的`/etc/resolv.conf`文件通常用于配置DNS解析器,当你修改这个文件的内容后,如果没有重启网络服务或者手动刷新DNS缓存,那么可能会导致修改不立即生效。以下是可能导致这种情况的一些原因和解决方法:
1. 缓存未清空:修改了配置文件后,系统可能会有DNS缓存,需要通过命令行工具如`sudo killall -HUP dnsmasq`(如果使用dnsmasq)或`sudo service networking restart`来强制更新DNS缓存。
2. 系统读取时机:有些系统会在启动时一次性加载resolv.conf配置,之后就不再自动重新读取。在这种情况下,你需要重启设备或网络服务才能让新的配置生效。
3. 安全限制:在某些受限环境中,比如容器或者沙箱,可能不允许直接修改主配置文件。这时可以尝试创建一个临时文件或者在运行时动态设置环境变量。
4. 文件权限问题:确认`/etc/resolv.conf`的权限是否允许普通用户修改。如果是root权限管理,试着切换到相应用户并修改。
如果你遇到这类问题,可以按照上述步骤逐一排查,并检查是否有其他服务或设置阻止了配置文件的更新。
阅读全文