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)
|
- [IPTABLES ДЛЯ TPWS](#iptables-для-tpws)
|
||||||
- [NFTABLES ДЛЯ TPWS](#nftables-для-tpws)
|
- [NFTABLES ДЛЯ TPWS](#nftables-для-tpws)
|
||||||
- [Способы получения списка заблокированных IP](#способы-получения-списка-заблокированных-ip)
|
|
||||||
- [ip2net](#ip2net)
|
- [ip2net](#ip2net)
|
||||||
- [mdig](#mdig)
|
- [mdig](#mdig)
|
||||||
|
- [Способы получения списка заблокированных IP](#способы-получения-списка-заблокированных-ip)
|
||||||
- [Фильтрация по именам доменов](#фильтрация-по-именам-доменов)
|
- [Фильтрация по именам доменов](#фильтрация-по-именам-доменов)
|
||||||
- [Режим фильтрации autohostlist](#режим-фильтрации-autohostlist)
|
- [Режим фильтрации 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
|
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
|
## Способы получения списка заблокированных IP
|
||||||
|
|
||||||
@ -1225,79 +1297,6 @@ ipfw таблицы в отличие от ipset могут содержать
|
|||||||
Это особенно полезно на BSD системах с PF.
|
Это особенно полезно на BSD системах с PF.
|
||||||
LISTS_RELOAD=- отключает перезагрузку листов.
|
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 со списком доменов.
|
Альтернативой ipset является использование tpws или nfqws со списком доменов.
|
||||||
|
Loading…
Reference in New Issue
Block a user