Вопрос по потенциальному обходу блокировок. Блокируют ли входящие соедиения из-за границы в РФ?

Где-то давно тут читал, что якобы блокируются исходящие соединения, но не блокируются входящие, найти тот топик не смог поэтому и решил уточнить как с подобным обстоят дела сейчас.

Возможно ли будет, условно, поднять дома (или на российском VPS провайдере) какой-нибудь WireGuard сервер, подключиться к нему из-за границы и через зарубежного пира гнать трафик? По скорости не должно сильно ударить, да и поднять такое соединение довольно просто, например Headscale (как и Tailscale ре-имплементацией которого он является) имеет такую функцию из коробки

ну при 16кб блоке в обратную сторону его нет, как минимум на melbicom, но именно wireguard не проверял

Да - чаще всего “обратные” подключения не фильтруются. Иногда все-таки бывает, но там скорее косяки настройки ТСПУ или какие-нибудь особенности построения сети хостера/магистралов. Если они определяют тупо по GeoIP назначения то могут быть некорректные записи в базе, а если именно по “направлению”, то там иногда сам черт ногу сломит как и куда трафик ходит. Поэтому если имеет место вариант 2, то UDP-based протоколы типа Wireguard не советую - из-за самой специфики работы UDP там часто непросто определить “направление” и риск блокировки по-прежнему есть.

Блокируются так же как и исходящие :frowning:

Второй вариант предпочтительнее, на них блокировки мягче.

2 сервера в РФ, в разных ЦОДах (в разных городах) - к обоим есть доступ с из-за бугра по openVPN точно, скорее всего по остальным протоколам тоже.

Так что видимо как повезёт. Но блокировки в обратную сторону должны быть скорее исключением, т.к. на это надо условно в два раза больше фильтрующих мощностей.

