在Linux系统中配置DNS可以通过以下几种方法,具体选择取决于你的需求(临时/永久、网络管理工具等)。以下是详细的配置方法:
/etc/resolv.conf
sudo nano /etc/resolv.conf
添加或修改以下内容(示例使用Google DNS):
nameserver 8.8.8.8
nameserver 8.8.4.4
注意:某些系统(如使用systemd-resolved
或NetworkManager
)会覆盖此文件,需结合后续永久配置方法。
resolvectl
(systemd-resolved)sudo resolvectl dns eth0 8.8.8.8 8.8.4.4
bash
nmcli con mod <连接名> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con up <连接名> # 应用更改
编辑YAML配置文件(如/etc/netplan/01-netcfg.yaml
):
yaml
network:
version: 2
ethernets:
eth0:
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
应用配置:
bash
sudo netplan apply
/etc/network/interfaces
(Debian/旧版Ubuntu)plaintext
iface eth0 inet static
dns-nameservers 8.8.8.8 8.8.4.4
重启网络:
bash
sudo systemctl restart networking
编辑/etc/systemd/resolved.conf
:
ini
[Resolve]
DNS=8.8.8.8 8.8.4.4
重启服务:
bash
sudo systemctl restart systemd-resolved
bash
cat /etc/resolv.conf
resolvectl status # systemd-resolved
bash
nslookup example.com
dig example.com
8.8.8.8 1.1.1.1
)。本地DNS缓存:
systemd-resolved
缓存:
bash
sudo systemd-resolve --flush-caches
dnsmasq
或nscd
,需重启相应服务。DHCP分配的DNS:若需覆盖DHCP的DNS,在NetworkManager或Netplan中设置ignore-auto-dns
。
/etc/resolv.conf
被重置:确保通过正确工具(如NetworkManager)配置,或设置文件为不可变:
bash
sudo chattr +i /etc/resolv.conf
ipv4.dns
为ipv6.dns
。根据你的Linux发行版和网络管理工具选择合适的方法即可。