我已经解决这个问题好几天了,但我不知道我做错了什么。我正在开发一个将使用动态子域的网站,所以我试图让所有以 .test 结尾的域路由到一个 IP 地址(我意识到不仅子域会路由,而且所有 .test 域都会路由,但我在 .test 域下开发了所有网站)。
我一直在尝试设置 dnsmasq 来实现这一点,但似乎无法让它工作。我知道 NetworkManager 运行自己的 dnsmasq 实例。我已在多个地方进行了以下输入,试图让它工作。我尝试的输入是:地址=/.测试/192.168.10.10。
我已在以下位置进行了记录:
- /etc/NetworkManger/dnsmasq.d/hosts.conf
- /etc/NetworkManager/dnsmasq-shared.d/hosts.conf
- /etc/dnsmasq.d/hosts.conf
- /etc/dnsmasq.conf
我首先尝试安装 dnsmasq NetworkManager 目录。安装失败后,我安装了 dnsmasq 并尝试了其他位置,但同样失败。
我尝试重新启动我的网络接口并且多次重新启动了我的计算机。
我不确定我做错了什么。任何帮助我都会很感激。
答案1
我也遇到过同样的问题几天了。下面是我为解决这个问题所做的事情(但我不确定这是否是解决问题的正确方法)。
Ubuntu 默认有一个53
名为 的存根 DNS 服务器(监听端口 ) 。如果不首先禁用存根,systemd-resolved
我就无法工作。我不确定关闭是否可行,但既然它被称为存根 DNS,我想应该没问题()。dnsmasq
systemd-resolved
sudo systemctl disable systemd-resolved.service
然后我对/etc/dnsmasq.conf
:进行了更改,取消注释bind-interfaces
并让 dnsmasq 监听127.0.0.1:53
(listen=127.0.0.1
和port=53
)。
通过添加 (在类别中)告诉 NetworkManager 用作dnsmasq
DNS 服务器。dns=dnsmasq
/etc/NetworkManager/NetworkManager.conf
[main]
现在,由于systemd-resolved
已关闭,您可以自由编辑/etc/resolve.conf
(至少直到您安装另一个生成和管理的服务resolve.conf
)。nameserver 127.0.0.53
不再需要,请将其更改为nameserver 127.0.0.1
。
您现在应该能够配置dnsmasq
将 TLD 解析为所需的地址。/etc/dnsmasq.d/test.conf
使用 创建文件address=/.test/127.0.0.1
。
重新启动,dnsmasq
和NetworkManager
(sudo servicectl restart dnsmasq.service
,sudo servicectl restart network-manager.service
)。
developer@ubuntu:~$ dig hi_eric.test
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> hi_eric.test
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59442
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hi_eric.test. IN A
;; ANSWER SECTION:
hi_eric.test. 0 IN A 127.0.0.1
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jul 01 07:30:46 PDT 2018
;; MSG SIZE rcvd: 46
缺点是,这迫使我使用硬编码的 DNS 服务器来处理传出流量(因为现在.test
是您的服务器可以解析的唯一域)。我不得不添加resolv-file=/etc/resolve.dnsmasq
并使用 Google 公共 DNS 服务器来/etc/dnsmasq.conf
创建:/etc/resolve.dnsmasq
nameserver 8.8.8.8
nameserver 8.8.4.4
重新启动dnsmasq
上次(sudo servicectl restart dnsmasq.service
)。现在,一切,无论多或少,都应该正常工作。.test
解析为127.0.0.1
,其他一切都由 Google 开放 DNS 服务器解析。您可以调整dnsmasq
配置,增加缓存大小等。
就像我说的,我对这个解决方案不是 100% 确定(我 99% 确定有更好的解决方案),但它确实有效。我希望其他人能纠正我做错的一切,并指导你用更好、更稳定的方式解决你(和我!)的问题。干杯!