Надоело вручную обновлять на роутере список маршрутов для блокировки запрещенных сайтов. Я дополнительно блокировал не всё подряд, а буквально несколько сайтов, но всё равно надоело, поэтому написал небольшой скрипт для автоматизации рутины. Интерфейс tun0 терминирует все подключения в /dev/null если что.

Скрипт скачивает список адресов которые надо заблокировать с https://antifilter.download/ в файл ipsum_new и немного фильтрует чтобы избежать подстановок, сравнивает с предыдущей версией списка в ipsum_cur и помещает разницу в ipsum_diff. Затем берём разницу и добавляем или удаляем маршрут в таблице маршрутизации в зависимости от знака + или - в diff-файле. В конце скрипта замещаем текущий ipsum_cur новым файлом.

Обратите внимание, в скрипте этого нет, но мне пришлось добавить статические маршруты до некоторых хостов т.к. оказалось, что они попадают в диапазоны из списка. Такое может случиться т.к. отдельные адреса суммируются в подсети по маске /24.

#!/bin/sh
[ ! -f ipsum_cur ] &&  touch ipsum_cur

wget https://antifilter.download/list/ipsum.lst -O - | \
	grep -v -E '[a-zA-Z]+' | \
	grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | \
	sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n > ipsum_new

diff -C0 ipsum_cur ipsum_new | grep '^[+-] ' > ipsum_diff

while read -r line; do 
    OP=${line::1}
    ADDR=${line:2}
    if [ "$OP" = "+" ]; then
        ip route add $ADDR dev tun0
    elif [ "$OP" = "-" ]; then
        ip route del $ADDR dev tun0
    fi
done < ipsum_diff

rm -f ipsum_diff
[ -f ipsum_new ] && mv ipsum_new ipsum_cur

В faq сайта который публикует списки написано, что списки обновляется раз в пол часа, так что можно добавить скрипт в cron для выполнения по расписанию.