我如何将FreeBSD的DNS请求redirect到另一个DNS

如何configurationFreeBSD将所有DNS请求redirect到其他DNS。
我们已经为我们公司build立了FreeBSD作为路由器。 我们有两张卡,一张是lan,另一张是WAN,configuration为公共静态IP地址。
我想要做的是:
当我们的networking192.168.0.1/32中的一些客户端调用DNS请求到我们的旧的DNS服务器时,FreeBSD将把这个请求转发到另一个DNS服务器。
那可能吗 ?
我需要把这个规则放在哪里?

如果您在该路由器上运行BIND,则可以轻松地将其configuration为将所有请求转发到适当的外部DNS服务器。 根据您运行的防火墙,您还可以轻松地将数据包转发到指定的路由器。 现在的问题是路由器现在正在回应请求,客户期望另一台服务器来回答请求。 这将看起来像一个经典的caching中毒尝试,许多较新的客户端将拒绝它。 如果你想尝试它,你正在运行IPFW,添加这样的东西:

ipfw add 00010 fwd localhost ip from {lan} to any dns

(请注意,您需要使用options IPFIREWALL_FORWARD编译的内核才能正常工作。)

你最好的select,因为别人提到的是configuration你的DHCP发出新的地址(或路由器和设置转发,这也将减less外部networkingstream量,因为它会caching一些DNS查询)。 然后logging任何仍在使用任何外部DNS的人。

这是可能的,但可能比需要更多的工作。 简短而肮脏的方法是使用netcat命令,而更持久的方法是在iptables中使用forward语句(我相信也适用于BSD)

另一个解决scheme是使用虚拟地址为旧服务器ip(en0.0或某些类似的东西)设置新的服务器。

最好的解决scheme可能是更改DHCP服务器来为新的DNS IP提供服务,并将任何硬件服务器更改为新的IP。

您应closures旧的DNS服务器,并阻止从内部LAN到外部DNS的DNSstream量,这样您的用户就没有其他select。

一个不那么激烈的解决scheme,可能会发现哪些用户正在使用外部或旧的DNS(分析stream量或防火墙日志),并通知这些用户旧的DNS将closures,而不是closures旧的DNS。