mirror of
https://github.com/bol-van/zapret.git
synced 2025-01-06 08:20:34 +05:00
readme: iptables-nft recompile info
This commit is contained in:
parent
fc3858209d
commit
eda06277cb
@ -426,14 +426,25 @@ Looks like kernels <4.16 have no simple way to solve this problem. Unloading of
|
|||||||
and its dependency nf_defrag_ipv6 helps but this severely impacts functionality.
|
and its dependency nf_defrag_ipv6 helps but this severely impacts functionality.
|
||||||
Kernels 4.16+ exclude from defragmentation untracked packets.
|
Kernels 4.16+ exclude from defragmentation untracked packets.
|
||||||
See `blockcheck.sh` code for example.
|
See `blockcheck.sh` code for example.
|
||||||
|
|
||||||
Sometimes it's required to load `ip6table_raw` kernel module with parameter raw_before_defrag=1.
|
Sometimes it's required to load `ip6table_raw` kernel module with parameter raw_before_defrag=1.
|
||||||
In openwrt module parameters are specified after module names separated by space in files located in `/etc/modules.d`.
|
In openwrt module parameters are specified after module names separated by space in files located in `/etc/modules.d`.
|
||||||
In traditional linux first check if the problem actually exists using tcpdump or wireshark.
|
|
||||||
If it does check whether iptables-legacy or iptables-nft are used. If legacy create the file
|
In traditional linux check whether iptables-legacy or iptables-nft are used. If legacy create the file
|
||||||
`/etc/modprobe.d/ip6table_raw.conf` with the following content :
|
`/etc/modprobe.d/ip6table_raw.conf` with the following content :
|
||||||
```
|
```
|
||||||
options ip6table_raw raw_before_defrag=1
|
options ip6table_raw raw_before_defrag=1
|
||||||
```
|
```
|
||||||
|
In some linux distros its possible to change current ip6tables using this command: update-alternatives --config ip6tables
|
||||||
|
If you want to stay with nftables-nft you need to patch and recompile your version.
|
||||||
|
In nft.c find :
|
||||||
|
```
|
||||||
|
name= "PREROUTING",
|
||||||
|
type = "filter",
|
||||||
|
prio = -300, /* NF_IP_PRI_RAW */
|
||||||
|
```
|
||||||
|
and replace -300 to -450.
|
||||||
|
|
||||||
It must be done manually, `blockcheck.sh` cannot auto fix this for you.
|
It must be done manually, `blockcheck.sh` cannot auto fix this for you.
|
||||||
|
|
||||||
## tpws
|
## tpws
|
||||||
|
@ -455,19 +455,29 @@ IP ФРАГМЕНТАЦИЯ
|
|||||||
Смещение считается с транспортного заголовка.
|
Смещение считается с транспортного заголовка.
|
||||||
|
|
||||||
Существует ряд моментов вокруг работы с фрагментами на Linux, без понимания которых может ничего не получиться.
|
Существует ряд моментов вокруг работы с фрагментами на Linux, без понимания которых может ничего не получиться.
|
||||||
|
|
||||||
ipv4 : Linux дает отсылать ipv4 фрагменты, но стандартные настройки iptables в цепочке OUTPUT могут вызывать ошибки отправки.
|
ipv4 : Linux дает отсылать ipv4 фрагменты, но стандартные настройки iptables в цепочке OUTPUT могут вызывать ошибки отправки.
|
||||||
|
|
||||||
ipv6 : Нет способа для приложения гарантированно отослать фрагменты без дефрагментации в conntrack.
|
ipv6 : Нет способа для приложения гарантированно отослать фрагменты без дефрагментации в conntrack.
|
||||||
На разных системах получается по-разному. Где-то нормально уходят, где-то пакеты дефрагментируются.
|
На разных системах получается по-разному. Где-то нормально уходят, где-то пакеты дефрагментируются.
|
||||||
Для ядер <4.16 похоже, что нет иного способа решить эту проблему, кроме как выгрузить модуль nf_conntrack,
|
Для ядер <4.16 похоже, что нет иного способа решить эту проблему, кроме как выгрузить модуль nf_conntrack,
|
||||||
который подтягивает зависимость nf_defrag_ipv6. Он то как раз и выполняет дефрагментацию.
|
который подтягивает зависимость nf_defrag_ipv6. Он то как раз и выполняет дефрагментацию.
|
||||||
Для ядер 4.16+ ситуация чуть лучше. Из дефрагментации исключаются пакеты в состоянии NOTRACK.
|
Для ядер 4.16+ ситуация чуть лучше. Из дефрагментации исключаются пакеты в состоянии NOTRACK.
|
||||||
Чтобы не загромождать описание, смотрите пример решения этой проблемы в blockcheck.sh.
|
Чтобы не загромождать описание, смотрите пример решения этой проблемы в blockcheck.sh.
|
||||||
|
|
||||||
Иногда требуется подгружать модуль ip6table_raw с параметром raw_before_defrag=1.
|
Иногда требуется подгружать модуль ip6table_raw с параметром raw_before_defrag=1.
|
||||||
В openwrt параметры модулей указываются через пробел после их названий в файлах /etc/modules.d.
|
В openwrt параметры модулей указываются через пробел после их названий в файлах /etc/modules.d.
|
||||||
В традиционных linux нужно сначала оценить есть ли вообще эта проблема через tcpdump или wireshark.
|
В традиционных система посмотрите используется ли iptables-legacy или iptables-nft. Если legacy, то нужно создать файл
|
||||||
Если есть, то посмотреть используется ли iptables-legacy или iptables-nft. Если legacy, то нужно создать файл
|
|
||||||
/etc/modprobe.d/ip6table_raw.conf с содержимым :
|
/etc/modprobe.d/ip6table_raw.conf с содержимым :
|
||||||
options ip6table_raw raw_before_defrag=1
|
options ip6table_raw raw_before_defrag=1
|
||||||
|
В некоторых традиционных дистрибутивах можно изменить текущий ip6tables через : update-alternatives --config ip6tables
|
||||||
|
Если вы хотите оставаться на iptables-nft, вам придется пересобрать патченную версию. Патч совсем небольшой.
|
||||||
|
В nft.c найдите фрагмент :
|
||||||
|
name= "PREROUTING",
|
||||||
|
type = "filter",
|
||||||
|
prio = -300, /* NF_IP_PRI_RAW */
|
||||||
|
и замените -300 на -450.
|
||||||
|
|
||||||
Это нужно сделать вручную, никакой автоматики в blockcheck.sh нет.
|
Это нужно сделать вручную, никакой автоматики в blockcheck.sh нет.
|
||||||
|
|
||||||
tpws
|
tpws
|
||||||
|
Loading…
Reference in New Issue
Block a user