Прорывая QoS-блокаду операторов, WireGuard действительно обладает набором навыков!
Прорывая QoS-блокаду операторов, WireGuard действительно обладает набором навыков!

❝Исходная ссылка🔗:https://icloudnative.io/posts/wireguard-over-tcp-using-phantun/ Или нажмите на левый нижний угол Прочитайте оригинальную статью Посмотреть исходный текст напрямую👇

👉WireGuard Как более продвинутый и современный VPN протокол по сравнению с традиционным IPSec、OpenVPN Ожидается реализация, она будет более эффективной и простой в настройке и объединена в Linux Ядро удобнее использовать, просто VPN истребителей. Все больше и больше экспертов используют WireGuard Удовлетворите множество странных потребностей. Например, отечественные и зарубежные машины проходят WireGuard Откройте туннель и станьте фальшивкой IPLC Выделенная линия или подключить местную и Kubernetes Кластерная сеть.

но WireGuard В домашней сетевой среде вы столкнетесь с фатальнойизвопрос:Блокировка UDP/ограничение скорости。Хотяпроходить WireGuard Любые данные на основе IP протоколы (TCP, UDP, ICMP, SCTP, IPIP, GRE и т. д.), но WireGuard Сам туннель сквозной UDP протоколы связи, но у отечественных операторов просто нет возможности и сил общаться по TCP и UDP для глубокой настройки различных QoS Стратегия,Один размер подходит всемизозначает:верно UDP руководит ограничением скорости или даже блокадой

Господин Лу Синь однажды сказал: «Шерсть получается от овец!» Прорыв по-прежнему остается за операторами: хотя для UDP недружелюбный,НоНевозможно определить глубину TCP соединятьизподлинность

Это легко, ведь ты прав TCP Если я продолжу закрывать глаза, то я UDP связь, замаскированная под TCP Если вы не подключитесь, вам это сойдет с рук. В настоящее время поддерживает UDP трафик, замаскированный под TCP Основным инструментом для трафика является udp2raw[1],Я думаю, что многие друзья знакомы с этим инструментом.,но Извините,Сегодня главного героя нету,ида Другой мощнее этогоизновые инструменты:Phantun[2]

Знакомство с Фантомуном

Phantun весь проектПолностью реализовано на Rust,производительность udp2raw. Это исходное намерение и udp2raw Аналогично, все для достижения простого пользовательского состояния. TCP Государственная машина приходит в норму UDP Трафик замаскирован. Основная цель – сделать UDP Трафик выглядит так TCP и не хочу, чтобы на них влияло TCP retransmission или congestion control влияние.

Необходимо задекларировать изда,Phantun Цель не в том, чтобы заменить udp2raw,с самого начала Phantun Я надеюсь, что конструкция достаточно проста и эффективна, поэтому udp2raw поддерживается ICMP-туннелирование, шифрование, предотвращение повтораЖдите функций Phantun Все они предпочли не реализовывать его.

Phantomn предполагает, что протокол UDP сам по себе решил эти проблемы, поэтому весь процесс пересылки представляет собой простое изменение заголовка открытого текста плюс некоторую необходимую информацию для контроля состояния TCP. Что касается WireGuard, который я использую каждый день, конструкция Phantun достаточно безопасна, поскольку протокол WireGuard лучше реализует эти функции безопасности.

Phantun использует интерфейс TUN для отправки и получения пакетов уровня 3, а udp2raw использует фильтр Raw Socket + BFP. Лично я считаю, что реализация на основе TUN немного элегантнее, а кросс-платформенное портирование проще.

TCP-соединение Phantomun создается по требованию. При запуске Клиент не будет активно подключаться к серверу. Оно будет создано по запросу только после прибытия первого пакета данных. Каждый поток UDP имеет собственное независимое TCP-соединение. Это сильно отличается от udp2raw. Все UDP-соединения в udp2raw используют TCP-соединение. Недостаток этого подхода заключается в том, что udp2raw требует дополнительной информации заголовка для различения соединений, что еще больше увеличивает накладные расходы заголовка. По сравнению с чистым UDP, дополнительный заголовок Phantun на пакет составляет 12 байт, а udp2raw согласно моим тестам достигает 44 байт.

Ниже приводится подробное сравнение Phantomun и udp2raw:

Phantun

udp2raw

Обфускация UDP через FakeTCP

Обфускация UDP поверх ICMP

UDP поверх UDP-микширования

многопоточность

Пропускная способность

Better

Good

Режим пересылки уровня 3

TUN interface

Raw sockets + BPF

Накладные расходы MTU туннеля

12 bytes

44 bytes

Каждый поток UDP имеет собственное независимое TCP-соединение.

Client/Server

Server only

Запретить повтор, зашифровать

IPv6

Как работает Фантом

