Linux网络设备DNS添加
DNS
DNS(Domain Name System,域名系统)是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不需要记住能够被机器直接读取的IP数串,在Linux系统中,正确配置DNS对于网络连接和应用程序的正常运行至关重要。
常见DNS服务器
DNS服务器 | IP地址 | 特点 |
---|---|---|
Google Public DNS | 8.8.8、8.8.4.4 | 性能稳定,全球广泛使用,解析速度较快 |
OpenDNS | 67.222.222、208.67.220.220 | 提供安全过滤等功能,可定制性较强 |
阿里Public DNS | 5.5.5、223.6.6.6 | 国内访问速度快,稳定性高 |
114 DNS | 114.114.114、114.114.115.115 | 国内常用,解析准确,响应速度快 |
添加DNS的方法
(一)修改/etc/resolv.conf文件
-
步骤
- 打开终端,使用root权限登录(可以使用
sudo su
命令切换到root用户)。 - 使用文本编辑器(如
vi
、nano
等)打开/etc/resolv.conf
文件,vi /etc/resolv.conf
。 - 在文件中添加或修改
nameserver
行,每行指定一个DNS服务器的IP地址,nameserver 8.8.8.8 nameserver 8.8.4.4
- 保存文件并退出编辑器(在
vi
中,按下Esc
键,输入:wq
并回车保存并退出)。 - 重启网络服务使配置生效,可以使用以下命令之一:
sudo systemctl restart NetworkManager
(适用于使用NetworkManager的系统)sudo service networking restart
(适用于一些传统的网络服务管理方式)
- 打开终端,使用root权限登录(可以使用
-
注意事项
这种方法配置的DNS是临时生效的,系统重启或网络服务重启后,配置可能会被覆盖,如果需要永久保存配置,需要结合其他方法,如编辑网络接口配置文件或使用网络管理工具进行配置。
(二)使用nmcli命令(适用于使用NetworkManager的Linux发行版)
-
步骤
- 打开终端,使用root权限登录。
- 执行以下命令查看当前网络连接的名称:
nmcli connection show
。 - 假设网络连接名称为
eth0
,执行以下命令编辑选定的网络连接的DNS设置:nmcli connection modify eth0 +ipv4.dns 8.8.8.8 8.8.4.4
(将8.8.8
和8.4.4
替换为所需的DNS服务器地址)。 - 退出终端,配置即可生效。
-
注意事项
- 确保系统已经安装了NetworkManager,并且网络连接是通过NetworkManager管理的,如果不确定,可以先检查NetworkManager服务是否正在运行(使用
systemctl status NetworkManager
命令)。
- 确保系统已经安装了NetworkManager,并且网络连接是通过NetworkManager管理的,如果不确定,可以先检查NetworkManager服务是否正在运行(使用
(三)使用systemd resolved服务(适用于使用systemd resolved服务的Linux发行版)
-
步骤
- 打开终端,使用root权限登录。
- 执行以下命令编辑
resolved.conf
文件:vi /etc/systemd/resolved.conf
。 - 找到
DNS=
这一行,并在其后添加DNS服务器地址,DNS=8.8.8.8 8.8.4.4
,如果没有这一行,可以自行添加。 - 保存文件并退出编辑器。
- 重启systemd resolved服务,命令如下:
systemctl restart systemd resolved
。
-
注意事项
- 部分系统可能默认未启用systemd resolved服务,需要先启用该服务(使用
sudo systemctl enable systemd resolved
命令),然后再进行上述配置操作。
- 部分系统可能默认未启用systemd resolved服务,需要先启用该服务(使用
验证DNS配置是否成功
配置完成后,可以使用以下命令验证DNS配置是否生效:
(一)使用nslookup命令
在终端中输入nslookup [域名]
,例如nslookup www.baidu.com
,如果能够正确解析出对应的IP地址,说明DNS配置成功。
(二)使用dig命令
在终端中输入dig [域名]
,例如dig www.google.com
,该命令会显示详细的DNS查询信息,包括查询到的IP地址等,如果能够正常显示相关信息,说明DNS配置正确。
相关问题与解答
(一)问题1:为什么修改了/etc/resolv.conf文件后,DNS配置没有生效?
解答:可能有以下原因导致这种情况:
- 网络服务未重启:修改
/etc/resolv.conf
文件后,需要重启网络服务(如sudo systemctl restart NetworkManager
或sudo service networking restart
)才能使配置生效,如果没有重启网络服务,新的DNS配置可能不会立即被系统识别。 - 其他网络管理工具的干扰:某些Linux发行版可能使用了其他的网络管理工具(如NetworkManager、systemd resolved等),这些工具可能会自动覆盖
/etc/resolv.conf
文件中的配置,在这种情况下,需要使用相应的网络管理工具来配置DNS,而不是仅仅修改/etc/resolv.conf
文件,如果系统使用了NetworkManager,应该使用nmcli
命令来配置DNS;如果使用了systemd resolved服务,应该编辑/etc/systemd/resolved.conf
文件并进行相关操作。 - 文件权限问题:确保当前用户具有修改
/etc/resolv.conf
文件的权限,如果没有权限,可能无法成功保存对文件的修改,可以使用sudo
命令获取root权限来进行操作。 - DNS服务器故障:所配置的DNS服务器本身可能出现故障,导致无法正常解析域名,可以尝试更换其他可靠的DNS服务器地址,如Google Public DNS(8.8.8.8、8.8.4.4)或阿里Public DNS(223.5.5.5、223.6.6.6)等,再次进行测试。
(二)问题2:如何永久保存DNS配置,避免每次重启系统后都需要重新配置?
解答:要根据不同的Linux发行版和网络管理方式来采取相应的措施,以下是几种常见的方法:
-
对于基于Debian/Ubuntu系统且使用Netplan的情况
- Netplan配置文件通常位于
/etc/netplan
目录下,文件名一般以.yaml
例如01 netcfg.yaml
。 - 使用文本编辑器打开对应的配置文件,找到网络接口配置部分,添加或修改
nameservers
字段来指定DNS服务器地址,network: version: 2 ethernets: eth0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
- 保存文件后,使用
netplan apply
命令应用新的网络配置,这样配置的DNS会在系统重启后依然生效。
- Netplan配置文件通常位于
-
对于CentOS/RHEL系统且使用NetworkManager的情况
- 可以使用
nmcli
命令来永久配置DNS,要配置名为eth0
的网络连接的DNS服务器,可以执行以下命令:nmcli connection modify eth0 +ipv4.dns 8.8.8.8 8.8.4.4
- 然后使用
nmcli connection up eth0
命令重新加载网络连接,使配置生效,这种通过NetworkManager配置的DNS会在系统重启后自动保留。 - 也可以编辑NetworkManager的配置文件来永久设置DNS,配置文件通常位于
/etc/sysconfig/network scripts/ifcfg eth0
(其中eth0
是网络接口名称),在该文件中添加以下行来指定DNS服务器地址:DNS1=8.8.8.8 DNS2=8.8.4.4
- 修改完成后,重启网络服务(
sudo systemctl restart network
)以应用新的配置。
- 可以使用
-
对于使用systemd resolved服务的系统
- 按照前面提到的方法编辑
/etc/systemd/resolved.conf
文件,添加或修改DNS=
行来指定DNS服务器地址。 - 然后重启systemd resolved服务(
systemctl restart systemd resolved
)。 - 为了确保在系统启动时自动加载该配置,还需要启用systemd resolved服务(如果尚未启用),使用命令
sudo systemctl enable systemd resolved
,这样配置的DNS会在
- 按照前面提到的方法编辑