具有多个WAN的多个DNS

我有一个Linux网关,有两个广域网,每个连接到不同的提供商,每个提供商有他自己的DNS服务器,本地用户通过这个服务器连接到互联网[它也作为代理服务器]。

问题是可以根据本地用户的源IP来指定服务器(或使用Squid的代理服务器)将使用哪个DNS?

您可以让他们都使用相同的 IP为DNS服务器,并根据选定的广域网路由到正确的 DNS。

不确定如何确定stream量将如何stream出(您的两个ISP中的哪一个…),但我认为您有两个WAN NIC,我们称它们为eth0和eth1。

我们假设你的假IP地址是1.2.3.4,eth0的“正确”DNS是2.2.2.2,eth1的“正确”DNS是3.3.3.3。

我相信这可以做到这一点:

iptables -t nat -I POSTROUTING -o eth0 -d 1.2.3.4 -j DNAT --to-destination 2.2.2.2 iptables -t nat -I POSTROUTING -o eth1 -d 1.2.3.4 -j DNAT --to-destination 3.3.3.3 

一种方法是使用DHCP。 DHCPpipe理客户端networking的configuration,并可以包括DNSparsing器的configuration。 使用DHCP,您可以指定某个networking,或某个范围,或某些主机将被赋予特定的networkingconfiguration,这也可以包括将使用哪个DNS服务器。

在这种情况下,networkingA中的主机可以在DHCP范围内configuration为使用DNS服务器B,然后在networkingY中的主机可以在DHCP范围内configuration为使用DNS服务器Z.

是的,你可以使用视图和绑定转发,这两个问题有答案(或接近它):

  • BIND9通过查看转发
  • 如何使我的内部DNS转发请求到给定的服务器

我不确定这将如何实际工作,NAT一半你的客户一个提供者,一半到另一个?