Phantun В режиме для Сервериклиент Сервер будет прослушивать порт, например 4567 (через --local указанный параметр) и UDP Пакеты пересылаются на UDP Сервис (здесь имеется в виду да Сервер WireGuard из Прослушивание порта и адреса, через --remote спецификация параметров).

клиент также будет прослушивать порт, например 127.0.0.1:4567(проходить --local указан параметр) и передать --remote Параметры и Сервер (например, 10.0.0.1:4567)Учреждатьсоединять。

клиент Сервер создаст TUN Сетевая карта, клиент TUN Сетевая карта назначена по умолчанию IPv4/IPv6 Адреса 192.168.200.2 и fcc8::2,Сервер TUN Сетевая карта назначена по умолчанию IPv4/IPv6 Адреса 192.168.201.2 и fcc9::2

клиенти Сервер все нужно включить IP переадресации, и необходимо создать соответствующий NAT правило. клиент верен требуется до того, как трафик покинет физический сетевой адаптер. IP 192.168.200.2 руководить SNAT; Сервер требует Воля до того, как трафик попадет на сетевую карту IP DNAT для 192.168.201.2

Этапы настройки Phantomun

Далее я буду использовать пример, чтобы продемонстрировать, как использовать Phantun Воля WireGuard из UDP трафик, замаскированный под ПТС. Нам нужно установить их отдельно в Сервериклиент. Фантун, ты можешь прийти страница выпуска[3]скачать,Рекомендуется скачать статически скомпилированную версию. phantun_x86_64-unknown-linux-musl.zip

Сервер

гипотеза Сервериз публичной сети IP Адрес 121.36.134.95,WireGuard Прослушивающий порт 51822。Сначала измените файл конфигурации /etc/wireguard/wg0.conf,существовать [Interface] Добавьте следующую конфигурацию:

Язык кода:javascript
копировать
MTU = 1300
PreUp = iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2
PreUp = RUST_LOG=info phantun_server --local 4567 --remote 127.0.0.1:51822 &> /var/log/phantun_server.log &
PostDown = iptables -t nat -D PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2
PostDown = killall phantun_server || true

Тебе нужен Воля eth0 Замените на имя вашей физической сетевой карты Сервериз. МТУ Я не буду сейчас об этом беспокоиться, я расскажу вам, как это отладить позже.

Язык кода:javascript
копировать
PreUp = iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2

Вот этот iptables Представление правил Воля 4567 Порт входящего трафика DNAT для TUN сетевая карта IP адрес.

Язык кода:javascript
копировать
PreUp = RUST_LOG=info phantun_server --local 4567 --remote 127.0.0.1:51822 &> /var/log/phantun_server.log &

Это начнется здесь phantun_server, мониторинг на 4567 порт и Воля UDP Пакеты пересылаются на WireGuard。

Сервервесьиз WireGuard Конфигурация:

Язык кода:javascript
копировать
# local settings for Endpoint B
[Interface]
PrivateKey = QH1BJzIZcGo89ZTykxls4i2DKgvByUkHIBy3BES2gX8= 
Address = 10.0.0.2/32
ListenPort = 51822
MTU = 1300
PreUp = iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2
PreUp = RUST_LOG=info phantun_server --local 4567 --remote 127.0.0.1:51822 &> /var/log/phantun_server.log &
PostDown = iptables -t nat -D PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2
PostDown = killall phantun_server || true

# remote settings for Endpoint A
[Peer]
PublicKey = wXtD/VrRo92JHc66q4Ypmnd4JpMk7b1Sb0AcT+pJfwY= 
AllowedIPs = 10.0.0.1/32

Наконец, перезапустите WireGuard:

Язык кода:javascript
копировать
$ systemctl restart wg-quick@wg0

клиент

гипотезаклиентиз WireGuard Прослушивающий порт 51821。Сначала измените файл конфигурации /etc/wireguard/wg0.conf,существовать [Interface] Добавьте следующую конфигурацию:

Язык кода:javascript
копировать
MTU = 1300
PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE
PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &> /var/log/phantun_client.log &
PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE
PostDown = killall phantun_client || true

Тебе нужен Воля eth0 Замените на имя вашей физической сетевой карты Сервериз.

Язык кода:javascript
копировать
PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE

Вот этот iptables Правила представляют собой пары из 192.168.200.2(TUN сетевая карта) из Исходящего трафика руководить MASQUERADE。

Язык кода:javascript
копировать
PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &> /var/log/phantun_client.log &

Это начнется здесь phantun_client, мониторит 4567 Соединение порта и и Сервера, камуфляж Воля из TCP Пакет данных доставляется на Сервер.

Кроме того, необходимы модификации WireGuard peer из Endpoint, Воля его модификация для 127.0.0.1:4567。

Язык кода:javascript
копировать
Endpoint = 127.0.0.1:4567

клиентвесьиз WireGuard Конфигурация:

