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