![我可以使用 DNSMasq 来为每个网络设置 DNS 服务器吗?](https://linux22.com/image/1580621/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20DNSMasq%20%E6%9D%A5%E4%B8%BA%E6%AF%8F%E4%B8%AA%E7%BD%91%E7%BB%9C%E8%AE%BE%E7%BD%AE%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%97%EF%BC%9F.png)
我正在使用 DNSMasq。对于某些 wifi 网络,我需要有不同的 DNS 服务器。默认情况下,我有 Quad9 DNS 地址。但是当我连接到我的大学网络 (eduroam) 时,我必须使用他们提供的 DNS 服务器——Quad9 被屏蔽了。
有没有办法在连接时从路由器获取建议的 DNS 服务器并使用它?理想情况下,我希望能够设置是否要使用他们的建议。
目前,我在 dnsmasq.d/ 目录中添加了一条规则,并在每次连接时重新启动 dnsmasq,然后在断开连接时删除该文件并重新启动。
我使用 Arch Linux。对于网络管理,我使用netctl
。
答案1
我不清楚您的配置,但我很确定解决方案在于您正在运行的 DHCP 客户端。
DHCP 通常提供 (动态分配的) IP 地址的连接信息,并且通常包括名称服务器。听起来在您的设置中 (这在 Linux 中并不罕见),与 DNS 相关的 DHCP 请求被忽略了 - 如果您正在运行 DNSMASQ,这有一定道理。
如果您正在运行 isc dhcp(这很常见),则可以使用一个钩子来控制 DHCP 如何处理 DNS 信息。手册页 (https://www.isc.org/wp-content/uploads/2018/02/dhcp44cscript.html) 有更多关于此钩子的信息。
通过编辑 resolv.conf 的外观,您可以更改名称服务器。