在 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 的解决方案,但只能以破坏其他一切为代价。
我怎样才能做到这一点?
以下是自 18.04 以来 ubuntu 的步骤。它有点长,因为在配置时
systemd-resolved
不能很好地使用.NetworkManager
dnsmasq
但我仍然建议从 开始
dnsmasq
,NetworkManager
因为网络连接更改(WIFI、有线等)将被透明地处理。在 NetworkManager 中启用 dnsmasq
编辑文件
/etc/NetworkManager/NetworkManager.conf
,并将该行添加dns=dnsmasq
到该[main]
部分,它将如下所示:让 NetworkManager 管理
/etc/resolv.conf
配置
example.com
重新加载
NetworkManager
和测试应重新加载 NetworkManager 以使更改生效。
然后我们可以验证我们是否可以访问一些常用站点:
最后验证
example.com
和子域被解析为127.0.0.1
:首先确保
/etc/NetworkManager/NetworkManager.conf
以下行不存在或被注释掉:重启网络管理器:
通过终止进程或重新启动系统,确保 NetworkManager 控制的 dnsmasq 不再运行。
然后安装 dnsmasq:
将以下内容添加到
/etc/dnsmasq.d/example.com
:重启 dnsmasq:
现在您应该有一个用于 example.com 的通配符 dns 覆盖。
这不会像编辑 hosts 文件那么简单。你有几个选择:
这个 python DNS 代理将处理 /etc/hosts 中的通配符
使用 DNSmasq
根据pim 的回答,我创建了一个包含一个简单 Bash 脚本的要点,该脚本使用 DNSMasq 和 NetworkManager 来设置指向 127.0.0.1 的 .test 域
请参阅https://gist.github.com/archan937/d35deef3b1f2b5522dd4b8f397038d27上的要点。
您可以使用以下命令执行脚本:
干杯!