是的,你可以在 /etc/resolv.conf 文件中修改 DNS 服务器。该文件用于配置 Linux 系统使用的 DNS 解析服务器。通过编辑该文件,你可以手动指定 DNS 服务器(例如 Google 的 8.8.8.8 或 Cloudflare 的 1.1.1.1 等)。
[!Warning] 最好使用的是 dhcpcd 服务,这个最容易修改,就在
/etc/dhcpcd.conf中修改就行
如何修改 /etc/resolv.conf 文件来更改 DNS 服务器
-
编辑
/etc/resolv.conf文件使用文本编辑器(例如
nano、vim或gedit)编辑/etc/resolv.conf文件:sudo nano /etc/resolv.conf -
修改 DNS 服务器
在文件中,你可以添加或修改
nameserver行来指定 DNS 服务器。例如:nameserver 8.8.8.8 # Google Public DNS nameserver 8.8.4.4 # Google Public DNS (备用) nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844或者,你可以使用其他 DNS 服务提供商的 IP 地址,例如:
nameserver 1.1.1.1 # Cloudflare DNS nameserver 1.0.0.1 # Cloudflare DNS (备用)保存文件并退出编辑器。
-
检查 DNS 设置
编辑完成后,可以使用以下命令检查 DNS 配置是否生效:
cat /etc/resolv.conf你应该看到你添加的 DNS 服务器 IP 地址。
注意事项
-
网络管理工具的干扰 在某些系统中,
/etc/resolv.conf文件可能会被网络管理工具(如NetworkManager、systemd-resolved或dhclient)覆盖或自动生成。如果你手动修改了该文件,但网络管理工具恢复了默认的 DNS 设置,修改将会被覆盖。 -
禁用自动生成的
/etc/resolv.conf如果你希望手动管理 DNS 配置并防止它被覆盖,你可以采取以下方法:-
禁用
systemd-resolved(如果在使用systemd):如果你的系统使用
systemd-resolved管理 DNS 配置,可以禁用它,然后手动修改/etc/resolv.conf。sudo systemctl disable systemd-resolved.service sudo systemctl stop systemd-resolved.service sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf -
修改
NetworkManager设置:如果你使用的是
NetworkManager,可以通过修改其配置文件来防止它覆盖/etc/resolv.conf。编辑/etc/NetworkManager/NetworkManager.conf并添加以下行:[main] dns=none然后重新启动
NetworkManager服务:sudo systemctl reload NetworkManager
-
然后要重新编辑 resolv.conf 文件
然后再继续执行
sudo systemctl reload NetworkManager
- 通过 DHCP 自动获取 DNS 如果你的网络通过 DHCP 自动获取 IP 配置,DHCP 服务器也可能会向
/etc/resolv.conf写入 DNS 配置。你可以禁用 DHCP 配置 DNS 设置来防止这种情况,具体方法依赖于你的网络管理工具。
使用的是 dhcpcd
编辑 /etc/dhcpcd. conf 的, 找到/添加: static domain_name_server=.....
使用的是 systemd-networkd
这个可能就要在 /etc/systemd/network/ 中编辑文件,创建一个文件 ,以. network 结尾例如: 20-wired. network
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=1.1.1.1
总结
你确实可以手动编辑 /etc/resolv.conf 来设置 DNS 服务器,但要注意一些网络管理工具可能会自动覆盖该文件。如果你想持久化更改,可能需要禁用某些自动管理 DNS 的服务或工具。