如何通过前缀转发域名parsing?

有时我必须在整个VPNC连接到我的工作networking。 那个networking有DNS服务器。 我没有权限从中取出区域文件。 我有本地绑定服务器转发到8.8.8.8,并解决了我的KVM的一些内部名称。 而我的resolve.conf指向127.0.0.1。

来自工作networking的所有名称都具有相同的子域(company.com)。

我很高兴find一个configuration选项与正则expression式转发parsing域名匹配正则expression式/company.com$/到另一个DNS服务器,而不是默认值。

是的,这个解决scheme在技术上看起来并不完美,但很简单。


感谢关于dnsmasq的想法。 现在剩下的工作。

现在我只在veth上运行bind9。 /etc/resolve.conf保持不变。 dnsmasq被绑定到rest接口,并默认转发到bind9,否则公司服务器。

一切工作,如果VPNnetworkingbuild立之前。 但是,如果你启动vpnc连接它挂了一段时间抱怨vpn.company.com不能解决后失败。

我试图禁用负caching,并将最大caching大小设置为零。 没有帮助。

如果/etc/resolve.conf指向8.8.8.8或bind9,则不会发生这种循环。

dnsmasq会为你做这个。 在您的机器上本地运行它,并将/etc/resolv.conf指向127.0.0.1

我没有完整的configuration,但你可能要调查的参数是

 # Do not read resolv.conf no-resolv # Send queries for contoso.com to nameserver 10.1.2.3 server=/contoso.com/10.1.2.3 # Set your local default domain and add it to simple names in /etc/hosts domain=fabrikam.com expand-hosts # DNS "A" records are like this host-record=vpn.contoso.com,203.0.113.77 

您可以在主/etc/dnsmasq.conf文件中包含其他文件,因此,在将vpnc联机或脱机时,可以根据需要更新其中一个文件,以便转发器仅在vpn启动时可用。

如果您需要parsing名称(例如vpn.contoso.com ,则不能直接执行此操作,因为contoso.com域将发送到仅在vpn启动时才可用的名称服务器。 由于我们不想涉及鸡和鸡蛋,因此这里的解决scheme是使用dnsmasq将其定义为一个众所周知的名称。 这可以添加到/etc/hosts或者作为host-recorddnsmasq.conf设置。

随着时间的推移,您可能需要考虑用dnsmasqreplacebind ; 对于内部networking来说,它几乎可以做任何bind事情。