/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.8
和8.8.4.4
。
6、保存更改并应用。
使用 `nmcli` 命令行工具
对于喜欢使用命令行的用户,可以使用nmcli
工具来设置 DNS:
a. 设置特定连接的 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 配置
设置完 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,不过,这种方法在系统重启或网络重新连接后可能会失效,具体步骤如下:
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>
替换为实际的连接名称,如eth0
、wlan0
等。
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