Прокси UDP через WebSocket — полезно использовать WireGuard в сетях с ограниченным доступом.
Базовый пример:
график LR
WC[Wireguard Client] ---|UDP| Б[Клиент Зии]
B ---|Вебсокет| C[Сервер Зия]
C ---|UDP| D[Сервер Wireguard]
Преимущество заключается в том, что WebSocket использует HTTP. Если вы находитесь в сети с ограниченным доступом, где вы можете получить доступ к внешним службам только с помощью предоставленного HTTP-прокси, вы можете проксировать UDP-трафик WireGuard через WebSocket через этот прокси.
график LR
WC[Wireguard Client] ---|UDP| Б[Клиент Зии]
B ---|Вебсокет| C[Http-прокси]
C ---|Вебсокет| Д[Сервер Зия]
Д ---|UDP| E[Сервер Wireguard]
Имя | Описание |
---|---|
Вебсокет | Датаграммы UDP заключаются в рамки WebSocket. Эти кадры затем передаются на сервер, где они разворачиваются. |
TCP | Датаграммы UDP имеют префикс длиной 16 бит и затем передаются на сервер в пакетах TCP. На сервере эти пакеты разворачиваются и пересылаются фактическому восходящему потоку UDP. |
Клиент может выполнять рукопожатие TLSv2 или TLSv3, сервер не может обрабатывать запросы TLS. В случае необходимости сквозного (zia-client <-> zia-server) TLS-шифрования вам необходимо проксировать трафик для сервера с помощью обратного прокси-сервера.
Просто загрузите соответствующий двоичный файл из последней версии или используйте образ Docker:
ghcr.io/marcelcoding/zia-client
Переменные среды:
ZIA_LISTEN_ADDR=127.0.0.1:8080 # local udp listener
ZIA_UPSTREAM=ws://domain.tld:1234 # your zia server instance (ws(s) or tcp(s))
# ZIA_PROXY=http://user:[email protected]:8080 # optional http(s) proxy
Если вы используете двоичный файл, используйте --help
для всех доступных опций.
Просто загрузите соответствующий двоичный файл из последней версии или используйте образ Docker:
ghcr.io/marcelcoding/zia-server
Переменные среды:
ZIA_LISTEN_ADDR=0.0.0.0:1234 # public websocket listener (client -> ZIA_UPSTREAM)
ZIA_UPSTREAM=domain.tld:9999 # your actual udp service e.g. wireguard listener
ZIA_MODE=WS # WS or TCP see client -> ZIA_UPSTREAM
Если вы используете двоичный файл, используйте --help
для всех доступных опций.