Ubuntu 22.04 NetworkManager 自带 dnsmasq 但默认没有启用,在 /etc/NetworkManager/NetworkManager.conf
中添加 dns=dnsmasq
即可:
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
然后根据需要添加 dnsmasq 配置到 /etc/NetworkManager/dnsmasq.d/dnsmasq.conf
,如:
server=/github.com/8.8.8.8
server=/cn/114.114.114.114
address=/google.com/0.0.0.0
Ubuntu 22.04 默认使用 systemd-resolved 管理 dns,因此需要先禁用它然后重启 NetworkManager
sudo systemctl stop systemd-resolved.service
sudo systemctl disable systemd-resolved.service
sudo systemctl restart NetworkManager.service
dnsmasq 默认绑定到 127.0.1.1:53
,通过 netstat
指令可查看:
x@x:~$ sudo netstat -antp | grep dnsmasq
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1289/dnsmasq
修改 /etc/resolv.conf
使用 dnsmasq 作为 dns 服务
sudo su
echo "nameserver 127.0.1.1" >/etc/resolv.conf