linux设置dns命令

在 Linux 中,可以使用 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、打开终端,使用文本编辑器(如vimnano)以管理员权限编辑/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 连接等),然后点击“编辑”或类似的按钮。

linux设置dns命令

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 相关的参数:

linux设置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 命令是一个功能强大的域名查询工具。

linux设置dns命令

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 文件中自定义的nameserversearchdomain 等指令删除或注释掉,然后重启网络服务(如在 Ubuntu 中使用sudo systemctl restart networking),对于 NetworkManager,可以在图形化界面或命令行中将网络连接的 DNS 设置改回自动获取或使用之前的设置,然后重新连接网络。

(二)为什么我设置的 DNS 服务器没有生效?

可能是配置文件语法错误,例如在/etc/resolv.conf 文件中,nameserversearchdomain 等指令的格式不正确或缺少必要的分号(;),请检查配置文件的语法是否正确。

网络连接问题,如果网络连接本身不稳定或出现故障,可能会导致无法正常访问设置的 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

Like (0)
小编小编
Previous 2025年2月21日 08:42
Next 2025年2月21日 08:46

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注