Skip to content

Commit ac1e896

Browse files
authored
Merge pull request #1030 from ge9/master
use outgoing interface's IP for UDP relay port
2 parents ee07120 + 00c36ab commit ac1e896

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

socks.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,7 @@ func (h *socks5Handler) handleUDPRelay(conn net.Conn, req *gosocks5.Request) {
11251125
return
11261126
}
11271127

1128-
relay, err := net.ListenUDP("udp", nil)
1128+
relay, err := net.ListenUDP("udp", &net.UDPAddr{IP: conn.LocalAddr().(*net.TCPAddr).IP, Port: 0}) // use out-going interface's IP
11291129
if err != nil {
11301130
log.Logf("[socks5-udp] %s -> %s : %s", conn.RemoteAddr(), conn.LocalAddr(), err)
11311131
reply := gosocks5.NewReply(gosocks5.Failure, nil)
@@ -1138,7 +1138,6 @@ func (h *socks5Handler) handleUDPRelay(conn net.Conn, req *gosocks5.Request) {
11381138
defer relay.Close()
11391139

11401140
socksAddr := toSocksAddr(relay.LocalAddr())
1141-
socksAddr.Host, _, _ = net.SplitHostPort(conn.LocalAddr().String()) // replace the IP to the out-going interface's
11421141
reply := gosocks5.NewReply(gosocks5.Succeeded, socksAddr)
11431142
if err := reply.Write(conn); err != nil {
11441143
log.Logf("[socks5-udp] %s <- %s : %s", conn.RemoteAddr(), conn.LocalAddr(), err)

0 commit comments

Comments
 (0)