
Туннель, который преобразует UDP-трафик в зашифрованный UDP/FakeTCP/ICMP трафик, используя Raw Socket, помогает вам обходить UDP-файрволлы (или нестабильное окружение UDP)
Туннель, который преобразует UDP-трафик в зашифрованный трафик FakeTCP/UDP/ICMP с помощью Raw Socket, помогая обходить UDP-файерволы (или нестабильное UDP-окружение).
При самостоятельном использовании udp2raw туннелирует только UDP-трафик. Тем не менее, если вы используете udp2raw вместе с любым UDP-based VPN, вы можете туннелировать любой трафик (включая TCP/UDP/ICMP). В настоящее время подтверждена поддержка OpenVPN/L2TP/ShadowVPN и tinyfecVPN.

или

Хост Linux (включая настольный Linux, Android-телефон/планшет, маршрутизатор OpenWRT или Raspberry Pi) с root-аккаунтом или возможностью cap_net_raw.
Для пользователей Windows и MacOS используйте udp2raw из этого репозитория.
Заголовки ICMP/FakeTCP помогают обойти блокировку UDP, UDP QOS или некорректное поведение UDP NAT у некоторых провайдеров. В режиме заголовка ICMP udp2raw работает как ICMP-туннель.
Заголовки UDP также поддерживаются. В режиме заголовка UDP он ведет себя как обычный UDP-туннель, и вы можете просто использовать другие функции (такие как шифрование, защита от повторного воспроизведения или стабилизация соединения).
В режиме заголовка FakeTCP udp2raw симулирует трехстороннее рукопожатие при установлении соединения, симулирует seq и ack_seq во время передачи данных. Он также симулирует несколько TCP-опций, таких как: MSS, sackOk, TS, TS_ack, wscale. Файерволы будут считать FakeTCP TCP-соединением, но по сути это UDP: он поддерживает доставку в реальном времени/с нарушением порядка (как обычный UDP), без контроля перегрузки или повторной передачи. Поэтому не будет проблемы TCP over TCP при использовании OpenVPN.
Сбои соединения обнаруживаются с помощью heartbeat-пакетов. Если произошел тайм-аут, клиент автоматически сменит номер порта и переподключится. Если переподключение успешно, предыдущее соединение будет восстановлено, и все существующие UDP-сессии останутся действительными.
Например, если вы используете udp2raw + OpenVPN, OpenVPN не потеряет соединение после любого переподключения, даже если сетевой кабель будет переподключен или точка доступа Wi-Fi изменится.
make cross, и все готово. (Примечание: предварительно скомпилированные бинарные файлы для Desktop, Raspberry Pi, Android, некоторых маршрутизаторов OpenWrt уже включены в Релизы).Bypass UDP QoS Bypass UDP Blocking Bypass OpenVPN TCP over TCP problem OpenVPN over ICMP UDP to ICMP tunnel UDP to TCP tunnel UDP over ICMP UDP over TCP
Загрузите бинарный релиз с https://github.com/wangyu-/udp2raw-tunnel/releases
Предположим, ваш UDP заблокирован, или применяется QOS, или просто плохо поддерживается. Предположим, IP вашего сервера 44.55.66.77, и у вас есть служба, слушающая UDP-порт 7777.
# Run at server side:
./udp2raw_amd64 -s -l0.0.0.0:4096 -r 127.0.0.1:7777 -k "passwd" --raw-mode faketcp -a
# Run at client side
./udp2raw_amd64 -c -l0.0.0.0:3333 -r44.55.66.77:4096 -k "passwd" --raw-mode faketcp -a
(The above commands need to be run as root. For better security, with some extra steps, you can run udp2raw as non-root. Check this link for more info )


Теперь между клиентом и сервером через TCP-порт 4096 установлен зашифрованный raw-туннель. Подключение к UDP-порту 3333 на стороне клиента эквивалентно подключению к порту 7777 на стороне сервера. Никакой UDP-трафик не будет раскрыт.
Для запуска на Android смотрите Android_Guide
-a опция автоматически добавляет для вас правило iptables (или несколько правил iptables), udp2raw полагается на это правило iptables для стабильной работы. Убедитесь, что вы не забыли -a (это частая ошибка). Если вы не хотите, чтобы udp2raw автоматически добавлял правило iptables, вы можете добавить его вручную (посмотрите опцию -g) и опустить -a.
udp2raw-tunnel
git version:4623f878e0 build date:Nov 3 2024 23:15:46
repository: https://github.com/wangyu-/udp2raw-tunnel
usage:
run as client : ./this_program -c -l local_listen_ip:local_port -r server_address:server_port [options]
run as server : ./this_program -s -l server_listen_ip:server_port -r remote_address:remote_port [options]