如何通过前缀转发域名解析?

如何通过前缀转发域名解析?

有时我必须通过 VPNC 连接到我的工作网络。该网络有 DNS 服务器。我没有权限从中拉取区域文件。我有本地绑定服务器,它转发到 8.8.8.8 并解析我的 KVM 的一些内部名称。我的 resolve.conf 指向 127.0.0.1。

工作网络中的所有名称都具有相同的子域名 (company.com)。

我很高兴找到一个带有正则表达式的配置选项,将与正则表达式 /company.com$/ 匹配的解析域名转发到另一个 DNS 服务器,而不是默认服务器。

是的,这个解决方案从技术上看起来并不完美,但它很简单。


感谢您提出的有关 dnsmasq 的想法。现在只需让它工作即可。

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

如果之前已经建立了 vpn 网络,那么一切正常。但是如果你启动 vpnc-connect,它会在挂起一段时间后失败,并抱怨无法解析 vpn.company.com。

我尝试禁用负缓存并将最大缓存大小设置为零。但毫无效果。

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

答案1

dnsmasq将为您完成此操作。在您的机器上本地运行它并将您的 设置/etc/resolv.conf为 指向127.0.0.1

我手头没有完整的配置,但你可能想要调查的参数是

# 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 启动时可用。

如果您需要解析诸如此类的名称,则vpn.contoso.com无法直接执行此操作,因为contoso.com域名会被发送到名称服务器,而该服务器仅在 VPN 启动时才可用。因为我们不想涉及鸡和蛋的问题[*]此处的解决方案是使用dnsmasq将其定义为众所周知的名称。这可以添加到/etc/hosts或设置dnsmasq.confhost-record

随着时间的推移,您可能需要考虑bind用进行替换dnsmasq;对于内部网络,它几乎可以完成所有功能bind

相关内容