使用 dnsmasq 访问 DHCP 分配的多个名称服务器

使用 dnsmasq 访问 DHCP 分配的多个名称服务器

在我运行 openSUSE 11.4 的工作桌面上,我有一个本地网络,它通过 DHCP 获取其地址、域(work.site)和名称服务器(10.100.1.1、10.100.1.2)信息 - 这些信息写入 /etc/resolv.conf

我使用工作网络访问互联网,这两个名称服务器最终会返回互联网上任何公共域名查找的条目。

我还有一个最终连接的私人 VPN。名称服务器 (10.111.1.1) 和域 (private.site) 很少会因此网络而改变,但目前它们由 openVPN 客户端推送到网络管理器,并且也会与现有的 /etc/resolv.conf 合并

我的 resolv.conf 最终看起来像这样:

search private.site work.site
nameserver 127.0.0.1
nameserver 10.111.1.1
nameserver 10.100.1.1

如您所见,由于最多 3 个条目的限制,我工作网络中的第二个名称服务器被推了出去。它仍然很好,但如果该名称服务器因维护或其他原因而停机,就会出现问题。

所以我发现 dnsmasq 可以在这里帮助我,因此我将 dnsmasq 设置为本地 DNS 解析器,没有任何 DHCP 支持。

现在这是我的 /etc/dnsmasq.conf:

resolv-file=/etc/resolv.conf
server=/private.site/10.111.1.1
server=/1.111.10.in-addr.arpa/10.111.1.1
listen-address=127.0.0.1
bind-interfaces
log-queries

我让 dnsmasq 从 /etc/resolv.conf 获取名称服务器列表,因为 NetworkManager 似乎可以正确更新此列表(最多 3 个名称服务器)。我能够正确解析两个网络中的主机名。

所以我有以下问题:

  1. 有没有办法可以让 NetworkManager 或 dhclient 在其他地方写出名称服务器列表,然后让 dnsmasq 用作 resolv-file?
  2. 如何让 dnsmasq 使用某些名称服务器作为所有查询的默认名称服务器?现在我注意到,对互联网上公共域的查询通常会发送到两个名称服务器 - work.site 和 private.site 上的一个。如果我可以将其仅限制在 work.site 上就好了。

更新:这些是我找到的解决方案:在 /etc/sysconfig/network/config 中更改以下内容:

NETCONFIG_DNS_FORWARDER="dnsmasq"
NETCONFIG_DNS_FORWARDER_FALLBACK="no"
NETCONFIG_DNS_STATIC_SEARCHLIST="work.site private.site"

在 /etc/dnsmasq.conf 中添加以下行:

resolv-file=/var/run/dnsmasq-forwarders.conf

我还必须修改我的 openVPN server.conf 以便不为客户端推送名称服务器,因为我已经在 dnsmasq.conf 中为该域添加了服务器规则。

答案1

如果您安装解析配置,NetworkManager 将使用它,而不是/etc/resolv.conf直接写入。然后可以在中找到来自 NM 的 DNS 服务器/var/run/resolvconf/interface/NetworkManager

dnsmasq 将所有查询发送到 10.111.1.1,因为它已在列表中resolv.conf- 您可能希望将其从列表中删除,resolv.conf以便它仅用于 private.site 域。列表中的名称服务器resolv.conf基本上是默认的。

相关内容