![强制在网络上使用特定的 DNS 提供商](https://linux22.com/image/22304/%E5%BC%BA%E5%88%B6%E5%9C%A8%E7%BD%91%E7%BB%9C%E4%B8%8A%E4%BD%BF%E7%94%A8%E7%89%B9%E5%AE%9A%E7%9A%84%20DNS%20%E6%8F%90%E4%BE%9B%E5%95%86.png)
OpenDNS 提供了一种非常简单的按类别进行互联网过滤的方法。当然,谁能获得正确的IP地址就可以轻松绕过过滤器,但这已经足以满足我的期望了。
更大的问题是在客户端更改 DNS 提供商并不是什么大问题。
所以我的问题是是否可以强制在本地网络中仅使用特定的 DNS 提供商。
目标设备是带有 OpenWRT 的 WiFi 路由器。 (不过,我欢迎任何类似的简单设置过滤解决方案,但主要问题是 DNS 提供商强制。)
答案1
使用 iptables 防火墙可以实现此功能(Openwrt 也使用 iptables):
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp --dport 53 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j DNAT --to 192.168.1.1
在您的路由器上使用 Opendns 服务器。192.168.1.1
是Openwrt路由器的ip。192.168.1.0/24
是 LAN 网络子网。根据您的网络子网设置修改上述规则。如果您在 openwrt 提示符下尝试上述规则,则替换-A
为-I
.如果您将规则保存在启动或重新启动时加载的脚本中,则-A
切换应该可以工作。通过此设置,无论客户端计算机使用什么 dns 服务器,当 dns 请求到达路由器时,目标 ip 将更改为路由器的 ip。您可以在 Openwrt 上找到有关 iptables 的更多信息这里。
答案2
是的,可以让本地网络中的所有主机仅使用特定的 DNS 提供商。您可以通过配置代理服务器来做到这一点,例如鱿鱼代理使本地网络中的所有主机只能通过该代理服务器访问Internet。所以每个请求无论是DNS请求还是HTTP请求或者任何其他请求,都会首先转到代理服务器。这样,在配置代理服务器时写入的任何 DNS 条目都将被本地网络中的所有主机使用。