mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-24 22:32:58 +03:00
ipv6 support
This commit is contained in:
@@ -128,3 +128,8 @@ v25
|
||||
|
||||
init : move to native systemd units
|
||||
use links to units, init scripts and firewall includes, no more copying
|
||||
|
||||
v26
|
||||
|
||||
ipv6 support
|
||||
tpws : advanced bind options
|
||||
|
@@ -91,6 +91,20 @@ transparent proxy (TPROXY или DNAT). TPROXY не работает с соед
|
||||
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:1188
|
||||
iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to 127.0.0.1:1188
|
||||
|
||||
Особенности применения ip6tables
|
||||
--------------------------------
|
||||
|
||||
ip6tables работают почти точно так же, как и ipv4, но есть ряд важных нюансов.
|
||||
В DNAT следует брать адрес --to в квадратные скобки. Например :
|
||||
|
||||
iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner ! --uid-owner tpws -j DNAT --to [::1]:1188
|
||||
|
||||
Параметра route_localnet не существует для ipv6.
|
||||
DNAT на localhost (::1) возможен только в цепочке OUTPUT.
|
||||
В цепочке PREROUTING DNAT возможен на любой global address или на link local address того же интерфейса,
|
||||
откуда пришел пакет.
|
||||
NFQUEUE работает без изменений.
|
||||
|
||||
nfqws
|
||||
-----
|
||||
|
||||
@@ -113,6 +127,11 @@ tpws - это transparent proxy.
|
||||
--pidfile=<file> ; сохранить PID в файл
|
||||
--user=<username> ; менять uid процесса
|
||||
--bind-addr ; на каком адресе слушать. может быть ipv4 или ipv6 адрес. если не указано, то слушает на всех адресах ipv4 и ipv6
|
||||
; если указан ipv6 link local, то требуется указать с какого он интерфейса через --bind-iface6
|
||||
--bind-linklocal=prefer|force ; если prefer, то найти link local от iface6. если не найдено - использовать первый адрес любого типа.
|
||||
; если force и link local не найден - выход по ошибке.
|
||||
--bind-iface4=<iface> ; слушать на первом ipv4 интерфейса iface
|
||||
--bind-iface6=<iface> ; слушать на первом ipv6 интерфейса iface. при bind-linklocal определяет интерфейс, откуда брать ipv6 link local
|
||||
--port=<port> ; на каком порту слушать
|
||||
--split-http-req=method|host ; способ разделения http запросов на сегменты : около метода (GET,POST) или около заголовка Host
|
||||
--split-pos=<offset> ; делить все посылы на сегменты в указанной позиции. Если отсыл длинее 8Kb (размер буфера приема), то будет разделен каждый блок по 8Kb.
|
||||
@@ -131,6 +150,8 @@ tpws - это transparent proxy.
|
||||
; список может быть запакован в gzip. формат автоматически распознается и разжимается
|
||||
Параметры манипуляции могут сочетаться в любых комбинациях.
|
||||
Есть исключения : split-pos заменяет split-http-req. hostdot и hosttab взаимоисключающи.
|
||||
tpws может биндаться только к одному ip или ко всем сразу.
|
||||
Для бинда на все ipv4 укажите "0.0.0.0", на все ipv6 - "::". Без параметров биндаемся на все ipv4 и ipv6.
|
||||
|
||||
Способы получения списка заблокированных IP
|
||||
-------------------------------------------
|
||||
@@ -184,6 +205,12 @@ get_reestr.sh может использовать мультипоточный
|
||||
в отдельный ipset "ipban". Он может использоваться для принудительного завертывания всех
|
||||
соединений на прозрачный proxy "redsocks" или на VPN.
|
||||
|
||||
IPV6 : если включен ipv6, то дополнительно создаются листы с таким же именем, но с "6" на конце перед расширением.
|
||||
zapret-ip.txt => zapret-ip6.txt
|
||||
Создаются ipset-ы zapret6 и ipban6.
|
||||
Реестр РКН не содержит список ipv6 адресов. Возможен только самостоятельный ресолвинг юзер листа или
|
||||
листа доменов РКН. get_user.sh и get_reestr.sh создают списки ipv6.
|
||||
|
||||
Фильтрация по именам доменов
|
||||
----------------------------
|
||||
|
||||
@@ -251,11 +278,17 @@ TPWS_OPT_HTTPS="--split-pos=3"
|
||||
Поместите сюда название скрипта, который будете использовать для обновления листов.
|
||||
Если не нужно, то параметр следует закомментировать.
|
||||
|
||||
Можно индивидуально отключить ipv4 или ipv6. Если параметр закомментирован или не равен "1",
|
||||
использование протокола разрешено.
|
||||
#DISABLE_IPV4=1
|
||||
DISABLE_IPV6=1
|
||||
|
||||
|
||||
Следующие настройки не актуальны для openwrt :
|
||||
|
||||
Если ваша система работает как роутер, то нужно раскомментировать параметр SLAVE_ETH и вписать в него
|
||||
название внутреннего сетевого интерфейса (LAN).
|
||||
Если ваша система работает как роутер, то нужно вписать названия внутреннего и внешнего интерфейсов :
|
||||
IFACE_LAN=eth0
|
||||
IFACE_WAN=eth1
|
||||
|
||||
Параметр INIT_APPLY_FW=1 разрешает init скрипту самостоятельно применять правила iptables.
|
||||
При иных значениях или если параметр закомментирован, правила применены не будут.
|
||||
@@ -288,7 +321,7 @@ TPWS_OPT_HTTPS="--split-pos=3"
|
||||
ln -fs /opt/zapret/init.d/systemd/zapret.service /lib/systemd/system
|
||||
|
||||
Удалить старые листы, если они были созданы ранее :
|
||||
rm /opt/zapret/ipset/zapret-ip.txt* /opt/zapret/ipset/zapret-ip-user.txt* /opt/zapret/ipset/zapret-ip-ipban.txt* /opt/zapret/ipset/zapret-ip-user-ipban.txt* /opt/zapret/ipset/zapret-hosts.txt*
|
||||
/opt/zapret/ipset/clear_lists.sh
|
||||
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
|
||||
Выполнить скрипт обновления листа :
|
||||
/opt/zapret/ipset/get_config.sh
|
||||
@@ -387,7 +420,7 @@ git и curl по умолчанию могут присутствовать, ips
|
||||
АЛЬТЕРНАТИВА : зайти в tpws,nfq,ip2net,mdig, в каждом выполнить make. Получите динамические бинарики под вашу ось.
|
||||
|
||||
Удалить старые листы, если они были созданы ранее :
|
||||
rm /opt/zapret/ipset/zapret-ip.txt* /opt/zapret/ipset/zapret-ip-user.txt* /opt/zapret/ipset/zapret-ip-ipban.txt* /opt/zapret/ipset/zapret-ip-user-ipban.txt* /opt/zapret/ipset/zapret-hosts.txt*
|
||||
/opt/zapret/ipset/clear_lists.sh
|
||||
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
|
||||
Выполнить скрипт обновления листа :
|
||||
/opt/zapret/ipset/get_config.sh
|
||||
@@ -530,7 +563,7 @@ ipset можно выкинуть, если не будем пользовать
|
||||
Настроить параметры согласно разделу "Выбор параметров".
|
||||
|
||||
Удалить старые листы, если они были созданы ранее :
|
||||
rm /opt/zapret/ipset/zapret-ip.txt* /opt/zapret/ipset/zapret-ip-user.txt* /opt/zapret/ipset/zapret-ip-ipban.txt* /opt/zapret/ipset/zapret-ip-user-ipban.txt* /opt/zapret/ipset/zapret-hosts.txt*
|
||||
/opt/zapret/ipset/clear_lists.sh
|
||||
По желанию прописать в /opt/zapret/ipset/zapret-hosts-user.txt свои домены.
|
||||
Выполнить скрипт обновления листа :
|
||||
/opt/zapret/ipset/get_config.sh
|
||||
@@ -542,19 +575,37 @@ ipset можно выкинуть, если не будем пользовать
|
||||
/etc/init.d/zapret enable
|
||||
/etc/init.d/zapret start
|
||||
|
||||
В зависимости от выбранного в файле config MODE скопировать нужный файл настроек фаервола :
|
||||
cp /opt/zapret/init.d/openwrt/firewall.zapret.$MODE /etc/firewall.zapret
|
||||
Если не включен параметр DISABLE_IPV4 :
|
||||
В зависимости от выбранного в файле config MODE создать ссылку на нужный файл настроек фаервола :
|
||||
ln -fs /opt/zapret/init.d/openwrt/firewall.zapret.$MODE /etc/firewall.zapret
|
||||
Например :
|
||||
cp /opt/zapret/init.d/openwrt/firewall.zapret.tpws_ipset_https /etc/firewall.zapret
|
||||
ln -fs /opt/zapret/init.d/openwrt/firewall.zapret.tpws_ipset_https /etc/firewall.zapret
|
||||
Проверить была ли создана ранее запись о firewall include :
|
||||
uci show firewall | grep firewall.zapret
|
||||
Если ничего не вывело, значит добавить :
|
||||
Если firewall.zapret нет, значит добавить :
|
||||
uci add firewall include
|
||||
uci set firewall.@include[-1].path="/etc/firewall.zapret"
|
||||
uci set firewall.@include[-1].reload="1"
|
||||
uci commit firewall
|
||||
Перезапустить фаервол :
|
||||
fw3 restart
|
||||
|
||||
Если не включен параметр DISABLE_IPV6 :
|
||||
В зависимости от выбранного в файле config MODE создать ссылку на нужный файл настроек фаервола :
|
||||
ln -fs /opt/zapret/init.d/openwrt/firewall.zapret.${MODE}6 /etc/firewall.zapret6
|
||||
Например :
|
||||
ln -fs /opt/zapret/init.d/openwrt/firewall.zapret.tpws_ipset_https6 /etc/firewall.zapret6
|
||||
Проверить была ли создана ранее запись о firewall include :
|
||||
uci show firewall | grep firewall.zapret6
|
||||
Если firewall.zapret6 нет, значит добавить :
|
||||
uci add firewall include
|
||||
uci set firewall.@include[-1].path="/etc/firewall.zapret6"
|
||||
uci set firewall.@include[-1].reload="1"
|
||||
uci commit firewall
|
||||
Перезапустить фаервол :
|
||||
fw3 restart
|
||||
|
||||
Если не включен параметр DISABLE_IPV6,
|
||||
Посмотреть через iptables -nL или через luci вкладку "firewall" появились ли нужные правила.
|
||||
|
||||
ЭКОНОМИЯ МЕСТА : если его мало, то можно оставить в директории zapret лишь подкаталог ipset, файл config и init.d/openwrt.
|
||||
|
Reference in New Issue
Block a user