get_combined.sh http-https separation

This commit is contained in:
bolvan 2017-05-11 18:36:52 +03:00
parent 4331604181
commit b15afded1a
5 changed files with 48 additions and 43 deletions

View File

@ -1,3 +1,4 @@
TMPDIR=/tmp
ZIPSET=zapret ZIPSET=zapret
ZIPLIST=$EXEDIR/zapret-ip.txt ZIPLIST=$EXEDIR/zapret-ip.txt
ZIPLIST_EXCLUDE=$EXEDIR/zapret-ip-exclude.txt ZIPLIST_EXCLUDE=$EXEDIR/zapret-ip-exclude.txt
@ -18,3 +19,10 @@ getuser()
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 -u >$ZIPLIST_USER_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 -u >$ZIPLIST_USER_IPBAN
} }
} }
cut_local()
{
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]+$'
}

View File

@ -8,18 +8,11 @@ EXEDIR=$(dirname $SCRIPT)
#ZURL=https://github.com/zapret-info/z-i/raw/master/dump.csv #ZURL=https://github.com/zapret-info/z-i/raw/master/dump.csv
ZURL=http://antizapret.prostovpn.org/iplist.txt ZURL=http://antizapret.prostovpn.org/iplist.txt
ZIPLISTTMP=/tmp/zapret-ip.txt ZIPLISTTMP=$TMPDIR/zapret-ip.txt
getuser getuser
#curl --fail --max-time 300 --max-filesize 33554432 -k -L "$ZURL" \ curl --fail --max-time 120 --max-filesize 10485760 -k -L "$ZURL" | cut_local >$ZIPLISTTMP &&
# | 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" \
# | 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 -u \
curl --fail --max-time 300 --max-filesize 33554432 -k -L "$ZURL" \
| 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]+$' \
>$ZIPLISTTMP &&
{ {
dlsize=$(wc -c "$ZIPLISTTMP" | cut -f 1 -d ' ') dlsize=$(wc -c "$ZIPLISTTMP" | cut -f 1 -d ' ')
if test $dlsize -lt 204800; then if test $dlsize -lt 204800; then

View File

@ -6,36 +6,37 @@ EXEDIR=$(dirname $SCRIPT)
. "$EXEDIR/def.sh" . "$EXEDIR/def.sh"
ZREESTR=/tmp/reestr.txt ZREESTR=$TMPDIR/reestr.txt
ZANTIZAPRET=/tmp/antizapret.txt ZURL_REESTR=http://reestr.rublacklist.net/api/current
ZURL_REESTR=http://reestr.rublacklist.net/api/ips ZAZ=$TMPDIR/zapret-ip.txt
ZURL_ANTIZAPRET=http://antizapret.prostovpn.org/iplist.txt ZURL_AZ=http://antizapret.prostovpn.org/iplist.txt
getuser getuser
curl --fail --max-time 300 --max-filesize 41943040 "$ZURL_REESTR" | # assume all https banned by ip
grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | curl --fail --max-time 300 --max-filesize 41943040 "$ZURL_REESTR" -o $ZREESTR
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 -u >$ZREESTR
dlsize=$(wc -c "$ZREESTR" | cut -f 1 -d ' ') dlsize=$(wc -c "$ZREESTR" | cut -f 1 -d ' ')
if test $dlsize -lt 10240; then if test $dlsize -lt 1048576; then
echo reestr ip list is too small. can be bad. echo reestr ip list is too small. can be bad.
exit 2 exit 2
fi fi
curl --fail --max-time 300 --max-filesize 33554432 -k -L "$ZURL_ANTIZAPRET" | sed -i 's/\\n/\r\n/g' $ZREESTR
grep -vE '^192\.168\.[0-9]+\.[0-9]+$' | grep "https://" $ZREESTR |
grep -vE '^127\.[0-9]+\.[0-9]+\.[0-9]+$' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |
grep -vE '^10\.[0-9]+\.[0-9]+\.[0-9]+$' >$ZANTIZAPRET cut_local |
dlsize=$(wc -c "$ZANTIZAPRET" | cut -f 1 -d ' ') sort -u >$ZIPLIST_IPBAN
if test $dlsize -lt 10240; then
echo antizapret ip list is too small. can be bad. rm -f $ZREESTR
curl --fail --max-time 120 --max-filesize 10485760 -k -L "$ZURL_AZ" | cut_local >$ZAZ &&
{
dlsize=$(wc -c "$ZAZ" | cut -f 1 -d ' ')
if test $dlsize -lt 204800; then
echo antizapret list file is too small. can be bad.
exit 2 exit 2
fi fi
# do not include hosts banned by ip
grep -vFf $ZREESTR $ZANTIZAPRET >$ZIPLIST grep -vFf $ZIPLIST_IPBAN $ZAZ >$ZIPLIST
mv -f $ZREESTR $ZIPLIST_IPBAN rm -f $ZAZ
rm -f $ZANTIZAPRET "$EXEDIR/create_ipset.sh"
}
"$EXEDIR/create_ipset.sh"

View File

@ -6,9 +6,9 @@ EXEDIR=$(dirname $SCRIPT)
. "$EXEDIR/def.sh" . "$EXEDIR/def.sh"
ZREESTR=/tmp/zapret.txt ZREESTR=$TMPDIR/zapret.txt
ZDIG=/tmp/zapret-dig.txt ZDIG=$TMPDIR/zapret-dig.txt
ZIPLISTTMP=/tmp/zapret-ip.txt ZIPLISTTMP=$TMPDIR/zapret-ip.txt
ZURL=http://reestr.rublacklist.net/api/current ZURL=http://reestr.rublacklist.net/api/current
getuser getuser

View File

@ -126,9 +126,9 @@ tpws - это transparent proxy.
Провайдеры Провайдеры
---------- ----------
mns.ru : нужна замена window size на 3. mns.ru убирает заблокированные домены из выдачи своих DNS серверов. меняем на сторонние. аплинк westcall банит некоторые сайты по IP адресу, закономерность не ясна. mns.ru : нужна замена window size на 3. mns.ru убирает заблокированные домены из выдачи своих DNS серверов. меняем на сторонние. аплинк westcall банит по IP адреса из списка РКН, где присутствует https
at-home.ru : при дефолтном подключении все блокировалось по IP. после заказа внешнего IP (static NAT) по IP блокируются немногие сайты. закономерность не ясна. at-home.ru : при дефолтном подключении все блокировалось по IP. после заказа внешнего IP (static NAT) банятся по IP https адреса
Для обхода DPI работает замена windows size на 3, но была замечена нестабильность и подвисания. Лучше всего работает сплит запроса около метода в течение всей http сессии. Для обхода DPI работает замена windows size на 3, но была замечена нестабильность и подвисания. Лучше всего работает сплит запроса около метода в течение всей http сессии.
В https подменяется сертификат. Если у вас все блокируется по IP, то нет никакого способа, кроме как проксирование порта 80 по аналогии с 443. В https подменяется сертификат. Если у вас все блокируется по IP, то нет никакого способа, кроме как проксирование порта 80 по аналогии с 443.
@ -184,13 +184,16 @@ tiera : Требуется сплит http запросов в течение в
от IP адреса. Поэтому скрипт ресолвит все сам, хотя это и занимает много времени. от IP адреса. Поэтому скрипт ресолвит все сам, хотя это и занимает много времени.
Дополнительное требование - объем памяти в /tmp для сохранения туда скачанного файла, размер которого Дополнительное требование - объем памяти в /tmp для сохранения туда скачанного файла, размер которого
несколько Мб и продолжает расти. На роутерах openwrt /tmp представляет собой tmpfs , то есть ramdisk. несколько Мб и продолжает расти. На роутерах openwrt /tmp представляет собой tmpfs , то есть ramdisk.
В случае роутера с 32 мб памяти ее может не хватить, и будут проблемы. В этом случае используйте В случае роутера с 32 мб памяти ее не хватит, и будут проблемы. В этом случае используйте
следующий скрипт. следующий скрипт.
3) ipset/get_anizapret.sh. быстро и без нагрузки на роутер получает лист с https://github.com/zapret-info . 3) ipset/get_anizapret.sh. быстро и без нагрузки на роутер получает лист с antizapret.prostovpn.org.
4) ipset/get_combined.sh. для провайдеров, которые блокируют по IP https, а остальное по DPI. IP https заносится в ipset ipban, остальные в ipset zapret.
Поскольку скачивается большой список РКН, требования к месту в /tmp аналоичны 2)
Все варианты рассмотренных скриптов автоматически создают и заполняют ipset. Все варианты рассмотренных скриптов автоматически создают и заполняют ipset.
Варианты 2 и 3 дополнительно вызывают вариант 1. Варианты 2-4 дополнительно вызывают вариант 1.
На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет
либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку. либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку.
@ -201,7 +204,7 @@ tiera : Требуется сплит http запросов в течение в
Можно внести список доменов в ipset/zapret-hosts-user-ipban.txt. Их ip адреса будут помещены Можно внести список доменов в ipset/zapret-hosts-user-ipban.txt. Их ip адреса будут помещены
в отдельный ipset "ipban". Он может использоваться для принудительного завертывания всех в отдельный ipset "ipban". Он может использоваться для принудительного завертывания всех
соединений на прозрачный proxy "redsocks". соединений на прозрачный proxy "redsocks" или на VPN.
Пример установки на debian 7 Пример установки на debian 7