From d3e53ebede9c95b0ef5c61bff78f1213db9ae0d2 Mon Sep 17 00:00:00 2001 From: bolvan Date: Wed, 16 Mar 2016 08:33:26 +0300 Subject: [PATCH] ipset optimizations --- changes.txt | 4 ++++ ipset/def.sh | 10 ++++++++++ ipset/get_antizapret.sh | 2 +- ipset/get_reestr.sh | 2 +- ipset/get_user.sh | 6 ++---- ipset/get_user_ipban.sh | 11 ----------- readme.txt | 17 +++++++++++++---- 7 files changed, 31 insertions(+), 21 deletions(-) delete mode 100755 ipset/get_user_ipban.sh diff --git a/changes.txt b/changes.txt index 9a263b2..97583ab 100644 --- a/changes.txt +++ b/changes.txt @@ -53,3 +53,7 @@ ISP support : added DNS filtering to ubuntu and debian scripts v10 tpws : added split-pos option. split every message at specified position + +v11 + +ipset : scripts optimizations diff --git a/ipset/def.sh b/ipset/def.sh index 42c85d5..158371a 100755 --- a/ipset/def.sh +++ b/ipset/def.sh @@ -7,3 +7,13 @@ ZIPSET_IPBAN=ipban ZIPLIST_IPBAN=$EXEDIR/zapret-ip-ipban.txt ZIPLIST_USER_IPBAN=$EXEDIR/zapret-ip-user-ipban.txt ZUSERLIST_IPBAN=$EXEDIR/zapret-hosts-user-ipban.txt + +getuser() +{ + [ -f $ZUSERLIST ] && { + dig A +short +time=8 +tries=2 -f $ZUSERLIST | grep -E '^[^;].*[^.]$' | grep -vE '^192.168.[0-9]*.[0-9]*$' | grep -vE '^127.[0-9]*.[0-9]*.[0-9]*$' | grep -vE '^10.[0-9]*.[0-9]*.[0-9]*$' | sort | uniq >$ZIPLIST_USER + } + [ -f $ZUSERLIST_IPBAN ] && { + dig A +short +time=8 +tries=2 -f $ZUSERLIST_IPBAN | grep -E '^[^;].*[^.]$' | grep -vE '^192.168.[0-9]*.[0-9]*$' | grep -vE '^127.[0-9]*.[0-9]*.[0-9]*$' | grep -vE '^10.[0-9]*.[0-9]*.[0-9]*$' | sort | uniq >$ZIPLIST_USER_IPBAN + } +} \ No newline at end of file diff --git a/ipset/get_antizapret.sh b/ipset/get_antizapret.sh index 3cceb9a..bd7fb64 100755 --- a/ipset/get_antizapret.sh +++ b/ipset/get_antizapret.sh @@ -9,7 +9,7 @@ EXEDIR=$(dirname $SCRIPT) ZURL=http://antizapret.prostovpn.org/proxy.pac ZIPLISTTMP=/tmp/zapret-ip.txt -$EXEDIR/get_user.sh +getuser 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\n/gp" | sed -nre "s/^[^0-9]*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*$/\1/p" >$ZIPLISTTMP && { diff --git a/ipset/get_reestr.sh b/ipset/get_reestr.sh index 8f27ecb..ef332e7 100755 --- a/ipset/get_reestr.sh +++ b/ipset/get_reestr.sh @@ -11,7 +11,7 @@ ZDIG=/tmp/zapret-dig.txt ZIPLISTTMP=/tmp/zapret-ip.txt ZURL=http://reestr.rublacklist.net/api/current -$EXEDIR/get_user.sh +getuser curl --fail --max-time 60 --max-filesize 20971520 "$ZURL" >$ZREESTR && { dlsize=$(wc -c "$ZREESTR" | cut -f 1 -d ' ') diff --git a/ipset/get_user.sh b/ipset/get_user.sh index 6276fde..e1646ce 100755 --- a/ipset/get_user.sh +++ b/ipset/get_user.sh @@ -6,8 +6,6 @@ EXEDIR=$(dirname $SCRIPT) . "$EXEDIR/def.sh" -$EXEDIR/get_user_ipban.sh +getuser -[ -f $ZUSERLIST ] && { - dig A +short +time=8 +tries=2 -f $ZUSERLIST | grep -E '^[^;].*[^.]$' | grep -vE '^192.168.[0-9]*.[0-9]*$' | grep -vE '^127.[0-9]*.[0-9]*.[0-9]*$' | grep -vE '^10.[0-9]*.[0-9]*.[0-9]*$' | sort | uniq >$ZIPLIST_USER -} +"$EXEDIR/create_ipset.sh" diff --git a/ipset/get_user_ipban.sh b/ipset/get_user_ipban.sh deleted file mode 100755 index 0ba8fa2..0000000 --- a/ipset/get_user_ipban.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -# resolve user host list - -SCRIPT=$(readlink -f $0) -EXEDIR=$(dirname $SCRIPT) - -. "$EXEDIR/def.sh" - -[ -f $ZUSERLIST_IPBAN ] && { - dig A +short +time=8 +tries=2 -f $ZUSERLIST_IPBAN | grep -E '^[^;].*[^.]$' | grep -vE '^192.168.[0-9]*.[0-9]*$' | grep -vE '^127.[0-9]*.[0-9]*.[0-9]*$' | grep -vE '^10.[0-9]*.[0-9]*.[0-9]*$' | sort | uniq >$ZIPLIST_USER_IPBAN -} diff --git a/readme.txt b/readme.txt index d4d92b4..73a16c5 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,5 @@ -zapret v.10 +zapret v.11 + Для чего это надо ----------------- @@ -115,6 +116,7 @@ tpws - это transparent proxy. --hostdot ; добавление точки после имени хоста : "Host: kinozal.tv." --methodspace ; добавить пробел после метода : "GET /" => "GET /" Параметры манипуляции могут сочетаться в любых комбинациях. +Есть исключение : split-pos заменяет split-http-req. Провайдеры ---------- @@ -152,17 +154,23 @@ tiera : сама тиера до последнего ничего не бани несколько Мб и продолжает расти. На роутерах openwrt /tmp представляет собой tmpfs , то есть ramdisk. В случае роутера с 32 мб памяти ее может не хватить, и будут проблемы. В этом случае используйте следующий скрипт. -Скрипт автоматически вызывает ipset/get_user.sh и обновляет ipset 3) ipset/get_anizapret.sh. быстро и без нагрузки на роутер получает лист с http://antizapret.prostovpn.org. -Скрипт автоматически вызывает ipset/get_user.sh и обновляет ipset + +Все варианты рассмотренных скриптов автоматически создают и заполняют ipset. +Варианты 2 и 3 дополнительно вызывают вариант 1. На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку. В обоих случаях слишком частая запись может убить флэшку, но если это произойдет с внутренней флэш памятью, то вы просто убьете роутер. -Обновление ipset выполняет скрипт ipset/create_ipset.sh +Принудительное обновление ipset выполняет скрипт ipset/create_ipset.sh + +Можно внести список доменов в ipset/zapret-hosts-user-ipban.txt. Их ip адреса будут помещены +в отдельный ipset "ipban". Он может использоваться для принудительного завертывания всех +соединений на прозрачный proxy "redsocks". + Пример установки на debian 7 ---------------------------- @@ -207,6 +215,7 @@ ubuntu 12,14 Имеется готовый конфиг для upstart : zapret.conf. Его нужно скопировать в /etc/init и настроить по аналогии с debian. Запуск службы : "start zapret" Останов службы : "stop zapret" +Ubuntu 12 так же, как и debian 7, оснащено ядром 3.2. См замечание в разделе "debian 7". Другие linux системы --------------------