Я использую маршрутизатор OpenWRT. Мне нужно заблокировать URL или несколько URL (не IP) для определенного времени. например, я хочу заблокировать facebook.com, чтобы клиенты этого маршрутизатора не могли получить доступ к веб-сайту. правила брандмауэра должны иметь возможность сделать это, но я не знаю, как это сделать.Блок facebook.com с использованием openwrt router
-1
A
ответ
0
Вот один из способов блокировки по доменному имени, а не по IP-адресу.
Основная причина, по которой вам нужен такой сложный метод, заключается в том, что каждое доменное имя (например, facebook.com) может быть разрешено как другой IP-адрес в любой момент времени. Итак, нам нужно сохранить список разрешенных IP-адресов и добавить правила iptables на основе этого списка.
Во-первых, вы должны включить ведение журнала в Dnsmasq конфигурации:
uci set [email protected][0].logqueries=1
uci commit dhcp
/etc/init.d/dnsmasq restart
Это даст вам записи журнала, как:
daemon.info dnsmasq[2066]: reply facebook.com is 31.13.72.36
Теперь вы просто должны постоянно анализировать системный журнал и добавить соответствующие правила Iptables (обратите внимание, что вам, скорее всего, нужен более универсальный скрипт и ipset для повышения производительности):
logread -f | awk '/facebook.com is .*/{print $11}' | while read IP; do iptables -I OUTPUT -d $IP -j DROP; done
У меня есть еще одна возможность сделать это, а не напрямую обращаться к iptables. Мы можем использовать прокси. tinyproxy может быть хорошим выбором. – Raihanhbh