Ник Пост Дата
kotik.neko

Доброго дня всем!

Столкнулся с занятной ситуацией: имею роутер Keenetic Giga (KN-1012), на него поставил самую свежую версию Запрета. Также настроен DoT от Гугла. Суть в том, что как только я перезапускаю Запрет, у меня на какое-то небольшое время становится доступен Инстаграм и ФБ, причем на максимальной скорости, как будто никаких блокировок нет. Но затем минут через 20-30 доступ постепенно пропадает: сначала скорость постепенно падает, а затем вообще пакеты не доходят. НО: это ровно до перезапуска Запрета командой /opt/zapret/init.d/sysv/zapret restart, после чего Инста снова оказывается доступна, но так же минут на 20-30. Что можно поправить в конфиге, чтобы доступ к Инсте не терялся со временем? Провайдер Дом.ру

Конфиги такие:

TPWS_OPT="
--filter-tcp=80  --methodeol  --hostlist=/opt/zapret/user_hostlist.txt --new
--filter-tcp=443 --split-tls=sni  --disorder --tlsrec-pos=2 --hostlist=/opt/zapret/user_hostlist.txt
"

NFQWS_OPT="
--filter-tcp=80 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=discorder  --dpi-desync-fooling=md5sig --new
--filter-tcp=443 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=fake,discorder --dpi-desync-split-pos=2 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_googlle_com.bin --dpi-desync-repeats=10
--filter-udp=443 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=fake,split --dpi-desync-any-protocol --dpi-desync-split-pos=2 --dpi-desync-fooling=md5sig --dpi-desync-fake-quic=opt/zapret/files/fake/quic_initial_www_google_com.bin --dpi-desync-repeats=20
--filter-udp=50000-65535 --dpi-desync=fake --dpi-desync-any-protocol  --dpi-desync-fake-quic=opt/zapret/files/fake/quic_initial_www_google_com.bin --dpi-desync-repeats=10 --new
"
2024-10-30T09:36:58.695Z
Ori

На роутерах я запрет не настраивал, но вижу у тебя целый ряд проблем в конфиге.
Во-первых, опечатки в слове disorder:

--dpi-desync=discorder
--dpi-desync=fake,discorder

Во-вторых, тебе точно нужны повторы на tcp 443? Попробуй убрать.

--filter-tcp=443 ... --dpi-desync-repeats=10

В-третьих, строка для udp. Split не работает для udp в принципе, выкидывай его и --dpi-desync-split-pos=2. Также выкидывай --dpi-desync-any-protocol, в нем нет смысла тут, т.к. ты дуришь известные протоколы. Md5sig вроде тоже только для tcp.

--filter-udp=443 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=fake,split --dpi-desync-any-protocol --dpi-desync-split-pos=2 --dpi-desync-fooling=md5sig --dpi-desync-fake-quic=opt/zapret/files/fake/quic_initial_www_google_com.bin --dpi-desync-repeats=20

Строка дискорда. Порты поставь 50000-50099, дальше нет нужды. Голос в дискорде вроде не по quic идет, лучше используй --dpi-desync-fake-unknown-udp вместо --dpi-desync-fake-quic. В качестве фейка вроде хватает одного нулевого байта без повторов (обычно, но лучше протести у себя). Также нужен ограничитель в виде cutoff=d2, иначе у тебя будет бесконечное засирание канала. Ну и я не уверен нужен ли --new на последней строчке?

--filter-udp=50000-65535 --dpi-desync=fake --dpi-desync-any-protocol  --dpi-desync-fake-quic=opt/zapret/files/fake/quic_initial_www_google_com.bin --dpi-desync-repeats=10 --new

Итог после правок:

NFQWS_OPT="
--filter-tcp=80 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=disorder --dpi-desync-fooling=md5sig --new
--filter-tcp=443 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=fake,disorder --dpi-desync-split-pos=2 --dpi-desync-fooling=md5sig --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_googlle_com.bin
--filter-udp=443 --hostlist=/opt/zapret/user_hostlist.txt --dpi-desync=fake --dpi-desync-fake-quic=opt/zapret/files/fake/quic_initial_www_google_com.bin --dpi-desync-repeats=20
--filter-udp=50000-50099 --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d2 --dpi-desync-fake-unknown-udp=0x00
"

Это из тех проблем что я вижу в конфиге. Как написал выше, сам я на роутерах запрет не поднимал.

