Skip to content

Instantly share code, notes, and snippets.

@httpsx
Last active October 19, 2024 14:43
Show Gist options
  • Save httpsx/76a98ea28e6f3a4ffc947e768c0b6c01 to your computer and use it in GitHub Desktop.
Save httpsx/76a98ea28e6f3a4ffc947e768c0b6c01 to your computer and use it in GitHub Desktop.
WireGuard DPI обход РКН - Windows

Для обхода блокировки достаточно отправить 1 любой udp пакет, тем самым нарушим начальное определение протокола WireGuard
Способ с использованием Windows PowerShell. Без скачивания Nmap и подобного софта.

Шаг 0: Отключитесь от всех туннелей.

Шаг 1: Редактируем Клиент конфиг

Добавим в него "ListenPort", это позволит иметь статичный порт на котором будет работать WireGuard
Нажмите ПКМ на нужный "туннель" и выберите "Редактировать выбранный туннель..." Step1

После DNS добавляем новую строку

ListenPort = 56123

Step1-1

Нажимаем сохранить.

Warning

🔴 Важно! Не пытайтесь подключиться к серверу сразу после того как указали порт.

Шаг 2: Открываем "Windows PowerShell"

Необходимо изменить в скрипте данные сервера, к которому вы будете подключаться.
Их можно посмотреть в конфиге, [Peer] -> Endpoint
Как пример:

Step2

В моем примере $wgIP и $wgPort будут следующие:
$wgIP = "154.77.3.272"
$wgPORT = 51820

Script:

$wgListenPort = 56123
$wgIP = "DEST IP ADDRESS"
$wgPORT = DEST PORT

$EndPoints = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Parse([System.Net.Dns]::GetHostAddresses($wgIP)), $wgPORT) 
$Socket = New-Object System.Net.Sockets.UDPClient $wgListenPort
$SendMessage = $Socket.Send([Text.Encoding]::ASCII.GetBytes(":)"), 2, $EndPoints) 
$Socket.Close() 

После того, как изменили в скрипте $wgIP и $wgPORT, вставляем его в PowerShell и нажимаем Enter. Разрешите доступ Брандмауэру Windows если запросит.

Шаг 3: Подключаемся к WireGuard

Можете подключаться к своему WireGuard.

F.A.Q

  1. Что делать, если я попытался подключиться к серверу без PowerShell Скрипта?
  • Поменять ListenPort в конфиге клиента и поменять в скрипте значение $wgListenPort . Порт должен совпадать.
  • Либо подождать 5-10 минут, пока пройдет время блокировки порта. После этого запускаете сначало скрипт PowerShell - а затем пытаетесь подключиться к WireGuard
  1. Как определить что проблема именно в блокировке протокола WireGuard от РКН ?
  • Если в информации о переданных данных будет статично при подключение: "Получено 92 Б" или "Получено 148 Б" - Значит ваш провайдер заблокировал Handshake Response с протоколом wireguard. Данный гайд помогает обойти эту блокировку.
@anomal3
Copy link

anomal3 commented Aug 22, 2024

Я тя люблю 💋

@anomal3
Copy link

anomal3 commented Aug 22, 2024

Mikrotik или iOS будут?

@neokofg
Copy link

neokofg commented Aug 22, 2024

Да, vpn начал работать айпишник меняется, но сайты где заблокированы подключения с России все равно не открываются, при этом ютуб работает, может кто помочь?

@Theodore09
Copy link

Мне не помогло. Не знаю в чем причина, так же получено 92Б и всё. При этом с телефона или с другого компа при том же wifi все норм.

@Doctor156
Copy link

Мне не помогло. Не знаю в чем причина, так же получено 92Б и всё. При этом с телефона или с другого компа при том же wifi все норм.

Отключись от всех соединений, а потом уже меняй порт. Попробуй несколько. У меня вчера сработал способ. Скорее всего у тебя порт этот уже под баном

@Theodore09
Copy link

Мне не помогло. Не знаю в чем причина, так же получено 92Б и всё. При этом с телефона или с другого компа при том же wifi все норм.

Отключись от всех соединений, а потом уже меняй порт. Попробуй несколько. У меня вчера сработал способ. Скорее всего у тебя порт этот уже под баном

