From 539b44298c9f5352f4fd6f21b2471cc2a5650f41 Mon Sep 17 00:00:00 2001 From: bolvan Date: Mon, 22 Feb 2016 17:54:18 +0300 Subject: [PATCH] ipset/get_antizapret.sh --- changes.txt | 4 ++++ ipset/get_antizapret.sh | 23 +++++++++++++++++++++++ readme.txt | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 58 insertions(+), 5 deletions(-) create mode 100755 ipset/get_antizapret.sh diff --git a/changes.txt b/changes.txt index fcf5fb2..d4aced4 100644 --- a/changes.txt +++ b/changes.txt @@ -30,3 +30,7 @@ ISP support : TKT support v5 nfqws : ipv6 support in nfqws + +v6 + +ipset : added "get_antizapret.sh" diff --git a/ipset/get_antizapret.sh b/ipset/get_antizapret.sh new file mode 100755 index 0000000..c2b3c29 --- /dev/null +++ b/ipset/get_antizapret.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# get ip list from antizapret.prostovpn.org + +SCRIPT=$(readlink -f $0) +EXEDIR=$(dirname $SCRIPT) + +. "$EXEDIR/def.sh" + +ZURL=http://antizapret.prostovpn.org/proxy.pac +ZIPLISTTMP=/tmp/zapret-ip.txt + +$EXEDIR/get_user.sh + +curl --fail --max-time 60 --max-filesize 4194304 "$ZURL" | sed -nre "s/^.*\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\".*$/\1/p" >$ZIPLISTTMP && +{ + dlsize=$(wc -c "$ZIPLISTTMP" | cut -f 1 -d ' ') + if test $dlsize -lt 20480; then + echo list file is too small. can be bad. + exit 2 + fi + mv -f $ZIPLISTTMP $ZIPLIST + "$EXEDIR/create_ipset.sh" +} diff --git a/readme.txt b/readme.txt index 788adca..2a933f2 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,4 @@ -zapret v.5 +zapret v.6 Для чего это надо ----------------- @@ -131,6 +131,33 @@ tkt : помогает разделение http запроса на сегме iptables -t raw -I PREROUTING -p tcp --sport 80 -m string --hex-string "|0D0A|Location: http://95.167.13.50" --algo bm -j DROP --from 40 --to 200 Ростелеком : см tkt +Способы получения списка заблокированных IP +------------------------------------------- + +1) Внесите заблокирванные домены в ipset/zapret-hosts-user.txt и запустите ipset/get_user.sh +На выходе получите ipset/zapret-ip-user.txt с IP адресами. + +2) ipset/get_reestr.sh получает список доменов от rublacklist и дальше их ресолвит в ip адреса +в файл ipset/zapret-ip.txt. В этом списке есть готовые IP адреса, но судя во всему они там в точности в том виде, +что вносит в реестр РосКомПозор. Адреса могут меняться, позор не успевает их обновлять, а провайдеры редко +банят по IP : вместо этого они банят http запросы с "нехорошим" заголовком "Host:" вне зависимости +от IP адреса. Поэтому скрипт ресолвит все сам, хотя это и занимает много времени. +Дополнительное требование - объем памяти в /tmp для сохранения туда скачанного файла, размер которого +несколько Мб и продолжает расти. На роутерах openwrt /tmp представляет собой tmpfs , то есть ramdisk. +В случае роутера с 32 мб памяти ее может не хватить, и будут проблемы. В этом случае используйте +следующий скрипт. +Скрипт автоматически вызывает ipset/get_user.sh и обновляет ipset + +3) ipset/get_anizapret.sh. быстро и без нагрузки на роутер получает лист с http://antizapret.prostovpn.org. +Скрипт автоматически вызывает ipset/get_user.sh и обновляет ipset + +На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет +либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку. +В обоих случаях слишком частая запись может убить флэшку, но если это произойдет с внутренней +флэш памятью, то вы просто убьете роутер. + +Обновление ipset выполняет скрипт ipset/create_ipset.sh + Пример установки на debian 7 ---------------------------- Debian 7 изначально содержит ядро 3.2. Оно не умеет делать DNAT на localhost. @@ -152,10 +179,10 @@ Debian 7 изначально содержит ядро 3.2. Оно не уме В /etc/init.d/zapret выбрать пераметр "ISP". В зависимости от него будут применены нужные правила. Там же выбрать параметр SLAVE_ETH, соответствующий названию внутреннего сетевого интерфейса. Включить автостарт : chkconfig zapret on -(опционально) Вручную первый раз получить новый список ip адресов : /opt/zapret/ipset/get_reestr.sh +(опционально) Вручную первый раз получить новый список ip адресов : /opt/zapret/ipset/get_antizapret.sh Зашедулить задание обновления листа : crontab -e - Создать строчку "0 12 * * */2 /opt/zapret/ipset/get_reestr.sh". Это значит в 12:00 каждые 2 дня обновлять список. + Создать строчку "0 12 * * */2 /opt/zapret/ipset/get_antizapret.sh". Это значит в 12:00 каждые 2 дня обновлять список. Запустить службу : service zapret start Попробовать зайти куда-нибудь : http://ej.ru, http://kinozal.tv, http://grani.ru. Если не работает, то остановить службу zapret, добавить правило в iptables вручную, @@ -171,7 +198,6 @@ Debian 7 изначально содержит ядро 3.2. Оно не уме ubuntu 12,14 ------------ -Для ubuntu 12 рекомендую обновить ядро до linux-image-generic-lts-trusty по причинам, аналогичным debian 7. Имеется готовый конфиг для upstart : zapret.conf. Его нужно скопировать в /etc/init и настроить по аналогии с debian. Запуск службы : "start zapret" Останов службы : "stop zapret" @@ -219,7 +245,7 @@ opkg install iptables-mod-extra iptables-mod-nfqueue iptables-mod-filter iptable Посмотреть через iptables -L или через luci вкладку "firewall" появились ли нужные правила. Зашедулить задание обновления листа : crontab -e - Создать строчку "0 12 * * */2 /opt/zapret/ipset/get_reestr.sh". Это значит в 12:00 каждые 2 дня обновлять список. + Создать строчку "0 12 * * */2 /opt/zapret/ipset/get_antizapret.sh". Это значит в 12:00 каждые 2 дня обновлять список. Если у вас linux x64, то вместо компиляции toolchain можно использовать пре-компилированный SDK от разработчиков openwrt. https://downloads.openwrt.org/