2024-10-30T11:45:36.960Z
kotik.neko

Огромное спасибо! Не столько с точки зрения увеличения работоспособности (инста так и продолжает сначала работать, потом отваливается), сколько с точки зрения понимания работы скрипта, все перечисленное действительно упустил при чтении мануала. Ну и ошибка в disorder - это, конечно, эпик фейл:D

Думаю проблему доступности инсты решать костыльно: смотрю, как завести cron на Кинетике и пусть он рестартует Zapret каждые 45 минут

2024-10-30T18:24:00.683Z
Ori

Инста по айпи заблочена на многих провайдерах, кстати. Возможно у вас сначала в незаблоченнные айпи тычется и всё работает, а потом перестает, хз.

Можете попробовать сами прописать альтернативные айпи в etc/hosts или в самом роутере если там есть возможность:

157.240.225.174 instagram.com www.instagram.com

У инсты айпишников очень много.

2024-10-30T18:36:05.419Z
MAMBA(Samatov)

Работает подбор стратегии после ручного добавления в hosts. Как найти дополнительные не блокированные ip и куда их добавить для zapret?

sudo vim /etc/hosts
157.240.9.174 instagram.com www.instagram.com
2024-10-30T19:25:20.012Z
Ori

Насчет поиска айпи, я себе для этих целей скрипт писал. Это под виндоусовский cmd. На линуксе хз. Можно руками через сайт гугл.днс в крайнем случае. Просто рандомные subnet вставляете.

Второй вопрос я не понял. Какое отношение запрет к файлу хостс имеет?

2024-10-30T20:31:34.826Z
MAMBA(Samatov)

Запись в Хостс позволяет достучаться до ip инстаграма, zapret позволяет обойти блокировку.

2024-10-30T20:42:31.414Z
Ori

Ну это и так очевидно. Я не понял вот этот вопрос:

и куда их добавить для zapret?

Куда вы их добавить хотите ещё? Ну кроме хостс.

2024-10-30T21:05:51.891Z
MAMBA(Samatov)

Главное как выявить рабочие ip для добавления. Которые будут пинговаться.

2024-10-30T21:54:01.589Z
Ori

Как правило, doh от комсс https://dns.comss.one/dns-query выдает рабочие айпи. Там у них хитрый механизм какой-то. Можно просто в браузере поставить и всё.

2024-10-30T21:56:54.276Z
MAMBA(Samatov)

На openwrt нужно сделать такой финт. Пока руками только 1 ip в hosts

2024-10-30T22:05:51.769Z
Ori

Ну так поищите руками, тем же курлом.

curl -so /dev/null -m 2 -w "%{remote_ip}%{onerror}%{errormsg}" --doh-url https://dns.comss.one/dns-query https://instagram.com

Или дигом:
dig +https @dns.comss.one instagram.com +short

2024-10-30T22:11:45.927Z
toxae1(Toxa)

Для keenetic, требуется dig
Ложим в папку /opt/root/
Даем права chmod +x dnstest.sh
Запускаем ./dnstest.sh
Можно запускать с указанием домена
./dnstest.sh ntc.party
А можно добавить свои домены внутри.
Возможно использование и на других линукс системах, только нужно прописать свои днс.
Если используете много доменов используйье grep для фильтра
./dnstest.sh ntc.party | grep yes
Будет показывать только ip на которых прошел пинг.
dnstest.sh (1,9 КБ)

2024-10-30T22:15:40.877Z
Ori

Не лучше ли tcping будет вместо обычного ping’а? Ну и я может слепой, но где там курл используется?

2024-10-30T22:19:47.865Z
toxae1(Toxa)

tcping нет в entware или я не нашел.
А так я понимаю можно пингануть 80,443,853 порты и понять что доступно что нет?

2024-10-30T22:55:16.020Z
Ori

Фиг знает. Просто icmp трафик на некоторых провайдерах заблочен + некоторые ресурсы на него не отвечают, поэтому ненадежно так проверять. Сам на этом споткнулся.


От нефиг делать за пару часиков накатал прогу для поиска айпи. Нужны днс с поддержкой subnet.
Работает через командную строку, справка вызывается флагом -? Результат выводится в лог и консоль. Финальный результат, с выкинутыми дубликатами и отсортированный - в самом конце после разделителя -------
Пример строки запуска:

ipfinder -u instagram.com -d https://dns.google/dns-query