Я разные пробовал, мне не помогло. В прошлый раз проблема вообще сама прошла, в этот раз нет(

@dynuo
Copy link

dynuo commented Aug 22, 2024

ПОЧЕМУ НЕ РАБОТАЕТ ПАРНИ, 92 МБ В СНАХ СНЯТСЯ. ПОМОГИТЕ

@pikasyme
Copy link

Есть инструкция как это прикрутить к микротик?

@DayDve
Copy link

DayDve commented Aug 22, 2024

Mikrotik или iOS будут?

Есть инструкция как это прикрутить к микротик?

mikrotik что-то типа того

/tool traffic-generator packet-template add \
    name=fuckdpi ip-src=<SRC_IP> \
    udp-src-port=<SRC_PORT> \
    ip-dst=<DST_IP>  \
    udp-dst-port=<DST_PORT> \
    ip-protocol=udp \
    data=random \
    data-byte=1
/tool traffic-generator quick \
    tx-template=fuckdpi \
    duration=1

не факт что заработает
но пакет отправится

ну и естественно надо чтобы wg там же запускался

@vaer0o
Copy link

vaer0o commented Aug 22, 2024

что делать если ошибка туннеля "этот процесс не может получить доступ к файлу так как..."

просто powershell закрой

@dmitriyelagin
Copy link

dmitriyelagin commented Aug 22, 2024

Смена порта ListenPort = 56123 на рандомный помогла, на дом.инете Билайна работает, туннель до своего сервака в Канаде. Для простоты настроек использую https://github.com/wiresock/WireSockUI/releases. Спасибо за статью! Сегодня примерно в 6 утра начались проблемы, видимо ркн что-то прикрутил. До этого и так работало.

@astro-snail
Copy link

Спасибо! Не всегда, но дважды уже удалось подключиться, используя метод посылки пакета. У меня macOS, использую PacketSender.

@Ganriber
Copy link

Огромное спасибо за инструкцию, заработало! Может кто знает и подскажет как настроить отправку такого пакета с роутера Keenetic?

@pikasyme
Copy link

pikasyme commented Aug 22, 2024

[DayDve]

не факт что заработает
но пакет отправится

Помогло, спасибо большое!

@mikesnitkovskiy
Copy link

Огонь, помогло.
спасибо!

@Buka1956
Copy link

Помогло, но саудовскую аравию не подключает. Пишет везде по 0. Что делать в этом случае?

@Konkov-Andrey
Copy link

Тэкс, а на маке какой powershell? Конфиг клиента изменил

@mrkhachaturov
Copy link

mrkhachaturov commented Aug 22, 2024

@Konkov-Andrey

Чтобы решить эту проблему на macOS, вы можете использовать другой подход. Вместо указания исходящего порта через netcat, можно использовать инструмент socat, который более универсален в таких случаях.

Вот как вы можете отправить UDP-пакет с указанного порта с помощью socat:

Установка socat (если он еще не установлен)

Если у вас не установлен socat, его можно установить через Homebrew:

brew install socat

Kоманда, которая отправляет UDP-пакет с определенного порта:

echo ":)" | socat - UDP:$wgIP:$wgPORT,sourceport=56123

В настройках wireguard сервера указал порт 443.
Используйте порт, который обычно открыт на большинстве сетей, например, 443 (обычно используется для HTTPS-трафика) или 53 (используется для DNS).

@Konkov-Andrey
Copy link

Konkov-Andrey commented Aug 22, 2024

Все, дошло, спасибо!

@Raph1el-404
Copy link

ребят, подскажите пожалуйста, как на iOS пофиксить

@GalichevPavel
Copy link

GalichevPavel commented Aug 23, 2024

спасибо, помогло, правда после 20 попыток, хз что делал неправильно изначально
краснодар авантателеком

@Venom96669
Copy link

ребят, подскажите пожалуйста, как на iOS пофиксить

Установитье клиент AmneziaWG .
Импортируйте туда тот же туннель, что и в обычном wireguard.
Потом в настройках этого туннеля заполните параметры:

Just packet count: 3
Just packet minimum size: 8
Just packet maximum size: 32

И после этого запустите подключение.

Мне помогло.

@Venom96669
Copy link

Огромное спасибо за инструкцию, заработало! Может кто знает и подскажет как настроить отправку такого пакета с роутера Keenetic?

Этот вопрос тоже очень интересует. Пока ничего не придумал..

@GalichevPavel
Copy link

эту схему можно как то в микротике реализовать?

@pocobio
Copy link

pocobio commented Aug 23, 2024

Что не делай, всё равно 148кб, помогите, молю.
UPD : 2024-08-23 13:15:46.287: [TUN] [poco3] Unable to bring up adapter: The process cannot access the file because it is being used by another process.

@Dozer641
Copy link

Все привет. Подскажите плиз. Че не так делаю????
Power Shell выдал такое

строка:7 знак:26

  • $SendMessage = $Socket .Send ([ Text.Encoding ]::ASCII.GetBytes( " ...
  •                      ~~~~~
    

Непредвиденная лексема ".Send" в выражении или операторе.
строка:8 знак:10

  • $Socket .Close ()
  •      ~~~~~~
    

Непредвиденная лексема ".Close" в выражении или операторе.
строка:8 знак:18

  • $Socket .Close ()
  •              ~
    

После ''('' ожидалось выражение.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

@wease1
Copy link

wease1 commented Aug 23, 2024

А на линуксе такой скрипт можно сбацать?

@Venom96669
Copy link

Venom96669 commented Aug 23, 2024

А на линуксе такой скрипт можно сбацать?

На Linux все намного проще.
Нужно добавить в конфиг клиента строчки:

[Interface]
...
ListenPort = 23123
PreUp = nping --udp --count 1 --data-length 64 --source-port 23123 --dest-port [ПортСервера] [АдресСервера]

p.s. Если на Linux не установлен nmap - его сначала нужно установить..

@GalichevPavel
Copy link

Привет, подскажи пож, в ip-src=<SRC_IP> и udp-src-port=<SRC_PORT> что указать нужно?

@knvpnkn
Copy link

knvpnkn commented Aug 23, 2024

Огромное спасибо за инструкцию, заработало! Может кто знает и подскажет как настроить отправку такого пакета с роутера Keenetic?

Этот вопрос тоже очень интересует. Пока ничего не придумал..

Спасибо, на ios завелось черз амнезию, На кинетик бы да....я так думаю надо прошику ждать

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment