在 Linux 系统中,DNS 配置的解析文件通常是通过 `/etc/resolv.conf` 文件定义的。配置或修改 DNS 后,需要确保配置生效。以下是具体步骤和方法:
---
1. 编辑 DNS 配置文件
DNS 配置主要在 `/etc/resolv.conf` 中设置。例如:
```bash
sudo nano /etc/resolv.conf
```
在文件中添加或修改 DNS 服务器地址:
```
nameserver 8.8.8.8
nameserver 8.8.4.4
```
---
2. 确保文件不被覆盖
某些 Linux 发行版(如 Ubuntu 使用 NetworkManager 或系统使用 DHCP 客户端)会自动覆盖 `/etc/resolv.conf`。可以通过以下方法解决:
- 方法 1:设置静态 DNS 配置
配置 DHCP 客户端或 NetworkManager 的 DNS:
- 如果使用 NetworkManager:
```bash
nmcli connection modify <连接名称> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify <连接名称> ipv4.ignore-auto-dns yes
nmcli connection up <连接名称>
```
- 如果使用 DHCP 客户端:
编辑 `/etc/dhcp/dhclient.conf` 文件,添加:
```
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
```
- 方法 2:锁定 `/etc/resolv.conf` 文件
防止被覆盖:
```bash
sudo chattr +i /etc/resolv.conf
```
如果需要修改,解锁后再编辑:
```bash
sudo chattr -i /etc/resolv.conf
```
---
3. 重启网络服务
修改 DNS 后,通常需要重启网络服务以使配置生效:
- 重启网络服务:
```bash
sudo systemctl restart NetworkManager
```
- 或者重启网络接口:
```bash
sudo ifdown eth0 && sudo ifup eth0
```
替换 `eth0` 为你的网络接口名称(可以用 `ip a` 或 `ifconfig` 查看)。
---
4. 验证 DNS 配置是否生效
- 检查 `/etc/resolv.conf` 是否包含你设置的 DNS 服务器:
```bash
cat /etc/resolv.conf
```
- 测试域名解析:
```bash
nslookup google.com
```
或者:
```bash
dig google.com
```
- 使用 `ping` 命令测试:
```bash
ping google.com
```
---
5. 注意事项
- 如果使用的是某些云服务(如 AWS 或阿里云),它们可能有自己的 DNS 配置方式,请参考官方文档。
- 某些发行版可能默认启用 systemd-resolved 服务。此时可以通过修改 `/etc/systemd/resolved.conf` 配置 DNS,并重启服务:
```bash
sudo systemctl restart systemd-resolved
```
完成以上步骤后,DNS 配置应该能生效。如有其他问题,欢迎进一步咨询!