Nic*_*ice 24 dns dnsmasq 18.04 20.04
在 Ubuntu 14.04 上,我使用 dnsmasq 将通配符 example.com 域解析到本地计算机(家里的台式计算机)。
经过大量阅读后,我终生无法在 18.04 的全新安装中解决相同的问题。
我目前想要达到的目标是:
ping example.com
ping 127.0.0.1 而不是 93.184.216.34;ping anysubdomain.example.com
要同时ping 127.0.0.1;ping google.com
通过路由器/ IP DNS ping真正的google.com。这肯定很简单,甚至是微不足道的?
但我很难过。我可以得到 example.com 的解析,但前提是要破坏其他一切。
我怎样才能做到这一点?
pim*_*pim 48
这是自 18.04 以来 ubuntu 的步骤。这是一个有点长,因为systemd-resolved不发挥得很好NetworkManager时配置dnsmasq。
然而,我还是建议你从dnsmasq从NetworkManager,因为网络连接的变化(WIFI,有线,...)将被透明地处理。
在 NetworkManager 中启用 dnsmasq
编辑文件/etc/NetworkManager/NetworkManager.conf,并将该行添加dns=dnsmasq到该[main]部分,它将如下所示:
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
Run Code Online (Sandbox Code Playgroud)
让网络管理员管理 /etc/resolv.conf
sudo rm /etc/resolv.conf ; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
配置 example.com
echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf
Run Code Online (Sandbox Code Playgroud)
重新加载NetworkManager和测试
应重新加载 NetworkManager 以使更改生效。
sudo systemctl reload NetworkManager
Run Code Online (Sandbox Code Playgroud)
然后我们可以验证我们可以访问一些常用站点:
dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69
Run Code Online (Sandbox Code Playgroud)
最后验证example.com和子域是否解析为127.0.0.1:
dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1
Run Code Online (Sandbox Code Playgroud)