readme: rewrite badsum limitations

This commit is contained in:
bol-van
2021-05-22 20:47:15 +03:00
parent 01e72a8e39
commit 3f217b55ae
2 changed files with 19 additions and 15 deletions

View File

@@ -222,21 +222,25 @@ nfqws
* badsum не сработает, если ваше устройство за NAT, который не пропускает пакеты с инвалидной суммой.
Наиболее распространенная настройка NAT роутера в Linux их не пропускает. На Linux построено большинство
домашних роутеров. Непропускание обеспечивается так : настройка ядра sysctl по умолчанию
net.netfilter.nf_conntrack_checksum=1 заставляет conntrack проверять tcp и udp чексуммы и выставлять
state INVALID для пакетов с инвалидной суммой.
Обычно в правилах iptables вставляется правило для дропа пакетов с состоянием INVALID либо только в FORWARD,
либо в FORWARD и OUTPUT. Совместное сочетание этих факторов приводит к непрохождению badsum через такой роутер,
а при наличии дропа INVALID в OUTPUT и к неработоспособности nfqws с badsum с самого роутера.
net.netfilter.nf_conntrack_checksum=1 заставляет conntrack проверять tcp и udp чексуммы входящих пакетов
и выставлять state INVALID для пакетов с инвалидной суммой.
Обычно в правилах iptables вставляется правило для дропа пакетов с состоянием INVALID в цепочке FORWARD.
Совместное сочетание этих факторов приводит к непрохождению badsum через такой роутер,
В openwrt из коробки net.netfilter.nf_conntrack_checksum=0, в других роутерах часто нет,
и не всегда это можно изменить. Чтобы nfqws мог работать, нужно выставить указанное значение sysctl в 0 на роутере.
и не всегда это можно изменить. Чтобы nfqws мог работать через роутер, нужно на нем выставить указанное
значение sysctl в 0. nfqws на самом роутере будет работать и без этой настройки, потому что
чексумма локально созданных пакетов не проверяется никогда.
Если роутер за другим NAT, например провайдерским, и он не пропускает invalid packets
вы ничего не сможете с этим сделать. Но обычно провайдеры все же пропускают badsum.
* пакеты с badseq будут наверняка отброшены принимающим узлом, но так же и DPI, если он ориентируется на sequence numbers
* TTL казалось бы - лучший вариант, но он требует индивидуальной настройки под каждого провайдера. Если DPI находится дальше локальных
сайтов провайдера, то вы можете отрезать себе доступ к ним. Необходим ip exclude list, заполняемый вручную.
Вместе с ttl можно применять md5sig. Это ничего не испортит, зато дает неплохой шанс работы сайтов, до которых "плохой" пакет дойдет по TTL.
* пакеты с badseq будут наверняка отброшены принимающим узлом, но так же и DPI, если он ориентируется
на sequence numbers
* TTL казалось бы - лучший вариант, но он требует индивидуальной настройки под каждого провайдера.
Если DPI находится дальше локальных сайтов провайдера, то вы можете отрезать себе доступ к ним.
Необходим ip exclude list, заполняемый вручную. Вместе с ttl можно применять md5sig. Это ничего не испортит,
зато дает неплохой шанс работы сайтов, до которых "плохой" пакет дойдет по TTL.
Если не удается найти автоматическое решение, воспользуйтесь файлом zapret-hosts-user-exclude.txt.
КАКИМ СТОИТ ВЫБИРАТЬ TTL : найдите минимальное значение, при котором обход еще работает. Это и будет номер хопа вашего DPI.
КАКИМ СТОИТ ВЫБИРАТЬ TTL : найдите минимальное значение, при котором обход еще работает.
Это и будет номер хопа вашего DPI.
Режимы дурения могут сочетаться в любых комбинациях. --dpi-desync-fooling берет множество значений через запятую.