了解DNS配置文件相关背景
在Ubuntu系统中,DNS配置文件主要有/etc/resolv.conf
和通过Netplan或NetworkManager管理的相关配置文件。/etc/resolv.conf
文件传统上用于存储DNS服务器信息,但在较新的Ubuntu版本(从18.04开始)中,它由systemdresolved
服务动态生成和管理,直接修改该文件的更改可能在重启后失效。
通过Netplan修改DNS配置(适用于Ubuntu 20.04及以后)
步骤 | 操作详情 |
---|---|
打开终端 | 按下Ctrl + Alt + T 组合键打开终端 |
编辑Netplan配置文件 | 通常位于/etc/netplan/ 目录下,文件名一般为*.yaml ,使用ls 命令列出该目录下的文件确定具体文件名,例如假设文件名为01netcfg.yaml ,使用以下命令编辑:sudo nano /etc/netplan/01netcfg.yaml |
修改DNS设置 | 在文件中查找network 部分下的ethernets (或有线网络接口名称,如enp0s3 等),在对应的配置块中添加或修改nameservers 字段,指定DNS服务器的IP地址,例如将DNS服务器设置为Google的公共DNS服务器(8.8.8.8和8.8.4.4):yaml<br>network:<br> version: 2<br> ethernets:<br> eth0:<br> dhcp4: yes<br> nameservers:<br> addresses: [8.8.8.8, 8.8.4.4]<br> |
保存并退出编辑器 | 按Ctrl + O 保存文件,按Ctrl + X 退出nano编辑器 |
应用更改 | 运行命令sudo netplan apply 使配置生效 |
通过NetworkManager修改DNS配置(适用于有图形界面且安装NetworkManager的情况)
(一)使用图形界面
- 点击屏幕右上角的网络图标,然后选择“设置”或“Network Settings”。
- 在左侧面板中选择要修改DNS设置的网络接口(如有线连接或无线连接)。
- 选择“IPv4”标签,找到“DNS”部分,将DNS设置从“自动”改为“手动”,然后输入新的DNS服务器地址,例如输入8.8.8.8和8.8.4.4。
- 点击“应用”按钮保存更改。
(二)使用命令行工具nmcli
- 查看网络连接名称:运行命令
nmcli connection show
,找到你想要修改DNS设置的网络连接名称,Wired connection 1”。 - 修改DNS设置:运行以下命令,将DNS服务器设置为8.8.8.8和114.114.114.114,并重新连接网络:
nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8,114.114.114.114" nmcli con down "Wired connection 1"; nmcli con up "Wired connection 1"
修改/etc/systemd/resolved.conf
文件(全局静态DNS解析器设置)
步骤 | 操作详情 |
---|---|
打开终端 | 按下Ctrl + Alt + T 组合键打开终端 |
编辑resolved.conf 文件 |
使用以下命令编辑文件:sudo nano /etc/systemd/resolved.conf |
修改DNS设置 | 在[Resolve] 节下添加或修改以下内容以指明首选和备用DNS服务器地址(这里以8.8.8.8和114.114.114.114为例):ini<br>[Resolve]<br>DNS=8.8.8.8 114.114.114.114<br>FallbackDNS=<br>Domains=~.<br> |
保存并退出编辑器 | 按Ctrl + O 保存文件,按Ctrl + X 退出nano编辑器 |
刷新解析服务缓存并激活新参数 | 运行以下命令:sudo systemctl restart systemdresolved.service<br>sudo ln sf /run/systemd/resolve/stubresolv.conf /etc/resolv.conf |
验证DNS设置是否生效
无论使用哪种方法修改DNS设置,都可以使用以下命令进行验证:
- 查看
/etc/resolv.conf
:运行命令cat /etc/resolv.conf
,检查文件中显示的DNS服务器地址是否与你设置的一致。 - 使用
nslookup
或dig
命令测试域名解析:例如运行nslookup example.com
,如果返回了与所配置的DNS服务器相关的IP地址,则说明DNS设置已生效。
相关问题与解答
问题1:修改DNS设置后,网络连接出现问题怎么办?
解答:首先检查DNS服务器地址是否正确且可访问,你可以尝试使用其他已知可用的DNS服务器地址进行替换,如Google的公共DNS(8.8.8.8和8.8.4.4)或国内的公共DNS(如114.114.114.114),如果问题仍然存在,可能是网络配置的其他部分出现问题,可以检查网络接口的配置、网关设置等,确保防火墙没有阻止DNS相关的流量(UDP端口53)。
问题2:如何在不重启系统的情况下使DNS设置更改立即生效?
解答:如果是通过Netplan修改的DNS设置,运行sudo netplan apply
命令即可应用更改,如果是通过修改/etc/systemd/resolved.conf
文件修改的DNS设置,运行sudo systemctl restart systemdresolved.service
和sudo ln sf /run/systemd/resolve/stubresolv.conf /etc/resolv.conf
命令来刷新解析服务缓存并激活新参数,使更改立即生效,如果是通过NetworkManager的命令行工具nmcli修改的DNS设置,在修改完成后已经重新连接了网络,此时DNS设置应该已经生效。