mirror of
https://github.com/go-gost/gost.git
synced 2026-10-08 20:15:46 +00:00
Covers gost#911 at the wire level: four UDP source sockets send through one RUDP reverse tunnel bound on a relay server, and every datagram must come back byte-identical to its own endpoint. A frame torn by an interleaved writer shows up twice — as a corrupted payload, and as the torn frame leaving half a header in the stream, which the far end reads as "unexpected EOF" and answers by rebuilding the whole tunnel. So the suite asserts both: no endpoint sees a corrupted datagram, and no endpoint sees a receive gap long enough to be a teardown and rebind. Verified against a binary built before the fix (4 endpoints, 35% loss, 1.4s gaps, suite fails) and after it (0% loss, no corruption, 0.2s gaps, passes).
34 lines
902 B
YAML
34 lines
902 B
YAML
# Internal client behind NAT for gost#911: a UDP forward service that sends all
|
|
# traffic to the port the host bound through the reverse tunnel.
|
|
#
|
|
# The forwarder target is gost-server:8432 — that is where the reverse tunnel is
|
|
# actually bound (the host's rudp listener asked the relay server to bind it, so
|
|
# the port lives on the relay server, not on the host). Datagrams go there and
|
|
# are carried back to the internal host over the one shared tunnel stream.
|
|
services:
|
|
- name: service-0
|
|
addr: ":8432"
|
|
handler:
|
|
type: udp
|
|
listener:
|
|
type: udp
|
|
metadata:
|
|
keepalive: true
|
|
ttl: 5m
|
|
forwarder:
|
|
nodes:
|
|
- name: tunnel
|
|
addr: gost-server:8432
|
|
|
|
chains:
|
|
- name: chain-0
|
|
hops:
|
|
- nodes:
|
|
- addr: gost-server:8430
|
|
connector:
|
|
type: relay
|
|
dialer:
|
|
type: tcp
|
|
|
|
log:
|
|
level: debug |