mirror of
https://github.com/bol-van/zapret.git
synced 2025-01-31 04:20:36 +05:00
readme: move ip2net/mdig chapters
This commit is contained in:
parent
9762f2d22b
commit
2cc73de15c
147
docs/readme.md
147
docs/readme.md
@ -47,9 +47,9 @@ zapret является свободным и open source.
|
||||
- [СЛУЖЕБНЫЕ ПАРАМЕТРЫ](#служебные-параметры)
|
||||
- [IPTABLES ДЛЯ TPWS](#iptables-для-tpws)
|
||||
- [NFTABLES ДЛЯ TPWS](#nftables-для-tpws)
|
||||
- [Способы получения списка заблокированных IP](#способы-получения-списка-заблокированных-ip)
|
||||
- [ip2net](#ip2net)
|
||||
- [mdig](#mdig)
|
||||
- [Способы получения списка заблокированных IP](#способы-получения-списка-заблокированных-ip)
|
||||
- [Фильтрация по именам доменов](#фильтрация-по-именам-доменов)
|
||||
- [Режим фильтрации autohostlist](#режим-фильтрации-autohostlist)
|
||||
- [Проверка провайдера](#проверка-провайдера)
|
||||
@ -1127,6 +1127,78 @@ nft add rule inet ztest dnat_pre meta iifname $IFACE_LAN tcp dport { 80, 443 } d
|
||||
nft delete table inet ztest
|
||||
```
|
||||
|
||||
## ip2net
|
||||
|
||||
Утилита ip2net предназначена для преобразования ipv4 или ipv6 списка ip в список подсетей
|
||||
с целью сокращения размера списка. Входные данные берутся из stdin, выходные выдаются в `stdout`.
|
||||
|
||||
```
|
||||
-4 ; лист - ipv4 (по умолчанию)
|
||||
-6 ; лист - ipv6
|
||||
--prefix-length=min[-max] ; диапазон рассматриваемых длин префиксов. например : 22-30 (ipv4), 56-64 (ipv6)
|
||||
--v4-threshold=mul/div ; ipv4 : включать подсети, в которых заполнено по крайней мере mul/div адресов. например : 3/4
|
||||
--v6-threshold=N ; ipv6 : минимальное количество ip для создания подсети
|
||||
```
|
||||
В списке могут присутствовать записи вида ip/prefix и ip1-ip2. Такие записи выкидываются в stdout без изменений.
|
||||
Они принимаются командой ipset. ipset умеет для листов hash:net из ip1-ip2 делать оптимальное покрытие ip/prefix.
|
||||
ipfw из FreeBSD понимает ip/prefix, но не понимает ip1-ip2.
|
||||
ip2net фильтрует входные данные, выкидывая неправильные IP адреса.
|
||||
|
||||
Выбирается подсеть, в которой присутствует указанный минимум адресов.
|
||||
Для ipv4 минимум задается как процент от размера подсети (mul/div. например, 3/4), для ipv6 минимум задается напрямую.
|
||||
|
||||
Размер подсети выбирается следующим алгоритмом:
|
||||
Сначала в указанном диапазоне длин префиксов ищутся подсети, в которых количество адресов - максимально.
|
||||
Если таких сетей найдено несколько, берется наименьшая сеть (префикс больше).
|
||||
Например, заданы параметры v6_threshold=2 prefix_length=32-64, имеются следующие ipv6 :
|
||||
```
|
||||
1234:5678:aaaa::5
|
||||
1234:5678:aaaa::6
|
||||
1234:5678:aaac::5
|
||||
Результат будет :
|
||||
1234:5678:aaa8::/45
|
||||
```
|
||||
Эти адреса так же входят в подсеть /32. Однако, нет смысла проходиться ковровой бомбардировкой,
|
||||
когда те же самые адреса вполне влезают в /45 и их ровно столько же.
|
||||
Если изменить v6_threshold=4, то результат будет:
|
||||
```
|
||||
1234:5678:aaaa::5
|
||||
1234:5678:aaaa::6
|
||||
1234:5678:aaac::5
|
||||
```
|
||||
То есть ip не объединятся в подсеть, потому что их слишком мало.
|
||||
Если изменить `prefix_length=56-64`, результат будет:
|
||||
```
|
||||
1234:5678:aaaa::/64
|
||||
1234:5678:aaac::5
|
||||
```
|
||||
|
||||
Требуемое процессорное время для вычислений сильно зависит от ширины диапазона длин префиксов, размера искомых подсетей и длины листа.
|
||||
Если ip2net думает слишком долго, не используйте слишком большие подсети и уменьшите диапазон длин префиксов.
|
||||
Учтите, что арифметика mul/div - целочисленная. При превышении разрядной сетки 32 bit результат непредсказуем.
|
||||
Не надо делать такое: 5000000/10000000. 1/2 - гораздо лучше.
|
||||
|
||||
## mdig
|
||||
|
||||
Программа предназначена для многопоточного ресолвинга больших листов через системный DNS.
|
||||
Она берет из stdin список доменов и выводит в stdout результат ресолвинга. Ошибки выводятся в stderr.
|
||||
|
||||
```
|
||||
--threads=<threads_number> ; количество потоков. по умолчанию 1.
|
||||
--family=<4|6|46> ; выбор семейства IP адресов : ipv4, ipv6, ipv4+ipv6
|
||||
--verbose ; дебаг-лог на консоль
|
||||
--stats=N ; выводить статистику каждые N доменов
|
||||
--log-resolved=<file> ; сохранять успешно отресолвленные домены в файл
|
||||
--log-failed=<file> ; сохранять неудачно отресолвленные домены в файл
|
||||
--dns-make-query=<domain> ; вывести в stdout бинарный DNS запрос по домену. если --family=6, запрос будет AAAA, иначе A.
|
||||
--dns-parse-query ; распарсить бинарный DNS ответ и выдать все ivp4 и ipv6 адреса из него в stdout
|
||||
```
|
||||
|
||||
Параметры `--dns-make-query` и `--dns-parse-query` позволяют провести ресолвинг одного домена через произвольный канал.
|
||||
Например, следующим образом можно выполнить DoH запрос, используя лишь mdig и curl :
|
||||
```
|
||||
mdig --family=6 --dns-make-query=rutracker.org | curl --data-binary @- -H "Content-Type: application/dns-message" https://cloudflare-dns.com/dns-query | mdig --dns-parse-query
|
||||
```
|
||||
|
||||
## Способы получения списка заблокированных IP
|
||||
|
||||
@ -1225,79 +1297,6 @@ ipfw таблицы в отличие от ipset могут содержать
|
||||
Это особенно полезно на BSD системах с PF.
|
||||
LISTS_RELOAD=- отключает перезагрузку листов.
|
||||
|
||||
## ip2net
|
||||
|
||||
Утилита ip2net предназначена для преобразования ipv4 или ipv6 списка ip в список подсетей
|
||||
с целью сокращения размера списка. Входные данные берутся из stdin, выходные выдаются в `stdout`.
|
||||
|
||||
```
|
||||
-4 ; лист - ipv4 (по умолчанию)
|
||||
-6 ; лист - ipv6
|
||||
--prefix-length=min[-max] ; диапазон рассматриваемых длин префиксов. например : 22-30 (ipv4), 56-64 (ipv6)
|
||||
--v4-threshold=mul/div ; ipv4 : включать подсети, в которых заполнено по крайней мере mul/div адресов. например : 3/4
|
||||
--v6-threshold=N ; ipv6 : минимальное количество ip для создания подсети
|
||||
```
|
||||
В списке могут присутствовать записи вида ip/prefix и ip1-ip2. Такие записи выкидываются в stdout без изменений.
|
||||
Они принимаются командой ipset. ipset умеет для листов hash:net из ip1-ip2 делать оптимальное покрытие ip/prefix.
|
||||
ipfw из FreeBSD понимает ip/prefix, но не понимает ip1-ip2.
|
||||
ip2net фильтрует входные данные, выкидывая неправильные IP адреса.
|
||||
|
||||
Выбирается подсеть, в которой присутствует указанный минимум адресов.
|
||||
Для ipv4 минимум задается как процент от размера подсети (mul/div. например, 3/4), для ipv6 минимум задается напрямую.
|
||||
|
||||
Размер подсети выбирается следующим алгоритмом:
|
||||
Сначала в указанном диапазоне длин префиксов ищутся подсети, в которых количество адресов - максимально.
|
||||
Если таких сетей найдено несколько, берется наименьшая сеть (префикс больше).
|
||||
Например, заданы параметры v6_threshold=2 prefix_length=32-64, имеются следующие ipv6 :
|
||||
```
|
||||
1234:5678:aaaa::5
|
||||
1234:5678:aaaa::6
|
||||
1234:5678:aaac::5
|
||||
Результат будет :
|
||||
1234:5678:aaa8::/45
|
||||
```
|
||||
Эти адреса так же входят в подсеть /32. Однако, нет смысла проходиться ковровой бомбардировкой,
|
||||
когда те же самые адреса вполне влезают в /45 и их ровно столько же.
|
||||
Если изменить v6_threshold=4, то результат будет:
|
||||
```
|
||||
1234:5678:aaaa::5
|
||||
1234:5678:aaaa::6
|
||||
1234:5678:aaac::5
|
||||
```
|
||||
То есть ip не объединятся в подсеть, потому что их слишком мало.
|
||||
Если изменить `prefix_length=56-64`, результат будет:
|
||||
```
|
||||
1234:5678:aaaa::/64
|
||||
1234:5678:aaac::5
|
||||
```
|
||||
|
||||
Требуемое процессорное время для вычислений сильно зависит от ширины диапазона длин префиксов, размера искомых подсетей и длины листа.
|
||||
Если ip2net думает слишком долго, не используйте слишком большие подсети и уменьшите диапазон длин префиксов.
|
||||
Учтите, что арифметика mul/div - целочисленная. При превышении разрядной сетки 32 bit результат непредсказуем.
|
||||
Не надо делать такое: 5000000/10000000. 1/2 - гораздо лучше.
|
||||
|
||||
## mdig
|
||||
|
||||
Программа предназначена для многопоточного ресолвинга больших листов через системный DNS.
|
||||
Она берет из stdin список доменов и выводит в stdout результат ресолвинга. Ошибки выводятся в stderr.
|
||||
|
||||
```
|
||||
--threads=<threads_number> ; количество потоков. по умолчанию 1.
|
||||
--family=<4|6|46> ; выбор семейства IP адресов : ipv4, ipv6, ipv4+ipv6
|
||||
--verbose ; дебаг-лог на консоль
|
||||
--stats=N ; выводить статистику каждые N доменов
|
||||
--log-resolved=<file> ; сохранять успешно отресолвленные домены в файл
|
||||
--log-failed=<file> ; сохранять неудачно отресолвленные домены в файл
|
||||
--dns-make-query=<domain> ; вывести в stdout бинарный DNS запрос по домену. если --family=6, запрос будет AAAA, иначе A.
|
||||
--dns-parse-query ; распарсить бинарный DNS ответ и выдать все ivp4 и ipv6 адреса из него в stdout
|
||||
```
|
||||
|
||||
Параметры `--dns-make-query` и `--dns-parse-query` позволяют провести ресолвинг одного домена через произвольный канал.
|
||||
Например, следующим образом можно выполнить DoH запрос, используя лишь mdig и curl :
|
||||
```
|
||||
mdig --family=6 --dns-make-query=rutracker.org | curl --data-binary @- -H "Content-Type: application/dns-message" https://cloudflare-dns.com/dns-query | mdig --dns-parse-query
|
||||
```
|
||||
|
||||
## Фильтрация по именам доменов
|
||||
|
||||
Альтернативой ipset является использование tpws или nfqws со списком доменов.
|
||||
|
Loading…
Reference in New Issue
Block a user