ginuerzh/gost · error
socks5 UDP tunnel failure
Error message
socks5 UDP tunnel failure
What it means
Returned by the SOCKS5 UDP-over-TCP tunnel code when the server's reply to a CmdUDPTun associate request carries a Rep code other than Succeeded. The TCP control connection is fine, but the server refused to allocate the UDP relay endpoint, so no UDP tunnel can be established.
Solutions
- Check whether the SOCKS5 server supports the UDP ASSOCIATE/udp-tun command
- Verify the server's UDP relay port is open and not blocked by a firewall
- Confirm server-side ACLs allow UDP relay for the requesting client
- Retry against a different proxy node that permits UDP forwarding
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at socks.go:1934 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ginuerzh/gost@a33fdbf4c9 (2026-09-02).
Data as JSON: /api/errors/bb9ae7dc37e68d1d.
Report an issue: GitHub.
Appendix: source
Thrown at socks.go:1934
req := gosocks5.NewRequest(CmdUDPTun, toSocksAddr(raddr))
if err := req.Write(cc); err != nil {
return nil, err
}
if Debug {
log.Log("[socks5] udp-tun", req)
}
reply, err := gosocks5.ReadReply(cc)
if err != nil {
return nil, err
}
if Debug {
log.Log("[socks5] udp-tun", reply)
}
if reply.Rep != gosocks5.Succeeded {
return nil, errors.New("socks5 UDP tunnel failure")
}
baddr, err := net.ResolveUDPAddr("udp", reply.Addr.String())
if err != nil {
return nil, err
}
log.Logf("[socks5] udp-tun associate on %s OK", baddr)
return &socks5UDPTunnelConn{
Conn: cc,
taddr: taddr,
}, nil
}
func (c *socks5UDPTunnelConn) Read(b []byte) (n int, err error) {
n, _, err = c.ReadFrom(b)
return
}View on GitHub (pinned to a33fdbf4c9)