docs: Quote additional content in linux quickstart

This commit is contained in:
maximilionus 2024-11-06 17:54:23 +03:00
parent 7ee5306d06
commit e1d417578d

View File

@ -74,161 +74,164 @@
проблемы, обход будет работать только для тех программ или ОС, которые сами проблемы, обход будет работать только для тех программ или ОС, которые сами
реализуют механизмы SecureDNS. Для других программ обход работать не будет. реализуют механизмы SecureDNS. Для других программ обход работать не будет.
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо > Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо
заменой DNS серверов от провайдера на публичные (`1.1.1.1`, `8.8.8.8`), либо > заменой DNS серверов от провайдера на публичные (`1.1.1.1`, `8.8.8.8`),
в случае перехвата провайдером обращений к сторонним серверам - через > либо в случае перехвата провайдером обращений к сторонним серверам - через
специальные средства шифрования DNS запросов, такие как `dnscrypt`, `DoT`, > специальные средства шифрования DNS запросов, такие как `dnscrypt`, `DoT`,
`DoH`. > `DoH`.
>
> Еще один эффективный вариант - использовать ресолвер от yandex
> (`77.88.8.88`) на нестандартном порту `1253`. Многие провайдеры не
> анализируют обращения к DNS на нестандартных портах.
>
> Проверить работает ли этот вариант можно так:
> ```sh
> $ dig -p 53 @77.88.8.88 rutracker.org dig -p 1253 @77.88.8.88 rutracker.org
> ```
>
> Если DNS действительно подменяется, и ответ на эти 2 команды разный,
> значит метод вероятно работает.
>
> В openwrt DNS на нестандартном порту можно прописать в `/etc/config/dhcp`
> таким способом :
>
> ```
> config dnsmasq
> <...>
> list server '77.88.8.88#1253'
> ```
>
> Если настройки IP и DNS получаются автоматически от провайдера, в
> `/etc/config/network` найдите секцию интерфейса `wan` и сделайте так:
>
> ```
> config interface 'wan'
> <...>
> option peerdns '0'
> ```
>
> ```sh
> $ /etc/init.d/network restart
> $ /etc/init.d/dnsmasq restart
> ```
>
> Если это не подходит, можно перенаправлять обращения на UDP и TCP порты
> `53` вашего DNS сервера на `77.88.8.88:1253` средствами
> `iptables`/`nftables`. В `/etc/resolv.conf` нельзя прописать DNS на
> нестандартном порту.
Еще один эффективный вариант - использовать ресолвер от yandex 6. `blockcheck.sh` позволяет выявить рабочую стратегию обхода блокировок. По
(`77.88.8.88`) на нестандартном порту `1253`. Многие провайдеры не
анализируют обращения к DNS на нестандартных портах.
Проверить работает ли этот вариант можно так:
```sh
$ dig -p 53 @77.88.8.88 rutracker.org dig -p 1253 @77.88.8.88 rutracker.org
```
Если DNS действительно подменяется, и ответ на эти 2 команды разный, значит
метод вероятно работает.
В openwrt DNS на нестандартном порту можно прописать в `/etc/config/dhcp`
таким способом :
```
config dnsmasq
<...>
list server '77.88.8.88#1253'
```
Если настройки IP и DNS получаются автоматически от провайдера, в
`/etc/config/network` найдите секцию интерфейса `wan` и сделайте так:
```
config interface 'wan'
<...>
option peerdns '0'
```
```sh
$ /etc/init.d/network restart
$ /etc/init.d/dnsmasq restart
```
Если это не подходит, можно перенаправлять обращения на UDP и TCP порты `53`
вашего DNS сервера на `77.88.8.88:1253` средствами `iptables`/`nftables`. В
`/etc/resolv.conf` нельзя прописать DNS на нестандартном порту.
6. `blockcheck.sh` позволяет выявить рабочую стратегию обхода блокировок По
результатам скрипта нужно понять какой вариант будете использовать : `nfqws` результатам скрипта нужно понять какой вариант будете использовать : `nfqws`
или `tpws` И запомнить найденные стратегии. или `tpws` и запомнить найденные стратегии для дальнейшего применения.
Следует понимать, что скрипт проверяет доступность только конкретного Следует понимать, что скрипт проверяет доступность только конкретного
домена, который вы вводите в начале. Вероятно, все остальные домены домена, который вы вводите в начале. Вероятно, все остальные домены
блокированы подобным образом, **но не факт**. В большинстве случаев можно блокированы подобным образом, **но не факт**. В большинстве случаев можно
объединить несколько стратегий в одну универсальную, и это крайне объединить несколько стратегий в одну универсальную, и это **крайне
желательно. Необходимо понимать как работают стратегии. zapret не может желательно**. Необходимо понимать как работают стратегии. zapret **не может
пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их пробить блокировку по IP адресу**. Для проверки нескольких доменов вводите
через пробел. их через пробел.
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас > Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у
может быть несколько маршрутов с различной длиной по ХОПам, с DPI на разных > вас может быть несколько маршрутов с различной длиной по ХОПам, с DPI на
хопах. Приходится преодолевать целый зоопарк DPI, которые еще и включаются в > разных хопах. Приходится преодолевать целый зоопарк DPI, которые еще и
работу хаотичным образом или образом, зависящим от направления (IP сервера). > включаются в работу хаотичным образом или образом, зависящим от
скрипт не всегда может выдать вам в итогах оптимальную стратегию, которую > направления (IP сервера). скрипт не всегда может выдать вам в итогах
надо просто переписать в настройки. В некоторых случаях надо реально думать > оптимальную стратегию, которую надо просто переписать в настройки. В
что происходит, анализируя результат на разных стратегиях. Если вы > некоторых случаях надо реально думать что происходит, анализируя результат
применяете большой **TTL**, чтобы достать до магистрала, то не лишним будет > на разных стратегиях. Если вы применяете большой **TTL**, чтобы достать до
добавить дополнительный ограничитель `--dpi-desync-fooling`, чтобы не > магистрала, то не лишним будет добавить дополнительный ограничитель
сломать сайты на более коротких дистанциях. `md5sig` наиболее совместим, но > `--dpi-desync-fooling`, чтобы не сломать сайты на более коротких
работает **только** на linux серверах. `badseq` может работать только на > дистанциях. `md5sig` наиболее совместим, но работает **только** на linux
**https** и не работать на **http**. Чтобы выяснить какие дополнительные > серверах. `badseq` может работать только на **https** и не работать на
ограничители работают, смотрите результат теста аналогичных стратегий без > **http**. Чтобы выяснить какие дополнительные ограничители работают,
**TTL** с каждым из этих ограничителей. > смотрите результат теста аналогичных стратегий без **TTL** с каждым из
> этих ограничителей.
При использовании `autottl` следует протестировать как можно больше разных >
доменов. Эта техника может на одних провайдерах работать стабильно, на > При использовании `autottl` следует протестировать как можно больше разных
других потребуется выяснить при каких параметрах она стабильна, на третьих > доменов. Эта техника может на одних провайдерах работать стабильно, на
полный хаос, и проще отказаться. > других потребуется выяснить при каких параметрах она стабильна, на третьих
> полный хаос, и проще отказаться.
Далее, имея понимание что работает на **http**, **https**, **quic**, нужно >
сконструировать параметры запуска `tpws` и/или `nfqws` с использованием > Далее, имея понимание что работает на **http**, **https**, **quic**, нужно
мультистратегии. Как работают мультистратегии описано в readme.txt. > сконструировать параметры запуска `tpws` и/или `nfqws` с использованием
> мультистратегии. Как работают мультистратегии описано в readme.txt.
Если кратко, то обычно параметры конструируются так: >
```sh > Если кратко, то обычно параметры конструируются так:
"--filter-udp=443 'параметры для quic' <HOSTLIST_NOAUTO> --new > ```sh
--filter-tcp=80,443 'обьединенные параметры для http и https' <HOSTLIST>" > "--filter-udp=443 'параметры для quic' <HOSTLIST_NOAUTO> --new
``` > --filter-tcp=80,443 'обьединенные параметры для http и https' <HOSTLIST>"
> ```
Или так: >
```sh > Или так:
"--filter-udp=443 'параметры для quic' <HOSTLIST_NOAUTO> --new > ```sh
--filter-tcp=80 'параметры для http' <HOSTLIST> --new > "--filter-udp=443 'параметры для quic' <HOSTLIST_NOAUTO> --new
--filter-tcp=443 'параметры для https' <HOSTLIST>" > --filter-tcp=80 'параметры для http' <HOSTLIST> --new
``` > --filter-tcp=443 'параметры для https' <HOSTLIST>"
> ```
`<HOSTLIST>` и `<HOSTLIST_NOAUTO>` так и пишутся. Их не надо на что-то >
заменять. Это сделают скрипты запуска, если вы выбрали режим фильтрации по > `<HOSTLIST>` и `<HOSTLIST_NOAUTO>` так и пишутся. Их не надо на что-то
хостлистам, и уберут в противном случае. Если для какого-то протокола надо > заменять. Это сделают скрипты запуска, если вы выбрали режим фильтрации по
дурить все без стандартного хостлиста - просто уберите оттуда `<HOSTLIST>` и > хостлистам, и уберут в противном случае. Если для какого-то протокола надо
`<HOSTLIST_NOAUTO>`. Можно писать свои параметры `--hostlist` и > дурить все без стандартного хостлиста - просто уберите оттуда `<HOSTLIST>`
`--hostlist-exclude` для дополнительных хостлистов или в профилях > и `<HOSTLIST_NOAUTO>`. Можно писать свои параметры `--hostlist` и
специализаций под конкретный ресурс. В последнем случае стандартный хостлист > `--hostlist-exclude` для дополнительных хостлистов или в профилях
там не нужен. Следует избегать указания собственных параметров `--hostlist` > специализаций под конкретный ресурс. В последнем случае стандартный
на листы из директории ipset. Эта логика включена в `<HOSTLIST>` и > хостлист там не нужен. Следует избегать указания собственных параметров
`<HOSTLIST_NOAUTO>`. Отличие `<HOSTLIST_NOAUTO>` в том, что стандартный > `--hostlist` на листы из директории ipset. Эта логика включена в
автолист по этому профилю используется как обычный, то есть без > `<HOSTLIST>` и `<HOSTLIST_NOAUTO>`. Отличие `<HOSTLIST_NOAUTO>` в том, что
автоматического добавления доменов. Однако, добавления в других профилях > стандартный автолист по этому профилю используется как обычный, то есть
автоматически отражаются во всех остальных. > без автоматического добавления доменов. Однако, добавления в других
> профилях автоматически отражаются во всех остальных.
Если стратегии отличаются по версии ip протокола, и вы не можете их >
обьединить, фильтр пишется так: > Если стратегии отличаются по версии ip протокола, и вы не можете их
```sh > обьединить, фильтр пишется так:
"--filter-l3=ipv4 --filter-udp=443 lпараметры для quic ipv4' <HOSTLIST_NOAUTO> --new > ```sh
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' <HOSTLIST> --new > "--filter-l3=ipv4 --filter-udp=443 lпараметры для quic ipv4' <HOSTLIST_NOAUTO> --new
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' <HOSTLIST> --new > --filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' <HOSTLIST> --new
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" <HOSTLIST_NOAUTO> --new > --filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' <HOSTLIST> --new
--filter-l3=ipv6 --filter-tcp=80 'параметры для http ipv6' <HOSTLIST> --new > --filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" <HOSTLIST_NOAUTO> --new
--filter-l3=ipv6 --filter-tcp=443 'параметры для https ipv6' <HOSTLIST>" > --filter-l3=ipv6 --filter-tcp=80 'параметры для http ipv6' <HOSTLIST> --new
``` > --filter-l3=ipv6 --filter-tcp=443 'параметры для https ipv6' <HOSTLIST>"
> ```
Но здесь совсем "копи-пастный" вариант. Чем больше вы объедините стратегий и >
сократите их общее количество, тем будет лучше. > Но здесь совсем "копи-пастный" вариант. Чем больше вы объедините стратегий и
> сократите их общее количество, тем будет лучше.
Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать >
из системы перехвата трафика через параметры `TPWS_PORTS`, > Если вам не нужно дурение отдельных протоколов, лучше всего будет их
`NFQWS_PORTS_TCP`, `NFQWS_PORTS_UDP` и убрать соответствующие им профили > убрать из системы перехвата трафика через параметры `TPWS_PORTS`,
мультистратегии. > `NFQWS_PORTS_TCP`, `NFQWS_PORTS_UDP` и убрать соответствующие им профили
> мультистратегии.
| Протокол | Порт | Примечание | >
|---|---|---| > | Протокол | Порт | Примечание |
| `tcp` | `80` | `http` соединение | > |---|---|---|
| `tcp` | `443` | `https` соединение | > | `tcp` | `80` | `http` соединение |
| `udp` | `443` | `quic` соединение | > | `tcp` | `443` | `https` соединение |
> | `udp` | `443` | `quic` соединение |
Если используются методы нулевой фазы десинхронизации (`--mss`, `--wssize`, >
`--dpi-desync=syndata`) и режим фильтрации `hostlist`, то все параметры, > Если используются методы нулевой фазы десинхронизации (`--mss`,
относящиеся к этим методам, следует помещать в отдельные профили > `--wssize`, `--dpi-desync=syndata`) и режим фильтрации `hostlist`, то все
мульистратегии, которые получат управление до определения имени хоста. > параметры, относящиеся к этим методам, следует помещать в отдельные
Необходимо понимать алгоритм работы мультистратегий. Самым надежным > профили мульистратегии, которые получат управление до определения имени
вариантом будет дублирование этих параметров на 2 профиля. Какой-нибудь > хоста. Необходимо понимать алгоритм работы мультистратегий. Самым надежным
сработает в зависимости от параметра `MODE_FILTER`. > вариантом будет дублирование этих параметров на 2 профиля. Какой-нибудь
> сработает в зависимости от параметра `MODE_FILTER`.
```sh >
"--filter-tcp=80 'параметры для http' <HOSTLIST> --new > ```sh
--filter-tcp=443 'параметры для https' --wssize 1:6 <HOSTLIST> --new > "--filter-tcp=80 'параметры для http' <HOSTLIST> --new
--filter-tcp=443 --wssize 1:6" > --filter-tcp=443 'параметры для https' --wssize 1:6 <HOSTLIST> --new
``` > --filter-tcp=443 --wssize 1:6"
> ```
В этом примере `wssize` будет применяться всегда к порту **tcp** `443` вне >
зависимости от параметра `MODE_FILTER`. Хостлист будет игнорироваться, если > В этом примере `wssize` будет применяться всегда к порту **tcp** `443` вне
таковой имеется. К **http** применять **wssize** вредно и бессмысленно. > зависимости от параметра `MODE_FILTER`. Хостлист будет игнорироваться,
> если таковой имеется. К **http** применять **wssize** вредно и
Никто не мешает использовать `tpws` для **http**, `nfqws` для **https**, > бессмысленно.
либо комбинировать действие `nfqws` и `tpws` для одного протокола. В текущем >
варианте скриптов запуска это делается максимально гибко и независимо друг > Никто не мешает использовать `tpws` для **http**, `nfqws` для **https**,
от друга. > либо комбинировать действие `nfqws` и `tpws` для одного протокола. В
> текущем варианте скриптов запуска это делается максимально гибко и
> независимо друг от друга.
7. Запустите скрипт облегченной установки - `install_easy.sh` Выберите `nfqws` 7. Запустите скрипт облегченной установки - `install_easy.sh` Выберите `nfqws`
и/или `tpws`, затем согласитесь на редактирование параметров. Откроется и/или `tpws`, затем согласитесь на редактирование параметров. Откроется