/etc/resolv.conf
文件设置DNS,添加如`nameserver 8.Linux 设置当前主机的 DNS
在 Linux 系统中,DNS(Domain Name System)起着将域名解析为 IP 地址的关键作用,正确配置 DNS 对于网络连接和访问互联网资源至关重要,以下是关于在 Linux 中设置当前主机 DNS 的详细内容。
DNS 的作用
DNS 就像是一个电话簿,它将人类易于记忆的域名(如 www.example.com)转换为计算机能够理解的 IP 地址(如 192.0.2.1),当用户在浏览器中输入域名时,系统会通过 DNS 查询获取对应的 IP 地址,然后才能与目标服务器建立连接。
查看当前 DNS 配置
在设置新的 DNS 之前,我们可以先查看当前主机的 DNS 配置情况。
使用 nmcli
命令(适用于 NetworkManager 管理的网络)
nmcli dev show | grep DNS
该命令会显示当前网络接口的 DNS 服务器信息。
查看 /etc/resolv.conf
文件
cat /etc/resolv.conf ```通常如下: | 字段 | 说明 | | | | | `nameserver` | 后面跟着的是 DNS 服务器的 IP 地址 |
Generated by NetworkManager
nameserver 8.8.8.8 nameserver 8.8.4.4
## 三、设置 DNS 的方法
### (一)通过 NetworkManager 图形界面设置(适用于桌面环境)
1. 打开网络连接设置,在不同的 Linux 发行版中,入口位置可能略有不同,可以通过系统设置或控制面板找到网络设置选项。
2. 找到当前使用的网络连接,点击进入设置页面。
3. 在 IPv4 设置或网络配置选项卡中,找到 DNS 服务器设置区域。
4. 添加或修改 DNS 服务器地址,可以输入公共 DNS 服务器(如谷歌的 8.8.8.8 和 8.8.4.4,或者国内的 114.114.114.114 等),也可以输入企业内部专用的 DNS 服务器地址。
5. 保存设置并应用,NetworkManager 会自动更新 `/etc/resolv.conf` 文件。
### (二)通过命令行修改 `/etc/resolv.conf` 文件
直接编辑 `/etc/resolv.conf` 文件是一种快速设置 DNS 的方法,但这种修改可能在网络重启或某些情况下被覆盖。
1. 使用文本编辑器(如 `vi`、`nano` 等)打开 `/etc/resolv.conf` 文件,使用 `vi` 编辑器:
```bash
sudo vi /etc/resolv.conf
- 在文件中添加或修改
nameserver
行,指定你想要使用的 DNS 服务器 IP 地址。nameserver 114.114.114.114 nameserver 8.8.8.8
- 保存文件并退出编辑器。
(三)通过 NetworkManager 配置文件设置(长期有效)
这种方法可以确保在网络重启后 DNS 设置依然有效。
- 打开 NetworkManager 的配置文件目录,一般位于
/etc/NetworkManager/systemconnections/
。 - 找到当前网络连接对应的配置文件(文件名通常与网络连接名称相关),如果网络连接名称为
Wired connection 1
,则对应的配置文件为Wired connection 1.nmconnection
。 - 使用文本编辑器打开该配置文件。
- 在
[ipv4]
部分或[ipv6]
部分(根据网络类型),找到或添加dns
配置项,对于 IPv4:[ipv4] method=auto dns=8.8.8.8,8.8.4.4;
- 保存文件并退出编辑器。
- 重新启动 NetworkManager 服务以使配置生效:
sudo systemctl restart NetworkManager
验证 DNS 设置是否生效
可以使用 dig
或 nslookup
命令来验证 DNS 设置是否生效。
使用 dig
命令
dig www.example.com
DNS 设置正确,命令会返回域名解析的结果,包括 IP 地址等信息。
使用 nslookup
命令
nslookup www.example.com
同样,DNS 正常工作,会显示域名解析的详细信息。
常见问题及解决方法
(一)DNS 解析失败
- 原因:
- DNS 服务器地址配置错误。
- 网络连接问题,导致无法访问 DNS 服务器。
- 防火墙阻止了 DNS 请求。
- 解决方法:
- 检查 DNS 服务器地址是否正确配置。
- 确保网络连接正常,可以尝试ping其他网络地址。
- 检查防火墙设置,允许 DNS 请求通过。
(二)DNS 缓存问题
- 原因:
系统可能会缓存 DNS 解析结果,导致域名解析到旧的 IP 地址。
- 解决方法:
- 可以清除 DNS 缓存,不同的 Linux 发行版清除缓存的方法可能不同,在 Ubuntu 系统中,可以使用以下命令:
sudo systemdresolve flushcaches
- 可以清除 DNS 缓存,不同的 Linux 发行版清除缓存的方法可能不同,在 Ubuntu 系统中,可以使用以下命令:
相关问题与解答
如何在 Linux 中设置多个 DNS 服务器?
答:在 Linux 中设置多个 DNS 服务器可以提高域名解析的可靠性和速度,具体方法如下:
- 如果使用
/etc/resolv.conf
文件设置,只需在文件中添加多个nameserver
行,每行指定一个 DNS 服务器的 IP 地址。nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 114.114.114.114
- 如果通过 NetworkManager 配置文件设置,在
dns
配置项中用逗号分隔多个 DNS 服务器地址。[ipv4] method=auto dns=8.8.8.8,8.8.4.4,114.114.114.114;
为什么修改了 /etc/resolv.conf
文件后 DNS 设置没有生效?
答:可能有以下几个原因:
- NetworkManager 或其他网络管理工具可能会自动覆盖
/etc/resolv.conf
文件中的配置,如果是这种情况,需要通过 NetworkManager 的配置文件或其他正确的方法来设置 DNS。 - 修改文件后没有保存成功或者保存的文件权限不正确,导致系统无法读取正确的配置。