Язык кода:javascript
копировать
# local settings for Endpoint A
[Interface]
PrivateKey = 0Pyz3cIg2gRt+KxZ0Vm1PvSIU+0FGufPIzv92jTyGWk=
Address = 10.0.0.1/32
ListenPort = 51821
MTU = 1300
PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE
PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &> /var/log/phantun_client.log &
PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE
PostDown = killall phantun_client || true

# remote settings for Endpoint B
[Peer]
PublicKey = m40NDb5Cqtb78b1DVwY1+kxbG2yEcRhxlrLm/DlPpz8=
Endpoint = 127.0.0.1:4567
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25

Наконец, перезапустите WireGuard:

Язык кода:javascript
копировать
$ systemctl restart wg-quick@wg0

Проверять phantun_client избревно:

Язык кода:javascript
копировать
$ tail -f /var/log/phantun_client.log
 INFO  client > Remote address is: 121.36.134.95:4567
 INFO  client > 1 cores available
 INFO  client > Created TUN device tun0
 INFO  client > New UDP client from 127.0.0.1:51821
 INFO  fake_tcp > Sent SYN to server
 INFO  fake_tcp > Connection to 121.36.134.95:4567 established

Проверять wg0 интерфейс:

Язык кода:javascript
копировать
$ wg show wg0
interface: wg0
  public key: wXtD/VrRo92JHc66q4Ypmnd4JpMk7b1Sb0AcT+pJfwY=
  private key: (hidden)
  listening port: 51821

peer: m40NDb5Cqtb78b1DVwY1+kxbG2yEcRhxlrLm/DlPpz8=
  endpoint: 127.0.0.1:4567
  allowed ips: 10.0.0.2/32
  latest handshake: 1 minute, 57 seconds ago
  transfer: 184 B received, 648 B sent
  persistent keepalive: every 25 seconds

Тестовое подключение:

Язык кода:javascript
копировать
$ ping 10.0.0.2 -c 3
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=13.7 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=14.4 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=15.0 ms

--- 10.0.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 13.718/14.373/15.047/0.542 ms

клиент(много Сервер)

Если клиент хочет создать соединение с несколькими Серверами, новая конфигурация из Сервера выглядит следующим образом:

Язык кода:javascript
копировать
PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4568 --remote xxxx:4567 --tun-local=192.168.202.1 --tun-peer=192.168.202.2 &> /var/log/phantun_client.log &
PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.202.2 -j MASQUERADE

Локальный порт прослушивания должен выбрать порт, отличный от предыдущего. Аналогично TUN. сетевая карта Адрес также необходимо изменить.。финальныйиз Конфигурация следующая:

Язык кода:javascript
копировать
# local settings for Endpoint A
[Interface]
PrivateKey = 0Pyz3cIg2gRt+KxZ0Vm1PvSIU+0FGufPIzv92jTyGWk=
Address = 10.0.0.1/32
ListenPort = 51821
MTU = 1300
PreUp = iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE
PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4567 --remote 121.36.134.95:4567 &> /var/log/phantun_client.log &
PreUp = RUST_LOG=info phantun_client --local 127.0.0.1:4568 --remote xxxx:4567 --tun-local=192.168.202.1 --tun-peer=192.168.202.2 &> /var/log/phantun_client.log &
PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.200.2 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -s 192.168.202.2 -j MASQUERADE
PostDown = killall phantun_client || true

# remote settings for Endpoint B
[Peer]
PublicKey = m40NDb5Cqtb78b1DVwY1+kxbG2yEcRhxlrLm/DlPpz8=
Endpoint = 127.0.0.1:4567
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25

Настройка MTU

Если вы используете ping или dig Тестирование с другими инструментами (небольшие пакеты данных) WireGuard туннель может работать нормально, но к браузеру или удаленному рабочему столу (большому пакету данных) нормально не получить доступ, очень вероятно да MTU извопрос,Тебе нужен Воля MTU Уменьшите значение из.

Phantun Официальный совет Воля MTU изнабор значенийдля 1428(гипотезафизикасетевая карта MTU да 1500), но по моему тесту есть проблема. Рекомендуется задать вопрос напрямую MTU Установить минимальное значение 1280,затем постепенно увеличивайте,Пока он не работает должным образом,В это время тыиз MTU Просто лучшее соотношение цены и качества.

Вы потерпели неудачу в учебе?

Ссылки

  • Phantun - Rust Пишите легко UDP -> TCP обфускатор[4]
  • Phantun GitHub Repo[5]

Справочная ссылка

[1]

udp2raw: https://github.com/wangyu-/udp2raw-tunnel

[2]

Phantun: https://github.com/dndx/phantun

[3]

release страница: https://github.com/dndx/phantun/releases

[4]

Phantun - Rust Пишите легко UDP -> TCP Обфускатор: https://www.v2ex.com/t/802949

[5]

Phantun GitHub Repo: https://github.com/dndx/phantun

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose