Linux服务器中,可通过修改`/etc/resolv.
Linux服务器上更改DNS配置是一个相对简单但重要的任务,它可以帮助改善网络访问速度、提高安全性或解决特定的网络问题,以下是详细的步骤和相关说明:
准备工作
- 备份重要数据:在进行任何系统配置更改之前,建议备份服务器上的重要数据,以防万一出现意外情况导致数据丢失。
- 确认当前DNS设置:可以通过
cat /etc/resolv.conf
命令查看当前服务器的DNS配置信息,记录下当前的DNS服务器地址,以便在需要时可以恢复。 - 选择合适的DNS服务器:根据自己的需求选择一个可靠的DNS服务器,常见的公共DNS服务器有:
- Google DNS:
8.8.8
(首选)、8.4.4
(备用) - Cloudflare DNS:
1.1.1
(首选)、0.0.1
(备用) - OpenDNS:
67.222.222
(首选)、67.220.220
(备用)
- Google DNS:
修改DNS配置文件
- 使用文本编辑器打开resolv.conf文件
- 以root用户或使用sudo权限登录到Linux服务器。
- 使用喜欢的文本编辑器(如vi、nano等)打开
/etc/resolv.conf
文件,使用vi编辑器的命令如下:sudo vi /etc/resolv.conf
- 编辑DNS服务器地址
- 在打开的文件中,找到以
nameserver
开头的行,这些行指定了当前配置的DNS服务器地址。 - 将原有的DNS服务器地址修改为你想要使用的新的DNS服务器地址,如果要使用多个DNS服务器,可以添加多个
nameserver
行,每个行包含一个DNS服务器的IP地址,将DNS服务器设置为Google DNS,修改后的文件内容可能如下:nameserver 8.8.8.8 nameserver 8.8.4.4
- 在打开的文件中,找到以
- 保存并退出文件
- 在vi编辑器中,按下
Esc
键退出编辑模式,然后输入:wq
保存并退出文件。 - 在nano编辑器中,按下
Ctrl + X
键,然后按下Y
键保存并退出文件。
- 在vi编辑器中,按下
重启网络服务
- 根据Linux发行版选择重启命令
- Ubuntu/Debian:
sudo systemctl restart networking
- CentOS/RHEL:
sudo systemctl restart network
- Fedora:
sudo systemctl restart NetworkManager
- Ubuntu/Debian:
- 确认网络服务重启成功:检查命令执行后是否有错误提示,确保网络服务已成功重启。
验证DNS设置
- 查看DNS配置是否生效:再次使用
cat /etc/resolv.conf
命令查看DNS配置文件内容,确认修改后的DNS服务器地址已正确保存。 - 测试域名解析:使用
ping
命令测试一个域名的解析是否正常,测试www.baidu.com
的解析:ping www.baidu.com
如果能够正常获取到百度网站的IP地址,并且没有出现DNS解析错误的提示,说明DNS设置已成功生效。
注意事项
- 持久化配置:在某些情况下,直接修改
/etc/resolv.conf
文件可能不会持久生效,如果服务器使用了NetworkManager或systemdresolved等网络管理工具,它们可能会在系统重启或网络服务重启时覆盖手动修改的配置,需要通过相应的网络管理工具来配置DNS,以确保设置的持久性。- 使用NetworkManager配置DNS:可以通过
nmcli
命令来配置DNS,要将名为eth0
的网络连接的DNS服务器设置为8.8.8
和8.4.4
,可以使用以下命令:sudo nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4"
然后重启网络服务或系统使设置生效。
- 使用systemdresolved配置DNS:对于使用systemdresolved服务的系统,可以编辑
/etc/systemd/resolved.conf
文件来设置DNS,在文件中添加或修改[Resolve]
部分下的DNS
选项,[Resolve] DNS=8.8.8.8 8.8.4.4
保存文件后,使用以下命令重启systemdresolved服务:
sudo systemctl restart systemdresolved
- 使用NetworkManager配置DNS:可以通过
- DNS缓存清理:在更改DNS服务器后,可能需要清理本地DNS缓存,以确保新的DNS设置能够立即生效,可以使用以下命令清理DNS缓存:
sudo systemdresolve flushcaches
- 防火墙设置:确保服务器的防火墙允许DNS流量(通常为UDP协议的53端口)通过,否则可能会导致DNS解析失败。
Linux发行版 | 重启网络服务命令 | 适用场景 |
---|---|---|
Ubuntu/Debian | sudo systemctl restart networking |
基于Debian系的Linux发行版,如Ubuntu、Debian等 |
CentOS/RHEL | sudo systemctl restart network |
基于Red Hat系的Linux发行版,如CentOS、RHEL等 |
Fedora | sudo systemctl restart NetworkManager |
Fedora发行版,使用NetworkManager管理网络 |
网络管理工具 | 配置DNS命令示例 | 说明 |
---|---|---|
NetworkManager | sudo nmcli con mod eth0 ipv4.dns "8.8.8.8 8.8.4.4" |
通过nmcli命令配置NetworkManager管理的网络连接的DNS |
systemdresolved | 编辑/etc/systemd/resolved.conf 文件,添加[Resolve] DNS=8.8.8.8 8.8.4.4 ,然后重启服务 |
适用于使用systemdresolved服务的系统,通过配置文件设置DNS |
相关问题与解答
- 问题:为什么修改了
/etc/resolv.conf
文件后,DNS设置没有生效?- 解答:可能是因为服务器使用了网络管理工具(如NetworkManager或systemdresolved),它们在系统重启或网络服务重启时会覆盖手动修改的配置,此时需要通过相应的网络管理工具来配置DNS,或者检查网络管理工具的配置是否正确,还需要确保网络服务已成功重启,并且防火墙允许DNS流量通过。
- 问题:如何选择合适的DNS服务器?
- 解答:选择DNS服务器时,可以考虑以下几个因素:
- 速度:选择距离自己服务器地理位置较近的DNS服务器,或者使用性能较好的公共DNS服务器,可以提高域名解析的速度。
- 可靠性:选择具有高可用性和稳定性的DNS服务器,以确保网络访问的稳定性,公共DNS服务器通常具有较高的可靠性。
- 安全性:一些DNS服务器提供了额外的安全功能,如DNSSEC支持、阻止恶意域名解析等,可以根据自己的需求选择具有相应安全功能的DNS服务器。
- 隐私保护:如果对隐私比较关注,可以选择一些注重用户隐私保护的DNS服务器,
- 解答:选择DNS服务器时,可以考虑以下几个因素: