linux设置dns的命令

在 Linux 中设置 DNS,可修改 /etc/resolv.conf 文件,添加如 nameserver 8.8.8.8 等 DNS 服务器地址。

Linux 设置 DNS 的详细指南

在 Linux 系统中,正确配置域名系统(DNS)对于网络连接和互联网访问至关重要,DNS 负责将域名解析为 IP 地址,使得用户可以通过易于记忆的域名访问网站和服务,本文将详细介绍在 Linux 中设置 DNS 的各种方法、相关命令以及注意事项。

一、DNS 基础知识

在深入了解如何在 Linux 中设置 DNS 之前,有必要先了解一些基本概念:

DNS(Domain Name System):一种分布式数据库,用于将人类可读的域名转换为计算机可识别的 IP 地址。

正向解析:将域名解析为 IP 地址。

反向解析:将 IP 地址解析为域名。

DNS 服务器:提供域名解析服务的服务器,通常由 ISP 或公共 DNS 提供商(如 Google DNS、Cloudflare DNS 等)提供。

二、查看当前 DNS 配置

在修改 DNS 设置之前,首先需要查看当前的 DNS 配置,以确保了解现有的设置。

1. 使用nmcli 命令(适用于使用 NetworkManager 的系统)

nmcli device show | grep i 'ip4.dns'

示例输出:

ip4.dns[1]:                  8.8.8.8
ip4.dns[2]:                  8.8.4.4

2. 查看/etc/resolv.conf 文件

大多数 Linux 发行版通过/etc/resolv.conf 文件来配置 DNS,可以使用以下命令查看内容:

cat /etc/resolv.conf

示例输出:

Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4

>注意:在某些现代发行版中,/etc/resolv.conf 可能由 NetworkManager 或其他网络管理工具动态生成和管理,直接编辑该文件可能会导致更改在重启后失效。

三、设置 DNS 的方法

根据不同的网络管理工具和 Linux 发行版,设置 DNS 的方法可能有所不同,以下是几种常见的方法:

1. 使用 NetworkManager 图形界面

对于使用 NetworkManager 的桌面环境(如 GNOME、KDE),可以通过图形界面轻松设置 DNS:

1、打开“设置”或“网络设置”。

2、选择当前连接的网络(有线或无线)。

3、点击“设置”或“详情”。

4、在“IPv4”或“IPv6”设置中,找到“DNS 服务器”选项。

5、添加或修改 DNS 服务器地址,例如8.8.8.88.8.4.4

6、保存更改并应用。

使用 `nmcli` 命令行工具

对于喜欢使用命令行的用户,可以使用nmcli 工具来设置 DNS:

a. 设置特定连接的 DNS

linux设置dns的命令

假设你要设置名为eth0 的以太网连接的 DNS:

nmcli connection modify eth0 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up eth0

b. 设置所有连接的 DNS

nmcli connection modify * ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up all

>注意:上述命令中的 表示所有连接,请根据实际情况替换。

3. 手动编辑/etc/resolv.conf

虽然不推荐直接编辑/etc/resolv.conf,因为某些系统会自动覆盖该文件,但在某些情况下,这是快速设置 DNS 的方法。

sudo nano /etc/resolv.conf

添加以下内容:

nameserver 8.8.8.8
nameserver 8.8.4.4

保存并退出(在 nano 中按Ctrl + O,然后Ctrl + X)。

>提示:为了使更改持久化,可能需要配置网络管理工具以避免自动覆盖/etc/resolv.conf

4. 配置/etc/sysconfig/networkscripts/ifcfg(适用于基于 Red Hat 的发行版,如 CentOS、Fedora)

编辑对应的网络接口配置文件,例如ifcfgeth0

sudo nano /etc/sysconfig/networkscripts/ifcfgeth0

添加或修改以下行:

DNS1=8.8.8.8
DNS2=8.8.4.4

保存并退出,然后重启网络服务:

sudo systemctl restart network

5. 使用resolvconf 工具(适用于 Debian/Ubuntu 等)

某些发行版使用resolvconf 来管理 DNS 配置,可以编辑/etc/resolvconf/resolv.conf.d/base 或创建自定义文件:

sudo nano /etc/resolvconf/resolv.conf.d/head

添加 DNS 服务器:

nameserver 8.8.8.8
nameserver 8.8.4.4

保存并退出,然后更新 resolvconf:

sudo resolvconf u

四、常用公共 DNS 服务器

以下是一些常用的公共 DNS 服务器,可以根据需求选择:

