Вообщем пришло указание от министерства блокировать сайты
C IP всё просто. На форвард вешается цепочка первым правилом. Или не первым, если надо что-то главнее - белый список, файрвол, разное. Далее, эта цепочка просто обновляется. Скрипт по работае с цепочкой - строк с полтора десятка:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
iptables -F F_ZAPRETINFO
IP_LIST=/tmp/ip.txt
SUB_LIST=/tmp/subnet.txt
cd /tmp
[ -f $SUB_LIST ] && rm -f $SUB_LIST
[ -f $IP_LIST ] && rm -f $IP_LIST
sleep $[$RANDOM/555] # randomize time for access to ftp server
wget bla-bla ftp:...subnet.txt
wget bla-bla ftp:...ip.txt
[ -f $SUB_LIST ] || exit 0
[ -f $IP_LIST ] || exit 0
for IP in `cat $SUB_LIST | sort | uniq | sort -n`; do
iptables -A F_ZAPRETINFO -d $IP -j REJECT
done
for IP in `cat $IP_LIST | sort | uniq | sort -n`; do
iptables -A F_ZAPRETINFO -d $IP -j REJECT
done
Тут под работу с выгрузкой из базы связьнадзора, но примерно то же самое должно быть.
Можно сделать, кстати в nat prerouting, с форвардом на страничку с пояснением.
Это что касается IP. Если анализировать содержимое пакета (URL), надо заморачиваться с модулями dpi, поддержка которых давно заброшена.