Ubuntu 设置DNS
时间: 2025-06-14 20:47:18 浏览: 30
### 在 Ubuntu 系统中配置 DNS 的方法
在 Ubuntu 系统中设置 DNS 服务器可以通过修改网络接口配置文件或使用 `systemd-resolved` 服务来实现。以下是具体方法:
#### 方法一:通过修改 `/etc/network/interfaces` 文件配置 DNS
此方法适用于使用传统网络配置的系统(如 Ubuntu 16.04)。
1. 查看当前系统的 DNS 配置信息:
```bash
cat /etc/resolv.conf
```
此文件为动态生成,不建议直接手动编辑[^1]。
2. 编辑网络接口配置文件:
```bash
sudo vi /etc/network/interfaces
```
在文件末尾添加或修改 `dns-nameservers` 行,指定所需的 DNS 服务器地址。例如:
```plaintext
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.x.23.xxx
netmask 255.255.0.0
gateway 10.x.0.x
mtu 1454
dns-nameservers 114.114.114.114 114.114.115.115 223.5.5.5
```
3. 重启网络服务以应用更改:
```bash
sudo ifdown eth0 && sudo ifup eth0
```
4. 验证 DNS 配置是否生效:
```bash
cat /etc/resolv.conf
```
输出应包含新配置的 DNS 地址,例如:
```plaintext
nameserver 114.114.114.114
nameserver 114.114.115.115
nameserver 223.5.5.5
```
#### 方法二:通过 `systemd-resolved` 配置 DNS(适用于 Ubuntu 18.04 及更高版本)
1. 检查当前 DNS 配置:
```bash
systemd-resolve --status
```
2. 编辑 `resolved` 配置文件:
```bash
sudo nano /etc/systemd/resolved.conf
```
找到 `[Resolve]` 部分,取消注释并修改 `DNS=` 参数,指定所需的 DNS 服务器地址。例如:
```plaintext
[Resolve]
DNS=114.114.114.114 114.114.115.115 223.5.5.5
FallbackDNS=
Domains=~.
```
3. 重启 `systemd-resolved` 服务以应用更改:
```bash
sudo systemctl restart systemd-resolved
```
4. 更新 `/etc/resolv.conf` 链接至 `systemd-resolved`:
```bash
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
```
5. 验证 DNS 配置是否生效:
```bash
systemd-resolve --status
```
#### 方法三:通过 Netplan 配置 DNS(适用于 Ubuntu 18.04 及更高版本)
1. 编辑 Netplan 配置文件:
```bash
sudo nano /etc/netplan/01-netcfg.yaml
```
修改文件内容,添加 DNS 配置。例如:
```yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses:
- 10.x.23.xxx/16
gateway4: 10.x.0.x
nameservers:
addresses:
- 114.114.114.114
- 114.114.115.115
- 223.5.5.5
```
2. 应用 Netplan 配置:
```bash
sudo netplan apply
```
3. 验证 DNS 配置是否生效:
```bash
systemd-resolve --status
```
### 注意事项
- 如果使用了 `systemd-resolved`,确保 `/etc/resolv.conf` 是指向 `/run/systemd/resolve/stub-resolv.conf` 的符号链接[^2]。
- 在配置过程中,避免直接编辑 `/etc/resolv.conf`,因为它是动态生成的文件。
```python
# 示例代码:验证 DNS 解析是否正常
import socket
try:
ip = socket.gethostbyname('www.google.com')
print(f"DNS resolved successfully: {ip}")
except Exception as e:
print(f"DNS resolution failed: {e}")
```
阅读全文
相关推荐




