IPfinder_win.zip (6,3 МБ)

Также попробовал скомпилить для линукса, но я без малейшего понятия работоспособно оно или нет.
IPfinder_linux(maybe).zip (6,2 МБ)

Версия супер сырая, допиливать хз буду или нет.

2024-10-31T01:10:18.723Z
toxae1(Toxa)

Это он с doh работает?

2024-10-31T05:46:38.604Z
MAMBA(Samatov)
~ # ./dnstest.sh ntc.party | grep yes
dig: Couldn't parse port number
dig: Couldn't parse port number
2024-10-31T09:43:06.874Z
toxae1(Toxa)

У вас keenetic?
Doh добавлены?
Если нет doh можно через cli прописать одной командой

dns-proxy https upstream https://cloudflare-dns.com/dns-query
dns-proxy https upstream https://dns.google/dns-query
dns-proxy https upstream https://dns.quad9.net/dns-query
dns-proxy https upstream https://common.dot.dns.yandex.net/dns-query
dns-proxy https upstream https://dns.adguard-dns.com/dns-query
dns-proxy https upstream https://dns.controld.com/comss
dns-proxy https upstream https://dns.nextdns.io
dns-proxy https upstream https://dns.alidns.com/dns-query

2024-10-31T09:50:28.401Z
MAMBA(Samatov)

Да. Keenetic. Добавил DOH google, но в отличии от Ipfinder выдает только один нерабочий ip.

~ # ./dnstest.sh instagram.com
127.0.0.1:40508 instagram.com 31.13.72.174 no

instagram.txt (1,0 КБ)

2024-10-31T10:04:59.195Z
toxae1(Toxa)

Вы добавили один doh. Добавьте все 8
И он вам потом покажет какой из днс выдает какой ip

2024-10-31T10:12:05.692Z
kotik.neko

Дополняю тред: удалось добиться стабильной разблокировки ВСЕХ заблокированных на территории РФ ресурсов и при этом сохранения работоспособности незаблокированных. То есть даже белые/черные списки настраивать не пришлось.

Во-первых поменял Кинетик на GL.iNet GL-MT6000 (он же Flint 2). На ванильную OpenWRT его не шил, за глаза хватило китайской корчеванной версии 21.02-SNAPSHOT (последняя доступная на данный момент). Важная деталь: для разблокировки всего и вся настроил Oblivious DNS over HTTPS, благо настройки базовых бесплатных серверов уже вшиты в роутер, выбрал odoh-cloudflare (см. скрин). пробовал без него - разблокировка работала только частично, либо вообще не работала. И только после этого установил Zapret.

Тыкаться пришлось не долго, настройки почти базовые, для дискорда прописал конфиги, поправленные @Ori , за что ему бесконечно благодарен:

TPWS_ENABLE=1
TPWS_PORTS=80,443
# use <HOSTLIST> and <HOSTLIST_NOAUTO> placeholders to engage standard hostlists and autohostlist in ipset dir
# hostlist markers are replaced to empty string if MODE_FILTER does not satisfy
# <HOSTLIST_NOAUTO> appends ipset/zapret-hosts-auto.txt as normal list
TPWS_OPT="
--filter-tcp=80 --methodeol <HOSTLIST> --new
--filter-tcp=443 --tlsrec=sni --split-pos=2 --disorder <HOSTLIST>
"
NFQWS_OPT="
--filter-tcp=80 --dpi-desync=fake,split2 --dpi-desync-fooling=md5sig <HOSTLIST> --new
--filter-tcp=443 --dpi-desync=fake,disorder2 --dpi-desync-fooling=md5sig <HOSTLIST> --new
--filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=6 <HOSTLIST_NOAUTO>
--filter-udp=50000-50099 --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-cutoff=d2 --dpi-desync-fake-unknown-udp=0x00
"

ВАЖНО: конкретно у меня роутер отрубал доступ в интернет при настройке IPv6 в самом роутере и указании поддержки данного протокола при начальной настройке Zapret. И даже при обратном переключении на IPv4 было все так же глухо. Как ни тыкался, победить это не смог - списал на баг. Ну да ладно, и на IPv4 все прекрасно работает.

В общем, сижу довольный в свободном интернете, чего всем здесь желаю! Спасибо за помощь и наводки. Кинетик уедет к маме, там его еще потыкаю на предмет возможности настройки аналогичного конфига.

2024-11-01T20:04:13.644Z