nmcli
命令来设置 DNS,nmcli dev show | grep DNS
。Linux 设置 DNS 命令详解
在 Linux 系统中,正确设置 DNS(域名系统)服务器对于网络连接和域名解析至关重要,以下是关于如何在 Linux 中设置 DNS 的详细内容,包括不同方法、相关命令以及示例等。
一、通过/etc/resolv.conf
文件设置 DNS
/etc/resolv.conf
是 Linux 系统中用于配置 DNS 解析器的主要配置文件,以下是在该文件中设置 DNS 的相关内容:
(一)配置文件格式
该文件通常包含以下几种主要的指令:
指令 | 说明 |
nameserver |
指定 DNS 服务器的 IP 地址,可以指定多个,按顺序尝试解析域名。nameserver 8.8.8.8 表示将 Google 的公共 DNS 服务器 8.8.8.8 作为首选 DNS 服务器。 |
search |
定义默认的搜索域,当解析不完整的域名时,会附加这些搜索域进行搜索。search example.com ,如果输入hostname 而没有指定域名后缀,系统会在example.com 域内进行搜索。 |
domain |
设置本地默认的域名后缀,与search 类似,但在一些特定情况下起作用。domain localdomain 。 |
(二)修改示例
假设我们想要将系统的 DNS 服务器设置为阿里云的公共 DNS(IP 地址为 223.5.5.5 和 223.6.6.6),并且设置搜索域为mynetwork.com
,同时本地域名后缀为lan
,可以按照以下步骤修改/etc/resolv.conf
文件:
1、打开终端,使用文本编辑器(如vim
或nano
)以管理员权限编辑/etc/resolv.conf
文件,例如使用vim
:
sudo vim /etc/resolv.conf
2、在文件中添加以下内容:
nameserver 223.5.5.5 nameserver 223.6.6.6 search mynetwork.com domain lan
3、保存并关闭文件,对于vim
,按下Esc
键,然后输入:wq
并回车。
(三)注意事项
在某些 Linux 发行版中,/etc/resolv.conf
文件可能会被网络管理工具(如 NetworkManager)自动覆盖,为了避免这种情况,可以通过编辑网络管理工具的配置文件来持久化设置,或者使用特定的方法锁定/etc/resolv.conf
文件(如在一些系统中创建空的/etc/resolv.conf
文件并设置合适的权限)。
二、通过 NetworkManager 设置 DNS(适用于桌面环境)
在许多流行的 Linux 桌面环境中,如 Ubuntu、Fedora 等,NetworkManager 是一个常用的网络管理工具,它提供了图形化界面和命令行工具来配置网络连接,包括 DNS 设置。
(一)图形化界面设置
1、打开网络设置窗口,在 Ubuntu 中,可以通过系统托盘中的网络图标进入;在 Fedora 中,可以通过“设置”>“网络”进入。
2、选择要配置的网络连接(如以太网或有线连接、WiFi 连接等),然后点击“编辑”或类似的按钮。
3、在弹出的连接详情窗口中,切换到“IPv4”或“IPv6”(根据需要配置的协议)选项卡。
4、在“DNS”部分,可以选择“自动(DHCP)”让网络提供商自动分配 DNS 服务器地址,也可以选择“手动”并在下方的输入框中输入自定义的 DNS 服务器地址,每个地址占一行。
8.8.8.8 8.8.4.4
5、完成设置后,点击“保存”或“应用”按钮,使设置生效。
(二)命令行工具设置
使用nmcli
命令行工具可以方便地在命令行中配置 NetworkManager 的网络连接,以下是一些常用的命令示例:
查看所有网络连接:
nmcli connection show
修改指定网络连接(假设连接名称为System eth0
)的 DNS 服务器为 Google 的公共 DNS:
nmcli connection modify "System eth0" ipv4.dns "8.8.8.8 8.8.4.4"
重新加载 NetworkManager 配置以使更改生效:
nmcli device reapply
三、通过dhclient
客户端设置 DNS(适用于通过 DHCP 获取 IP 地址的情况)
Linux 系统是通过 DHCP 协议从网络中获得 IP 地址和其他网络配置信息,可以使用dhclient
客户端的相关设置来影响 DNS 配置。
(一)配置文件及参数
dhclient
的配置文件通常位于/etc/dhcp/dhclient.conf
,其中有一些与 DNS 相关的参数:
参数 | 说明 |
prepend domainnameservers |
在从 DHCP 服务器获取的域名服务器地址之前添加指定的域名服务器地址。prepend domainnameservers 192.168.1.100; |
append domainnameservers |
在从 DHCP 服务器获取的域名服务器地址之后添加指定的域名服务器地址。append domainnameservers 192.168.1.101; |
(二)修改示例
假设我们希望在通过 DHCP 获取的 DNS 服务器地址之前添加一个内部域名服务器192.168.1.100
,可以按照以下步骤修改dhclient.conf
文件:
1、以管理员权限编辑/etc/dhcp/dhclient.conf
文件:
sudo vim /etc/dhcp/dhclient.conf
2、在文件中找到或添加以下内容:
prepend domainnameservers 192.168.1.100;
3、保存并关闭文件。
四、验证 DNS 设置是否生效
完成 DNS 设置后,可以通过以下几种方法来验证设置是否生效:
(一)使用 `nslookup` 命令
nslookup
是一个用于查询域名信息的命令行工具,要查询域名www.example.com
的 IP 地址,可以在终端中输入:
nslookup www.example.com
如果能够正确返回该域名对应的 IP 地址,并且使用的是我们设置的 DNS 服务器进行解析,那么说明 DNS 设置有效,输出结果类似如下:
Server: 8.8.8.8 Address: 8.8.8.8#53 Nonauthoritative answer: Name: www.example.com Address: 93.184.216.34
Server”字段显示的是实际使用的 DNS 服务器地址。
(二)使用 `dig` 命令
dig
命令是一个功能强大的域名查询工具。
dig www.example.com
它会显示更详细的域名解析过程和相关信息,同样可以通过查看其中的“SERVER”字段来确定使用的 DNS 服务器是否为我们设置的服务器,输出结果可能如下:
;; Global options: +cmd ;; Got answer: ;; >>HEADER<<opcode:QUERY, status:NOERROR, id:57979 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.example.com. IN A ;; ANSWER SECTION: www.example.com. 60 IN A 93.184.216.34 ;; MSG SIZE rcvd: 56
这里的“;; ANSWER SECTION”中的 IP 地址就是域名解析的结果,而“;; OPT PSEUDOSECTION”中的“EDNS”字段包含了一些额外的信息,包括可能使用的 DNS 服务器地址(如果有的话)。
相关问题与解答
(一)如何恢复默认的 DNS 设置?
如果在修改 DNS 设置后遇到问题,想要恢复默认设置,可以将/etc/resolv.conf
文件中自定义的nameserver
、search
、domain
等指令删除或注释掉,然后重启网络服务(如在 Ubuntu 中使用sudo systemctl restart networking
),对于 NetworkManager,可以在图形化界面或命令行中将网络连接的 DNS 设置改回自动获取或使用之前的设置,然后重新连接网络。
(二)为什么我设置的 DNS 服务器没有生效?
可能是配置文件语法错误,例如在/etc/resolv.conf
文件中,nameserver
、search
、domain
等指令的格式不正确或缺少必要的分号(;),请检查配置文件的语法是否正确。
网络连接问题,如果网络连接本身不稳定或出现故障,可能会导致无法正常访问设置的 DNS 服务器,可以尝试重新启动网络设备或检查网络线缆连接是否正常。
缓存问题,某些系统可能会缓存之前的域名解析结果,即使修改了 DNS 设置,仍然使用旧的缓存数据进行解析,可以尝试清除系统的 DNS 缓存,在 Linux 中,可以使用以下命令清除缓存(不同的发行版可能有不同的缓存机制和清理方法):
sudo systemdresolve flushcaches # 适用于使用 systemdresolved 的系统 sudo /etc/init.d/nscd restart # 如果使用了 NSCD(Name Service Cache Daemon)进行域名缓存
希望以上内容对你有所帮助!如果你还有其他关于 Linux 设置 DNS 的问题,欢迎继续提问。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/143904.html