使用openwrt路由器阻止facebook.com

时间:2016-10-10 05:42:02

标签: router openwrt

我正在使用OpenWRT路由器。我需要在特定时间内阻止URL或多个URL(非IP)。例如,我想阻止facebook.com,以便此路由器的客户端无法访问该网站。防火墙规则应该可以选择这样做,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

以下是一种按域名而非IP地址阻止的方法。

您需要这种复杂方法的主要原因是每个域名(例如facebook.com)可能在任何给定时间被解析为不同的IP地址。因此,我们需要保留已解析的IP地址列表,并根据此列表添加iptables规则。

首先,您应该在dnsmasq config中启用日志记录:

uci set dhcp.@dnsmasq[0].logqueries=1
uci commit dhcp
/etc/init.d/dnsmasq restart

这将为您提供以下日志条目:

daemon.info dnsmasq[2066]: reply facebook.com is 31.13.72.36

现在,您只需要不断解析syslog并添加相应的iptables规则(请注意,您最需要一个更通用的脚本和ipset以获得更好的性能):

logread -f | awk '/facebook.com is .*/{print $11}' | while read IP; do iptables -I OUTPUT -d $IP -j DROP; done