untu18配置DNS可修改/etc/systemd/resolved.conf中的DNS项,重启systemdresolved服务
Ubuntu 18系统中配置DNS,有多种方法可供选择,以下为您详细介绍:
通过NetworkManager配置
-
编辑NetworkManager配置文件
- 打开终端,输入命令
sudo nano /etc/NetworkManager/NetworkManager.conf
,打开NetworkManager的配置文件。 - 在文件末尾添加以下内容,以禁用NetworkManager的DNS管理功能:
[main] dns=none
- 保存并关闭文件(按
Ctrl + X
,然后按Y
确认保存,最后按Enter
退出)。
- 打开终端,输入命令
-
重启NetworkManager服务
- 在终端中输入命令
sudo systemctl restart NetworkManager
,使刚才的配置文件修改生效。
- 在终端中输入命令
-
编辑网络连接配置文件
- 假设要修改的是
eth0
网络连接的DNS设置,在终端输入命令sudo nano /etc/NetworkManager/system connections/eth0
,打开对应的网络连接配置文件。 - 找到
[ipv4]
或[ipv6]
部分(具体取决于要更改的DNS类型),在该部分中添加以下行:dns=IP_ADDRESS
IP_ADDRESS
为要设置的DNS服务器的IP地址,若要将DNS设置为8.8.8
,则添加dns=8.8.8.8
。 - 保存并关闭文件。
- 假设要修改的是
-
再次重启NetworkManager服务
- 输入命令
sudo systemctl restart NetworkManager
,使网络连接配置文件中的DNS设置生效。
- 输入命令
通过systemdresolved配置
-
查看当前DNS配置
- 在终端输入命令
systemdresolve status | grep 'DNS Servers' A2
,可查看当前systemdresolved服务中的DNS配置情况。
- 在终端输入命令
-
编辑resolved.conf文件
- 使用命令
sudo nano /etc/systemd/resolved.conf
,打开systemdresolved的配置文件。 - 找到
[Resolve]
部分,取消DNS
行的注释,并添加要使用的DNS服务器IP地址。[Resolve] DNS=114.114.114.114 223.5.5.5
可以根据需要设置多个DNS服务器,用空格分隔。
- 若需要,还可以对其他参数进行配置,如
FallbackDNS
(备用DNS服务器)、Domains
(DNS搜索域)等。 - 保存并关闭文件。
- 使用命令
-
锁定resolved.conf文件(可选)
- 为了防止该文件被意外修改,可以使用命令
chattr +i /etc/systemd/resolved.conf
锁定文件。
- 为了防止该文件被意外修改,可以使用命令
-
重启systemdresolved服务
- 在终端输入命令
sudo systemctl restart systemdresolved
,使DNS配置生效。
- 在终端输入命令
通过resolvconf配置
-
安装resolvconf(若未安装)
- 在终端输入命令
sudo aptget install resolvconf
,安装resolvconf工具。
- 在终端输入命令
-
编辑base或tail文件
- resolvconf的配置文件位于
/etc/resolvconf/resolv.conf.d/
目录下,通常可以修改base
或tail
文件来设置DNS,使用命令sudo nano /etc/resolvconf/resolv.conf.d/base
打开base
文件。 - 在文件中添加要使用的DNS服务器信息,格式如下:
nameserver 8.8.8.8 nameserver 114.114.114.114
可以根据需要添加多个DNS服务器。
- 保存并关闭文件。
- resolvconf的配置文件位于
-
更新resolvconf配置
- 运行命令
sudo resolvconf u
,使配置生效,此命令会将/etc/resolvconf/resolv.conf.d/
目录下的配置下发到/etc/resolv.conf
文件中。
- 运行命令
直接修改/etc/resolv.conf文件(不推荐)
-
编辑/etc/resolv.conf文件
- 在终端输入命令
sudo nano /etc/resolv.conf
,打开该文件。 - 添加或修改nameserver行,设置要使用的DNS服务器IP地址。
nameserver 8.8.8.8 nameserver 114.114.114.114
- 保存并关闭文件。
- 在终端输入命令
-
注意事项
- 此方法不推荐使用,因为
/etc/resolv.conf
文件是由systemdresolved或resolvconf等服务管理的,直接修改该文件可能在系统重启或相关服务重启后被覆盖。
- 此方法不推荐使用,因为
常见问题与解答
问题1:配置DNS后,为什么DNS设置没有生效?
解答:可能的原因有以下几种:
- 配置文件未保存或保存错误,在编辑配置文件时,确保正确保存文件,在使用
nano
编辑器时,按Ctrl + X
,然后按Y
确认保存,最后按Enter
退出。 - 相关服务未重启,修改DNS配置后,需要重启相应的服务,如NetworkManager或systemdresolved,以使配置生效,可以使用命令
sudo systemctl restart NetworkManager
或sudo systemctl restart systemdresolved
来重启服务。 - DNS缓存未清除,有时系统会缓存DNS解析结果,导致新的DNS设置无法立即生效,可以使用命令
sudo systemdresolve flushcaches
来清除DNS缓存。
问题2:如何恢复默认的DNS设置?
解答:恢复默认DNS设置的方法取决于之前配置DNS的方式:
- 如果是通过NetworkManager配置的DNS,可以将网络连接配置文件中的DNS设置删除,然后重启NetworkManager服务,具体操作为:打开对应的网络连接配置文件,如
sudo nano /etc/NetworkManager/system connections/eth0
,找到之前添加的DNS设置行并删除,保存文件后,运行命令sudo systemctl restart NetworkManager
。 - 若是通过systemdresolved配置的DNS,可以将
/etc/systemd/resolved.conf
文件中的DNS设置恢复为默认值或注释掉自定义的DNS设置,然后重启systemdresolved服务,即使用命令sudo nano /etc/systemd/resolved.conf
打开文件,修改或注释DNS相关配置,保存后运行命令sudo systemctl restart systemdresolved
。 - 对于通过resolvconf配置的DNS,可以删除或注释
/etc/resolvconf/resolv.conf.d/
目录下相关文件中的DNS设置,然后运行命令sudo resolvconf u
更新