|
|
@ -7,7 +7,7 @@ |
|
|
|
* [Сборка](#сборка) |
|
|
|
* [Divert сокеты](#divert-сокеты) |
|
|
|
* [Lookup Tables](#lookup-tables) |
|
|
|
* [PF с файла](#pf-с-файла) |
|
|
|
* [Загрузка ip таблиц из файла](#загрузка-ip-таблиц-из-файла) |
|
|
|
* [Отсутствие splice](#отсутствие-splice) |
|
|
|
* [mdig и ip2net](#mdig-и-ip2net) |
|
|
|
* [FreeBSD](#freebsd) |
|
|
@ -23,7 +23,6 @@ |
|
|
|
* [Запуск dvtws](#запуск-dvtws) |
|
|
|
* [Проблемы с badsum](#проблемы-с-badsum) |
|
|
|
* [Особенность отправки fake пакетов](#особенность-отправки-fake-пакетов) |
|
|
|
* [Возможная оптимизация трафика](#возможная-оптимизация-трафика) |
|
|
|
* [Перезагрузка PF таблиц](#перезагрузка-pf-таблиц) |
|
|
|
* [MacOS](#macos) |
|
|
|
* [Введение](#введение) |
|
|
@ -99,7 +98,7 @@ tables. Это прямой аналог ipset. lookup tables не раздел |
|
|
|
выполняется команда из `LISTS_RELOAD`. В противном случае не делается ничего. |
|
|
|
Если `LISTS_RELOAD=-`, то заполнение таблиц отключается даже при наличии ipfw. |
|
|
|
|
|
|
|
### PF с файла |
|
|
|
### Загрузка ip таблиц из файла |
|
|
|
PF может загружать ip таблицы из файла. Чтобы использовать эту возможность |
|
|
|
следует отключить сжатие gzip для листов через параметр файла config: |
|
|
|
`GZIP_LISTS=0`. |
|
|
@ -168,8 +167,7 @@ $ ipfw add 100 fwd ::1,988 tcp from any to any 80,443 proto ip6 recv em1 |
|
|
|
$ /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 |
|
|
|
``` |
|
|
|
|
|
|
|
#### Трафик только на таблицу zapret |
|
|
|
> За исключением таблицы nozapret |
|
|
|
#### Трафик только на таблицу zapret, за исключением таблицы nozapret |
|
|
|
|
|
|
|
```sh |
|
|
|
$ ipfw delete 100 |
|
|
@ -214,8 +212,7 @@ $ ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not div |
|
|
|
$ /opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 |
|
|
|
``` |
|
|
|
|
|
|
|
#### Трафик только на таблицу zapret |
|
|
|
> За исключением таблицы nozapret |
|
|
|
#### Трафик только на таблицу zapret, за исключением таблицы nozapret |
|
|
|
|
|
|
|
```sh |
|
|
|
$ ipfw delete 100 |
|
|
@ -259,19 +256,17 @@ $ /opt/zapret/nfq/dvtws --port=989 --dpi-desync=split2 |
|
|
|
|
|
|
|
### pfsense |
|
|
|
|
|
|
|
#### Что это |
|
|
|
#### Описание |
|
|
|
pfsense основан на **FreeBSD** и использует фаервол PF, имеющий проблемы с |
|
|
|
divert. К счастью, модули ipfw и ipdivert присутствуют в поставке последних |
|
|
|
версий pfsense. Их можно подгрузить через `kldload`. |
|
|
|
|
|
|
|
#### Особенности |
|
|
|
В некоторых более старых версиях pfsense требуется изменить порядок фаерволов |
|
|
|
через `sysctl`, сделав ipfw первым. В более новых эти параметры `sysctl` |
|
|
|
отсутствуют, но система работает как надо и без них. В некоторых случаях |
|
|
|
фаервол PF может ограничивать возможности `dvtws`, в частности в области |
|
|
|
фрагментации ip. |
|
|
|
|
|
|
|
#### Исполняемые файлы |
|
|
|
Присутствуют по умолчанию правила scrub для реассемблинга фрагментов. Бинарики |
|
|
|
из [`binaries/freebsd-x64`](../binaries/freebsd-x64) собраны под **FreeBSD |
|
|
|
11**. Они должны работать и на последующих версиях **FreeBSD**, включая |
|
|
@ -428,8 +423,7 @@ $ pfctl -f /etc/pf.conf |
|
|
|
$ ./dvtws --port=989 --dpi-desync=split2 |
|
|
|
``` |
|
|
|
|
|
|
|
#### Трафик только на таблицу zapret |
|
|
|
> За исключением таблицы nozapret |
|
|
|
#### Трафик только на таблицу zapret, за исключением таблицы nozapret |
|
|
|
|
|
|
|
`/etc/pf.conf`: |
|
|
|
``` |
|
|
@ -474,8 +468,6 @@ $ ./dvtws --port=989 --dpi-desync=split2 |
|
|
|
предотвращает повторный заворот diverted фреймов, поэтому проблемы зацикливания |
|
|
|
нет. |
|
|
|
|
|
|
|
|
|
|
|
### Возможная оптимизация трафика |
|
|
|
divert-packet автоматически вносит обратное правило для перенаправления. Трюк с |
|
|
|
no state и in правилом позволяет обойти эту проблему, чтобы напрасно не гнать |
|
|
|
массивный трафик через `dvtws`. |
|
|
@ -621,12 +613,6 @@ local. Скрывать link local не имеет смысла, а динами |
|
|
|
$ make -C /opt/zapret mac |
|
|
|
``` |
|
|
|
|
|
|
|
> [!IMPORTANT] |
|
|
|
> Скрипты получения листов [`ipset/*.sh`](../ipset/) работают. Если будете |
|
|
|
> пользоваться [`get_combined.sh`](../ipset/get_combined.sh), нужно установить |
|
|
|
> GNU grep через `brew`. Имеющийся очень старый и безумно медленный с оцией |
|
|
|
> `-f`. |
|
|
|
|
|
|
|
|
|
|
|
### Простая установка |
|
|
|
В **MacOS** поддерживается `install_easy.sh` |
|
|
|