Proxy UDP sobre WebSocket - útil para usar WireGuard em redes restritas.
Exemplo básico:
gráfico LR
WC[Cliente Wireguard] ---|UDP| B[Cliente Zia]
B ---|WebSocket| C[Servidor Zia]
C ---|UDP| D[Servidor Wireguard]
A vantagem é que o WebSocket usa HTTP. Se você estiver em uma rede restrita onde só pode acessar serviços externos usando um proxy HTTP fornecido, você pode fazer proxy do tráfego UDP do WireGuard através do WebSocket por meio desse proxy.
gráfico LR
WC[Cliente Wireguard] ---|UDP| B[Cliente Zia]
B ---|WebSocket| C[Proxy HTTP]
C ---|WebSocket| D[Servidor Zia]
D ---|UDP| E[Servidor Wireguard]
Nome | Descrição |
---|---|
WebSocket | Os datagramas UDP são agrupados em frames WebSocket. Esses quadros são então transmitidos ao servidor, onde são desembrulhados. |
TCP | Os datagramas UDP são prefixados com um comprimento de datagrama de 16 bits e então transmitidos ao servidor em pacotes TCP. No servidor, esses pacotes são desembrulhados e encaminhados para o upstream UDP real. |
O cliente é capaz de fazer um handshake TLSv2 ou TLSv3, o servidor não é capaz de lidar com solicitações TLS. Em um caso em que uma criptografia TLS de ponta a ponta (zia-client <-> zia-server) deva ocorrer, você deverá proxy do tráfego para o servidor usando um proxy reverso.
Basta baixar o binário apropriado da versão mais recente ou usar a imagem do Docker:
ghcr.io/marcelcoding/zia-client
Variáveis de ambiente:
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
Se você estiver usando o binário, use --help
para todas as opções disponíveis.
Basta baixar o binário apropriado da versão mais recente ou usar a imagem do Docker:
ghcr.io/marcelcoding/zia-server
Variáveis de ambiente:
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
Se você estiver usando o binário, use --help
para todas as opções disponíveis.