From fe26745502a1c6c9a30710f65708a454560b1acc Mon Sep 17 00:00:00 2001 From: bol-van Date: Sun, 11 Dec 2022 12:17:21 +0300 Subject: [PATCH] get_reestr_preresolved --- docs/readme.txt | 38 +++++++++++----------- install_easy.sh | 2 +- ipset/get_reestr_preresolved.sh | 45 +++++++++++++++++++++++++++ ipset/get_reestr_preresolved_smart.sh | 45 +++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 21 deletions(-) create mode 100755 ipset/get_reestr_preresolved.sh create mode 100755 ipset/get_reestr_preresolved_smart.sh diff --git a/docs/readme.txt b/docs/readme.txt index 551b44f..9a412ea 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -695,42 +695,38 @@ Cкрипты с названием get_reestr_* оперируют дампом банят по IP : вместо этого они банят http запросы с "нехорошим" заголовком "Host:" вне зависимости от IP адреса. Поэтому скрипт ресолвит все сам, хотя это и занимает много времени. Используется мультипоточный ресолвер mdig (собственная разработка). -Реестр РКН уже настолько огромен, что однопоточный ресолв займет вечность, а многопоточный хоть и тоже много времени, -но хотя бы оно конечно. -На роутерах с небольшим объемом RAM может сработать только с TMPDIR на внешнем носителе 3) ipset/get_reestr_ip.sh взять все IP адреса из реестра и загнать в ipset zapret/zapret6 -На роутерах с небольшим объемом RAM может сработать только с TMPDIR на внешнем носителе 4) ipset/get_reestr_combined.sh. для провайдеров, которые блокируют по IP https, а остальное по DPI. -IP https и IP без домена заносятся в ipset ipban, остальные в ipset zapret. -На роутерах с небольшим объемом RAM может сработать только с TMPDIR на внешнем носителе + +5) ipset/get_reestr_preresolved.sh. то же самое, что и 2), только берется уже заресолвленый список +со стороннего ресурса. + +6) ipset/get_reestr_preresolved_smart.sh. то же самое, что и 5), с добавлением всего диапазона некоторых +автономных систем (прыгающие IP адреса из cloudflare, facebook, ...) и некоторых поддоменов блокируемых сайтов Cкрипты с названием get_antifilter_* оперируют списками адресов и масок подсетей с сайтов antifilter.network и antifilter.download : -5) ipset/get_antifilter_ip.sh. получает лист https://antifilter.download/list/ip.lst. +7) ipset/get_antifilter_ip.sh. получает лист https://antifilter.download/list/ip.lst. -6) ipset/get_antifilter_ipsmart.sh. получает лист https://antifilter.network/download/ipsmart.lst. -это умная суммаризация отдельных адресов из ip.lst по маскам от /32 до /22 -количество префиксов измеряется всего лишь десятками тысяч, потому это лучшее решение для роутера с 64 Mb RAM +8) ipset/get_antifilter_ipsmart.sh. получает лист https://antifilter.network/download/ipsmart.lst. +умная суммаризация отдельных адресов из ip.lst по маскам от /32 до /22 -7) ipset/get_antifilter_ipsum.sh. получает лист https://antifilter.download/list/ipsum.lst. -это суммаризация отдельных адресов из ip.lst по маске /24 -количество префиксов измеряется всего лишь десятками тысяч, потому можно использовать на роутерах с 64 Mb RAM +9) ipset/get_antifilter_ipsum.sh. получает лист https://antifilter.download/list/ipsum.lst. +суммаризация отдельных адресов из ip.lst по маске /24 -8) ipset/get_antifilter_ipresolve.sh. получает лист https://antifilter.download/list/ipresolve.lst. -пре-ресолвленный список, аналогичный получаемый при помощи get_reestr_resolve -сотни тысяч IP, на роутерах с 64 Mb использовать не рекомендуется +10) ipset/get_antifilter_ipresolve.sh. получает лист https://antifilter.download/list/ipresolve.lst. +пре-ресолвленный список, аналогичный получаемый при помощи get_reestr_resolve. только ipv4. -9) ipset/get_antifilter_allyouneed.sh. получает лист https://antifilter.download/list/allyouneed.lst. +11) ipset/get_antifilter_allyouneed.sh. получает лист https://antifilter.download/list/allyouneed.lst. Суммарный список префиксов, созданный из ipsum.lst и subnet.lst. -количество префиксов измеряется всего лишь десятками тысяч, потому можно использовать на роутерах с 64 Mb RAM Все варианты рассмотренных скриптов автоматически создают и заполняют ipset. -Варианты 2-9 дополнительно вызывают вариант 1. +Варианты 2-11 дополнительно вызывают вариант 1. -10) ipset/get_config.sh. этот скрипт вызывает то, что прописано в переменной GETLIST из файла config +12) ipset/get_config.sh. этот скрипт вызывает то, что прописано в переменной GETLIST из файла config Если переменная не определена, то ресолвятся лишь листы для ipset nozapret/nozapret6. Листы РКН все время изменяются. Возникают новые тенденции. Требования к RAM могут меняться. @@ -738,6 +734,8 @@ Cкрипты с названием get_antifilter_* оперируют спис Или вы можете узнать о проблеме лишь когда у вас начнет постоянно пропадать wifi, и вам придется его перезагружать каждые 2 часа (метод кувалды). +Самый щадящие варианты по RAM - get_antifilter_allyouneed.sh, get_antifilter_ipsum.sh. + Листы zapret-ip.txt и zapret-ipban.txt сохраняются в сжатом виде в файлы .gz. Это позволяет снизить их размер во много раз и сэкономить место на роутере. Отключить сжатие листов можно параметром конфига GZIP_LISTS=0. diff --git a/install_easy.sh b/install_easy.sh index 0c78d89..a8e1077 100755 --- a/install_easy.sh +++ b/install_easy.sh @@ -244,7 +244,7 @@ select_getlist() GETLISTS="get_antizapret_domains.sh get_reestr_hostlist.sh" GETLIST_DEF="get_antizapret_domains.sh" else - GETLISTS="get_user.sh get_antifilter_ip.sh get_antifilter_ipsmart.sh get_antifilter_ipsum.sh get_antifilter_ipresolve.sh get_antifilter_allyouneed.sh get_reestr_ip.sh get_reestr_combined.sh get_reestr_resolve.sh" + GETLISTS="get_user.sh get_antifilter_ip.sh get_antifilter_ipsmart.sh get_antifilter_ipsum.sh get_antifilter_ipresolve.sh get_antifilter_allyouneed.sh get_reestr_ip.sh get_reestr_combined.sh get_reestr_resolve.sh get_reestr_preresolved.sh get_reestr_preresolved_smart.sh" GETLIST_DEF="get_antifilter_allyouneed.sh" fi ask_list GETLIST "$GETLISTS" "$GETLIST_DEF" && write_config_var GETLIST diff --git a/ipset/get_reestr_preresolved.sh b/ipset/get_reestr_preresolved.sh new file mode 100755 index 0000000..663da04 --- /dev/null +++ b/ipset/get_reestr_preresolved.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + + +TMPLIST="$TMPDIR/list_nethub.txt" +URL4="http://list.nethub.fi/reestr_resolved4.txt" +URL6="http://list.nethub.fi/reestr_resolved6.txt" + + +getuser && { + [ "$DISABLE_IPV4" != "1" ] && { + curl -vH "Accept-Encoding: gzip" -k --fail --max-time 180 --connect-timeout 10 --retry 4 --max-filesize 33554432 "$URL4" | gunzip - >"$TMPLIST" || + { + echo ipv4 list download failed + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt 32768; then + echo list is too small. can be bad. + exit 2 + fi + zz "$ZIPLIST" <"$TMPLIST" + rm -f "$TMPLIST" + } + [ "$DISABLE_IPV6" != "1" ] && { + curl -H "Accept-Encoding: gzip" -k --fail --max-time 180 --connect-timeout 10 --retry 4 --max-filesize 33554432 "$URL6" | gunzip - >"$TMPLIST" || + { + echo ipv4 list download failed + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt 32768; then + echo list is too small. can be bad. + exit 2 + fi + zz "$ZIPLIST6" <"$TMPLIST" + rm -f "$TMPLIST" + } +} + +"$IPSET_DIR/create_ipset.sh" diff --git a/ipset/get_reestr_preresolved_smart.sh b/ipset/get_reestr_preresolved_smart.sh new file mode 100755 index 0000000..7287fdc --- /dev/null +++ b/ipset/get_reestr_preresolved_smart.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +IPSET_DIR="$(dirname "$0")" +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)" + +. "$IPSET_DIR/def.sh" + + +TMPLIST="$TMPDIR/list_nethub.txt" +URL4="http://list.nethub.fi/reestr_smart4.txt" +URL6="http://list.nethub.fi/reestr_smart6.txt" + + +getuser && { + [ "$DISABLE_IPV4" != "1" ] && { + curl -vH "Accept-Encoding: gzip" -k --fail --max-time 180 --connect-timeout 10 --retry 4 --max-filesize 33554432 "$URL4" | gunzip - >"$TMPLIST" || + { + echo ipv4 list download failed + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt 32768; then + echo list is too small. can be bad. + exit 2 + fi + zz "$ZIPLIST" <"$TMPLIST" + rm -f "$TMPLIST" + } + [ "$DISABLE_IPV6" != "1" ] && { + curl -H "Accept-Encoding: gzip" -k --fail --max-time 180 --connect-timeout 10 --retry 4 --max-filesize 33554432 "$URL6" | gunzip - >"$TMPLIST" || + { + echo ipv4 list download failed + exit 2 + } + dlsize=$(LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ') + if test $dlsize -lt 32768; then + echo list is too small. can be bad. + exit 2 + fi + zz "$ZIPLIST6" <"$TMPLIST" + rm -f "$TMPLIST" + } +} + +"$IPSET_DIR/create_ipset.sh"