Wiki

Clone wiki

rt-n56u / RU / Использование IP set

Примеры использования IP set

В прошивку включены ядерные модули и утилиты для работы с ipset. Ниже приведён пример их использования.



Для работы примеров необходим USB-носитель с Entware и прошивка с IPset. Если скачивали стандартную сборку или не отключали ipset принудительно, всё на месте.

Блокировка входящих соединений из Китая и TOR-сети. Блокировка трафика с Microsoft

Пример описывает как…

  • заблокировать входящие соединения с TOR-нод,
  • заблокировать входящие соединения с Китая (дабы отсечь большинство попыток взлома SSH и PPTP),
  • запретить клиентам локалки общаться с сайтами Microsoft, за исключением скайпа.

Создайте файл /opt/etc/init.d/S99_fill_ipset со следующим содержимым:

#!/bin/sh

[ "$1" = "start" ] || exit

logger -t $(basename $0) 'started'

LISTS=" \
    TorNodes=http://list.iblocklist.com/?list=togdoptykrlolpddwbvz&fileformat=p2p&archiveformat=gz \
    Microsoft=http://list.iblocklist.com/?list=xshktygkujudfnjfioro&fileformat=p2p&archiveformat=gz \
    China=http://list.iblocklist.com/?list=cn&fileformat=p2p&archiveformat=gz \
"

LIST_DIR='/opt/var'

[ -d "$LIST_DIR" ] || mkdir -p $LIST_DIR

for item in $LISTS ; do
    name="$(echo $item | cut -d '=' -f 1)"
    url="${item#$name=}"
    echo "Processing $name list..."
    [ -f "$LIST_DIR/$name.gz" ] || wget -O "$LIST_DIR/$name.gz" "$url"
    for net in $(zcat $LIST_DIR/$name.gz | cut -d ':' -f 2 | grep -E '^[-0-9.]+$') ; do
        ipset add $name $net
    done
done

Сделайте его исполняемым:

chmod +x /opt/etc/init.d/S99_fill_ipset

Отредактируйте /opt/etc/init.d/S10iptables, приведя его к виду:

#!/bin/sh

case "$1" in
start|update)
        # add iptables custom rules
        [ -d '/opt/etc' ] || exit 0
        iptables -I INPUT -m set --match-set TorNodes src -j DROP
        iptables -I INPUT -m set --match-set China src -j DROP
        iptables -I FORWARD -m set --match-set Microsoft src,dst -j DROP
        iptables -I FORWARD -m set --match-set Skype src,dst -j ACCEPT
        ;;
stop)
        # delete iptables custom rules
        echo "firewall stopped"
        ;;
*)
        echo "Usage: $0 {start|stop|update}"
        exit 1
        ;;
esac

Теперь на странице Персонализация > Скрипты в поле Выполнить после полного запуска маршрутизатора: добавьте:

#!/bin/sh

modprobe ip_set_hash_ip
modprobe ip_set_hash_net
modprobe xt_set

ipset -N TorNodes nethash hashsize 4096
ipset -N China nethash hashsize 2048
ipset -N Microsoft nethash
ipset -N Skype iphash

Перейдите к странице LAN > DHCP, в поле Пользовательский файл конфигурации "dnsmasq.conf" добавьте:

ipset=/skype.net/Skype

Перегрузите роутер, чтобы настройки вступили в силу.

После загрузки роутер создаёт несколько пустых наборов ipset и начинает использовать их в правилах файервола. Пустые наборы начинают заполняться уже в процессе дальнейшей работы. Контент для трёх из них — TorNodes, China и Microsoft, выкачивается из общедоступных источников, а сет Skype заполняется по мере обращений к доменам, заканчивающим на skype.com.

dnsmasq не запустится, если нет сета Skype. В системном логе можно видеть, что он запустится только со второй попытки.


Выборочное использование OpenVPN для обхода блокировок ресурсов

Решение позволяет использовать VPN-соедиенение исключтельно для списка блокируемых ресурсов. При обращении к любым другим ресурсам будет использоваться привычное провайдерское соединение. Для реализации примера необходимо иметь настроенное соединение OpenVPN.

Подробные шаги по настройке изложены здесь.

Updated