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

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

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

我也有一个私人的VPN,我最终连接。 域名服务器(10.111.1.1)和域名(private.site)在这个networking中几乎没有任何改变,但是现在它们被openVPN客户端推入networkingpipe理器,并且也被合并到现有的/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 

正如你所看到的,我的工作networking中的第二个名称服务器被推出,因为最多3个条目的限制。 现在还好,但如果这个名字服务器出于维护或其他原因就会出现问题。

所以我发现dnsmasq可以在这里帮助我,所以我设置dnsmasq就像本地DNSparsing器一样,没有任何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个名称服务器)。 我能够正确parsing两个networking中的主机名。

所以这些是我有的问题:

  1. 有没有一种方法,我可以使NetworkManager或dhclient写出名称服务器的地方,我可以使dnsmasq用作resolv文件的名单?
  2. 如何使dnsmasq使用某些名称服务器作为所有查询的默认值? 现在我注意到,在互联网上的公共领域的查询通常发送到名称服务器 – 一个在work.site以及private.site。 如果我可以限制这只是work.site,这将是一件好事。

更新:这些是我find的解决scheme:在/ etc / sysconfig /networking/configuration更改以下内容:

 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中添加了一个服务器规则。

如果你安装了resolvconf ,NetworkManager将直接使用它来代替直接写入/etc/resolv.conf 。 然后可以在/var/run/resolvconf/interface/NetworkManagerfind来自NM的DNS服务器。

dnsmasq发送所有的查询到10.111.1.1,因为它在resolv.conf列出 – 你可能想从resolv.conf删除它,这样它只能用于private.site域。 resolv.conf中的名称服务器基本上是默认的。