DNS 提供商 主 DNS 副 DNS
Google DNS 8.8.8.8 8.8.4.4
Cloudflare DNS 1.1.1.1 1.0.0.1
OpenDNS 208.67.222.222 208.67.220.220
Quad9 9.9.9.9 149.112.112.112

五、验证 DNS 配置

linux设置dns的命令

设置完 DNS 后,可以使用以下命令验证配置是否生效:

使用 `nslookup`

nslookup www.google.com

示例输出:

Server:         8.8.8.8
Address:        8.8.8.8#53
Nonauthoritative answer:
www.google.com   canonical name = google.com.
Name:   google.com
Address: 142.250.72.196

使用 `dig`

dig www.google.com

示例输出:

; <<>> DiG 9.11.31ubuntu1.14Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; >>HEADER<<opcode: QUERY, status: NOERROR, id: 54704
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.com.                  IN      A
;; ANSWER SECTION:
www.google.com.           1       IN      CNAME   google.com.
google.com.               1       IN      A       142.250.72.196
;; Query time: 34 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Apr 28 10:10:10 UTC 2023
;; MSG SIZE  rcvd: 100

使用 `ping`

ping c 3 www.google.com

示例输出:

PING www.google.com (142.250.72.196) 56(84) bytes of data.
64 bytes from 142.250.72.196: icmp_seq=1 ttl=117 time=10.5 ms
64 bytes from 142.250.72.196: icmp_seq=2 ttl=117 time=10.3 ms
64 bytes from 142.250.72.196: icmp_seq=3 ttl=117 time=10.2 ms

如果以上命令能够成功解析域名并返回正确的 IP 地址,说明 DNS 配置已正确生效。

六、常见问题与解决方法

DNS 配置未生效

原因:可能是网络管理工具(如 NetworkManager)覆盖了/etc/resolv.conf,或者配置文件语法错误。

解决方法

确保使用正确的方法设置 DNS(参考上述方法)。

检查配置文件语法是否正确。

如果使用 NetworkManager,尝试重启 NetworkManager 服务:

    sudo systemctl restart NetworkManager

无法解析某些域名

原因:可能是 DNS 服务器响应慢或不可用,或者本地网络问题。

解决方法

更换其他公共 DNS 服务器,如从 Google DNS 切换到 Cloudflare DNS。

检查网络连接是否正常。

清除本地 DNS 缓存:

    sudo systemdresolve flushcaches

七、相关问题与解答

问题 1:如何在 Linux 中临时更改 DNS?

解答:可以通过手动编辑/etc/resolv.conf 文件来临时更改 DNS,不过,这种方法在系统重启或网络重新连接后可能会失效,具体步骤如下:

linux设置dns的命令

1、打开终端,使用文本编辑器编辑/etc/resolv.conf

    sudo nano /etc/resolv.conf

2、添加或修改 DNS 服务器地址,

    nameserver 1.1.1.1
    nameserver 1.0.0.1

3、保存并退出编辑器。

4、刷新网络服务或重启网络接口以应用更改:

    sudo systemctl restart NetworkManager

>注意:某些发行版可能会自动覆盖/etc/resolv.conf,因此这种更改可能只是临时的。

问题 2:如何恢复默认的 DNS 设置?

解答:恢复默认的 DNS 设置取决于你使用的网络管理工具和 Linux 发行版,以下是几种常见方法:

a. 使用 NetworkManager 恢复默认设置

1、打开终端,列出所有连接:

    nmcli connection show

2、找到你想要恢复默认设置的连接,然后删除其当前的 DNS 配置:

    nmcli connection modify <connection_name> ipv4.dns ""
    nmcli connection up <connection_name>

<connection_name> 替换为实际的连接名称,如eth0wlan0 等。

b. 恢复/etc/resolv.conf 的默认内容

如果你之前手动编辑过/etc/resolv.conf,可以将其内容恢复为默认状态,默认内容由网络管理工具自动生成,但你可以手动添加常用的公共 DNS:

sudo nano /etc/resolv.conf

添加例如 Google 的公共 DNS:

nameserver 8.8.8.8
nameserver 8.8.4.4

保存并退出,然后重启网络服务:

sudo systemctl restart NetworkManager

c. 重启网络管理服务

有时,简单地重启网络管理服务可以恢复默认设置:

sudo systemctl restart NetworkManager

>提示:在进行任何更改之前,建议备份当前的 DNS 配置,以便在需要时恢复。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/194549.html

Like (0)
小编小编
Previous 2025年4月26日 17:03
Next 2025年4月26日 17:22

相关推荐

发表回复

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