UPD: недостатком схемы является проблема не со скоростью, а с задержкой - один туннель идёт от клиента до входной точки в РФ, второй - до (или скорее “от“) сервера за бугром, что приводит к тому, что каждый пакет шифруется/дешифруется ещё раз ;(

Звонил по Telegram в разных комбинациях с Wi-Fi и мобильных операторов РБ и РФ. Снаружи РФ ничего не нужно. Внутри РФ nfqws на Android-смартфоне. Качество связи отличное.

А вот за квартиру уже не смог заплатить - ЖКХ РФ блокирует входящие.

Это уже совсем другое. Телеграм делает исходящее подключение с обеих сторон. Сайт жкх блокирует зарубежные айпи на своей стороне (защита от хакеров), это не тспу делает

я думаю утверждение неверно понято. имеется ввиду цензор не проверяет пакеты которые возвращаются с забугра.
ваш прокси конект с серваком это не есть загадочная труба, направление у которой когда-то там лишь однажды вначале определяется. если речь за еще не весь заблокированный tcp то тут на протяжении всей сессии будут от вас исходить пакеты, и будут приходить к вам, это неизбежно. перефразирую: тспу не особо интересно что возвращается, ему интересно откуда и как вы запрашиваете. если он заблочит запрос, то и ответов не будет. хотя при 16-20 кб блокировке он как раз блочит ответ а не запрос, но справедливости ради опять же на базе того куда вы сходили.
что касается приведенной схемы - это может работать да, но оно не про указанный факт. в этом кейсе все равно будет два двунаправленных соединения, от вас к первому серверу, и от первого сервера ко второму.
и на первом соединении цензор все равно просматривает куда вы ходите, и может вас там отрезать, просто пока еще этого не делает (если ток не белые списки). а на втором конекте либо не стоит тспу, и данные можно перекидывать как угодно, либо стоит но с менее жесткими правилами.

Обычный wireguard работает в обратную сторону на четырёх разных провайдеров без каких-либо проблем.

Некоторое время у меня был доступ к ВПСке заблокированной по IP. Пакеты отправленные от VPS прекрасно принимались на домашнем роутере, но все дропалось в обратную сторону. (и кого тут защищает ТСПУ?). По фану даже собрал схемку на чистом WG где нисходящий поток шел напрямую, а восходящий пропускался через вторую незаблокированную ВПС.
Прекрасно работало. По сравнению полным заворотом через промежуточный релей в рф такая штука должна увеличивать скорость, хотя, конечно, дома нужен публичный IP-адрес.

Скорее всего признаком сработавшей односторонней блокировки является остановка TCP ровно после 16кБ. Сервер отдает буфер, останавливается и ждет подтверждения приема (ACK), которое так и не будет получено.

Идею для абонента за GCNAT тут писал (но в том случае переставали приходить пакеты от сервера к клиенту), но тестировочную програмку, которая будет мусор слать, пока лень писать.

Да, хорошая идея! Можно попытаться отправлять небольшие мусорные дейтаграммы от роутера к серверу для открытия NAT. Однако, есть достаточно высокая вероятность того, что NAT изменит номер порта и такой трюк не сработает.

Это будет не простенькая программа, а что-то вроде кастомного форка headscale. Нужен управляющий сервер, который будет координировать отправку пробивающих пакетов и учитывать порты с обоих сторон, но при этом туннель должен строиться строго в направлении VPS>>>HOME, чтобы не стриггерить блокировку. Вообще, можно попробовать детально изучить headscale/tailscale, может их можно настроить таким образом даже без форка.

Имел ввиду вот что:


А тестовая програмка без полезной нагрузки должна проверить момент блокировки:

Если блок срабатывает каждый heartbeat, то realtime интернет не получится, только с пингом в 1 минуту.
Если блок 16-31 КиБ безусловный, то можно менять исходящий порт для новой сессии (для посылки TCP пакетов можно использовать библиотеку npcap), второй сервер не понадобиться.

Для эксперимента неделю назад запустил постоянно висящее соединение от VPS. Вчера прослушваемый порт посетил бот ГРЧС:

Summary
Dec 11 19:51:53: Server: read tcp 192.168.3.2:8443->212.192.158.77:58273: read: connection reset by peer
Dec 11 19:51:53: Server: tls: first record does not look like a TLS handshake
Dec 11 19:52:03: Server: tls: first record does not look like a TLS handshake
Dec 11 19:52:13: Server: tls: first record does not look like a TLS handshake
Dec 11 19:52:29: Server: read tcp 192.168.3.2:8443->212.192.158.77:58277: read: connection reset by peer
Dec 11 19:52:35: Server: read tcp 192.168.3.2:8443->212.192.158.77:58278: read: connection reset by peer

Dec 11 19:52:35: Server: TLS Request from 212.192.158.77:58279
Dec 11 19:52:35: TLS: ClientHello: SNI:
Dec 11 19:52:35: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:52:35: TLS: ClientHello: Cipher Suites: [49199 49195 49169 49159 49171 49161 49172 49162 5 47 53 49170 10]
Dec 11 19:52:35: TLS: ClientHello: Extensions: [5 10 11 13 65281]
Dec 11 19:52:35: TLS: ClientHello: Supported Protos: []
Dec 11 19:52:35: TLS: ClientHello: Supported Curves: [CurveP256 CurveP384 CurveP521]
Dec 11 19:52:35: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:48: Server: TLS Request from 212.192.158.77:42958
Dec 11 19:57:48: TLS: ClientHello: SNI:
Dec 11 19:57:48: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:48: TLS: ClientHello: Cipher Suites: [49199 49195 49169 49159 49171 49161 49172 49162 5 47 53 49170 10]
Dec 11 19:57:48: TLS: ClientHello: Extensions: [5 10 11 13 65281]
Dec 11 19:57:48: TLS: ClientHello: Supported Protos: []
Dec 11 19:57:48: TLS: ClientHello: Supported Curves: [CurveP256 CurveP384 CurveP521]
Dec 11 19:57:48: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:48: Server: TLS Request from 212.192.158.77:42962
Dec 11 19:57:48: TLS: ClientHello: SNI:
Dec 11 19:57:48: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:48: TLS: ClientHello: Cipher Suites: [49199 49195 49169 49159 49171 49161 49172 49162 5 47 53 49170 10]
Dec 11 19:57:48: TLS: ClientHello: Extensions: [5 10 11 13 65281]
Dec 11 19:57:48: TLS: ClientHello: Supported Protos: []
Dec 11 19:57:48: TLS: ClientHello: Supported Curves: [CurveP256 CurveP384 CurveP521]
Dec 11 19:57:48: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:48: Server: TLS Request from 212.192.158.77:42964
Dec 11 19:57:48: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:48: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:48: TLS: ClientHello: Cipher Suites: [22 51 103 49310 49314 158 57 107 49311 49315 159 69 190 136 196 154 49160 49161 49187 49324 49326 49195 49162 49188 49325 49327 49196 49266 49267 52393 4866 4865 52244 49159 49170 49171 49191 49199 49172 49192 49200 49248 49249 49270 49271 52392 4869 4868 4867 52243 49169 10 47 60 49308 49312 156 53 61 49309 49313 157 65 186 132 192 7 4 5]
Dec 11 19:57:48: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45 43]
Dec 11 19:57:48: TLS: ClientHello: Supported Protos: [hq h2c h2 spdy/3 spdy/2 spdy/1 http/1.1 http/1.0 http/0.9]
Dec 11 19:57:48: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:48: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:48: Server: TLS Request from 212.192.158.77:42974
Dec 11 19:57:48: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:48: TLS: ClientHello: Supported Versions: [769 770 771]
Dec 11 19:57:48: TLS: ClientHello: Cipher Suites: [5 4 7 192 132 186 65 157 49313 49309 61 53 156 49312 49308 60 47 10 49169 52243 4867 4868 4869 52392 49271 49270 49249 49248 49200 49192 49172 49199 49191 49171 49170 49159 52244 4865 4866 52393 49267 49266 49196 49327 49325 49188 49162 49195 49326 49324 49187 49161 49160 154 196 136 190 69 159 49315 49311 107 57 158 49314 49310 103 51 22]
Dec 11 19:57:48: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45 43]
Dec 11 19:57:48: TLS: ClientHello: Supported Protos: [http/0.9 http/1.0 http/1.1 spdy/1 spdy/2 spdy/3 h2 h2c hq]
Dec 11 19:57:48: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:48: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:49: Server: TLS Request from 212.192.158.77:42990
Dec 11 19:57:49: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:49: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:49: TLS: ClientHello: Cipher Suites: [49170 49159 52244 4865 4866 52393 49267 49266 49196 49327 49325 49188 49162 49195 49326 49324 49187 49161 49160 154 196 136 190 69 159 49315 49311 107 57 158 49314 49310 103 51 22]
Dec 11 19:57:49: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45]
Dec 11 19:57:49: TLS: ClientHello: Supported Protos: [http/0.9 http/1.0 http/1.1 spdy/1 spdy/2 spdy/3 h2 h2c hq]
Dec 11 19:57:49: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:49: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:49: Server: TLS Request from 212.192.158.77:42998
Dec 11 19:57:49: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:49: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:49: TLS: ClientHello: Cipher Suites: [49171 49191 49199 49172 49192 49200 49248 49249 49270 49271 52392 4869 4868 4867 52243 49169 10 47 60 49308 49312 156 53 61 49309 49313 157 65 186 132 192 7 4 5]
Dec 11 19:57:49: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45]
Dec 11 19:57:49: TLS: ClientHello: Supported Protos: [http/0.9 http/1.0 spdy/1 spdy/2 spdy/3 h2c hq]
Dec 11 19:57:49: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:49: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:50: Server: TLS Request from 212.192.158.77:43036
Dec 11 19:57:50: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:50: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:50: TLS: ClientHello: Cipher Suites: [47802 49170 49171 49159 49191 52244 49199 4865 49172 4866 49192 52393 49200 49267 49248 49266 49249 49196 49270 49327 49271 49325 52392 49188 4869 49162 4868 49195 4867 49326 52243 49324 49169 49187 10 49161 47 49160 60 154 49308 196 49312 136 156 190 53 69 61 159 49309 49315 49313 49311 157 107 65 57 186 158 132 49314 192 49310 7 103 4 51 5 22]
Dec 11 19:57:50: TLS: ClientHello: Extensions: [51914 0 23 1 65281 10 11 35 16 13 51 45]
Dec 11 19:57:50: TLS: ClientHello: Supported Protos: [hq h2c spdy/3 spdy/2 spdy/1 http/1.0 http/0.9]
Dec 11 19:57:50: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:50: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:50: Server: TLS Request from 212.192.158.77:43052
Dec 11 19:57:50: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:50: TLS: ClientHello: Supported Versions: [770 769]
Dec 11 19:57:50: TLS: ClientHello: Cipher Suites: [22 51 103 49310 49314 158 57 107 49311 49315 159 69 190 136 196 154 49160 49161 49187 49324 49326 49195 49162 49188 49325 49327 49196 49266 49267 52393 4866 4865 52244 49159 49170 49171 49191 49199 49172 49192 49200 49248 49249 49270 49271 52392 4869 4868 4867 52243 49169 10 47 60 49308 49312 156 53 61 49309 49313 157 65 186 132 192 7 4 5]
Dec 11 19:57:50: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45]
Dec 11 19:57:50: TLS: ClientHello: Supported Protos: [http/0.9 http/1.0 http/1.1 spdy/1 spdy/2 spdy/3 h2 h2c hq]
Dec 11 19:57:50: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:50: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:51: Server: TLS Request from 212.192.158.77:43084
Dec 11 19:57:48: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:51: TLS: ClientHello: Supported Versions: [772 771 770 769]
Dec 11 19:57:51: TLS: ClientHello: Cipher Suites: [22 51 103 49310 49314 158 57 107 49311 49315 159 69 190 136 196 154 49160 49161 49187 49324 49326 49195 49162 49188 49325 49327 49196 49266 49267 52393 4866 4865 52244 49159 49170 49171 49191 49199 49172 49192 49200 49248 49249 49270 49271 52392 4869 4868 4867 52243 49169 10 47 60 49308 49312 156 53 61 49309 49313 157 65 186 132 192 7 4 5]
Dec 11 19:57:51: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45 43]
Dec 11 19:57:51: TLS: ClientHello: Supported Protos: [hq h2c h2 spdy/3 spdy/2 spdy/1 http/1.1 http/1.0 http/0.9]
Dec 11 19:57:51: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:51: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:52: Server: TLS Request from 212.192.158.77:43108
Dec 11 19:57:52: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:52: TLS: ClientHello: Supported Versions: [769 770 771 772]
Dec 11 19:57:52: TLS: ClientHello: Cipher Suites: [5 4 7 192 132 186 65 157 49313 49309 61 53 156 49312 49308 60 47 10 49169 52243 4867 4868 4869 52392 49271 49270 49249 49248 49200 49192 49172 49199 49191 49171 49170 49159 52244 4865 4866 52393 49267 49266 49196 49327 49325 49188 49162 49195 49326 49324 49187 49161 49160 154 196 136 190 69 159 49315 49311 107 57 158 49314 49310 103 51 22]
Dec 11 19:57:52: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45 43]
Dec 11 19:57:52: TLS: ClientHello: Supported Protos: [http/0.9 http/1.0 http/1.1 spdy/1 spdy/2 spdy/3 h2 h2c hq]
Dec 11 19:57:52: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:52: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:54: Server: TLS Request from 212.192.158.77:43136
Dec 11 19:57:54: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:54: TLS: ClientHello: Supported Versions: [769 770 771 772]
Dec 11 19:57:54: TLS: ClientHello: Cipher Suites: [22 51 103 49310 49314 158 57 107 49311 49315 159 69 190 136 196 154 49160 49161 49187 49324 49326 49195 49162 49188 49325 49327 49196 49266 49267 52393 52244 49159 49170 49171 49191 49199 49172 49192 49200 49248 49249 49270 49271 52392 52243 49169 10 47 60 49308 49312 156 53 61 49309 49313 157 65 186 132 192 7 4 5]
Dec 11 19:57:54: TLS: ClientHello: Extensions: [0 23 1 65281 10 11 35 16 13 51 45 43]
Dec 11 19:57:54: TLS: ClientHello: Supported Protos: [http/0.9 http/1.0 http/1.1 spdy/1 spdy/2 spdy/3 h2 h2c hq]
Dec 11 19:57:54: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:54: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:54: Server: TLS Request from 212.192.158.77:43156
Dec 11 19:57:54: TLS: ClientHello: SNI: {{ публичный IP }}
Dec 11 19:57:54: TLS: ClientHello: Supported Versions: [39578 772 771 770 769]
Dec 11 19:57:54: TLS: ClientHello: Cipher Suites: [35466 49170 49171 49159 49191 52244 49199 4865 49172 4866 49192 52393 49200 49267 49248 49266 49249 49196 49270 49327 49271 49325 52392 49188 4869 49162 4868 49195 4867 49326 52243 49324 49169 49187 10 49161 47 49160 60 154 49308 196 49312 136 156 190 53 69 61 159 49309 49315 49313 49311 157 107 65 57 186 158 132 49314 192 49310 7 103 4 51 5 22]
Dec 11 19:57:54: TLS: ClientHello: Extensions: [39578 0 23 1 65281 10 11 35 16 13 51 45 43]
Dec 11 19:57:54: TLS: ClientHello: Supported Protos: [hq h2c h2 spdy/3 spdy/2 spdy/1 http/1.1 http/1.0 http/0.9]
Dec 11 19:57:54: TLS: ClientHello: Supported Curves: [X25519 CurveP256 CurveP384 CurveP521]
Dec 11 19:57:54: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:56: Server: TLS Request from 212.192.158.77:43216
Dec 11 19:57:56: TLS: ClientHello: SNI:
Dec 11 19:57:56: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:56: TLS: ClientHello: Cipher Suites: [49199 49195 49169 49159 49171 49161 49172 49162 5 47 53 49170 10]
Dec 11 19:57:56: TLS: ClientHello: Extensions: [5 10 11 13 65281]
Dec 11 19:57:56: TLS: ClientHello: Supported Protos: []
Dec 11 19:57:56: TLS: ClientHello: Supported Curves: [CurveP256 CurveP384 CurveP521]
Dec 11 19:57:56: TLS: ClientHello: Supported Points: [0]

