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
ZIPLIST=$EXEDIR/zapret-ip.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
}
}
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=http://antizapret.prostovpn.org/iplist.txt
ZIPLISTTMP=/tmp/zapret-ip.txt
ZIPLISTTMP=$TMPDIR/zapret-ip.txt
getuser
#curl --fail --max-time 300 --max-filesize 33554432 -k -L "$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" \
# | 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 &&
curl --fail --max-time 120 --max-filesize 10485760 -k -L "$ZURL" | cut_local >$ZIPLISTTMP &&
{
dlsize=$(wc -c "$ZIPLISTTMP" | cut -f 1 -d ' ')
if test $dlsize -lt 204800; then

View File

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

View File

@ -6,9 +6,9 @@ EXEDIR=$(dirname $SCRIPT)
. "$EXEDIR/def.sh"
ZREESTR=/tmp/zapret.txt
ZDIG=/tmp/zapret-dig.txt
ZIPLISTTMP=/tmp/zapret-ip.txt
ZREESTR=$TMPDIR/zapret.txt
ZDIG=$TMPDIR/zapret-dig.txt
ZIPLISTTMP=$TMPDIR/zapret-ip.txt
ZURL=http://reestr.rublacklist.net/api/current
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 сессии.
В https подменяется сертификат. Если у вас все блокируется по IP, то нет никакого способа, кроме как проксирование порта 80 по аналогии с 443.
@ -184,13 +184,16 @@ tiera : Требуется сплит http запросов в течение в
от IP адреса. Поэтому скрипт ресолвит все сам, хотя это и занимает много времени.
Дополнительное требование - объем памяти в /tmp для сохранения туда скачанного файла, размер которого
несколько Мб и продолжает расти. На роутерах 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.
Варианты 2 и 3 дополнительно вызывают вариант 1.
Варианты 2-4 дополнительно вызывают вариант 1.
На роутерах не рекомендуется вызывать эти скрипты чаще раза за 2 суток, поскольку сохранение идет
либо во внутреннюю флэш память роутера, либо в случае extroot - на флэшку.
@ -201,7 +204,7 @@ tiera : Требуется сплит http запросов в течение в
Можно внести список доменов в ipset/zapret-hosts-user-ipban.txt. Их ip адреса будут помещены
в отдельный ipset "ipban". Он может использоваться для принудительного завертывания всех
соединений на прозрачный proxy "redsocks".
соединений на прозрачный proxy "redsocks" или на VPN.
Пример установки на debian 7