Dec 11 19:57:56: Server: TLS Request from 212.192.158.77:43230
Dec 11 19:57:56: TLS: ClientHello: SNI:
Dec 11 19:57:56: TLS: ClientHello: Supported Versions: [771 770 769]
Dec 11 19:57:56: TLS: ClientHello: Cipher Suites: [49199 49195 49169 49159 49171 49161 49172 49162 5 47 53 49170 10]
Dec 11 19:57:56: TLS: ClientHello: Extensions: [5 10 11 13 65281]
Dec 11 19:57:56: TLS: ClientHello: Supported Protos: []
Dec 11 19:57:56: TLS: ClientHello: Supported Curves: [CurveP256 CurveP384 CurveP521]
Dec 11 19:57:56: TLS: ClientHello: Supported Points: [0]

Трудно точно сказать, что он искал, но скорее всего если бы бот обнаружил что-то похожее на прокси или впн адрес улетел бы в блок. Вероятно, поскольку нисходящие пакеты невидимы для ТСПУ, то логика работы фильтров другая - активное зондирование. Это сработает так быстро, но тоже достаточно эффективно.

По-моему представлению блокируют только адреса мостов тора. Остальные виды блокировок по подсетям/AS действуют, если проследить репорты на этом форуме (тех хостингов, которые не выполнили закон о приземлении). Бот ГРЧС и без соединений сканит интернет.

{публичный IP} в РФ же? Вроде как пока что они такое не практикуют (блокировку внутри РФ) - сломают же рабочие процессы куче компаний…

Но видимо стоит для адресов, с которых сканируют, добавить drop правило :thinking:

Конечно же, заблокируют не IP сервера, а IP иностранного VPS.

То как тщательно перебирают варианты шифров и протоколов говорит о том, что эти запросы не случайны. На других портах ничего такого не замечено.

Перебирает сканер приложений, пока не найдет вариант с ответом. Это как раз не удивительно. По информации абуз баз с этих адресов не только сканируют все порты и вызывают демонов, но и проверяют на уязвимости.

Санитары леса. Причем всего леса, а не только своего загончика.

Раз такое дело, то может делать DROP для всех префиксов FGUP “GRCHC”(AS61280)?