diff --git a/services/socks/udp.go b/services/socks/udp.go index ad66a55..ad71a01 100644 --- a/services/socks/udp.go +++ b/services/socks/udp.go @@ -54,6 +54,7 @@ func (s *Socks) proxyUDP(inConn *net.Conn, methodReq socks.MethodsRequest, reque utils.CloseConn(inConn) return } + srcIP, _, _ := net.SplitHostPort((*inConn).RemoteAddr().String()) inconnRemoteAddr := (*inConn).RemoteAddr().String() localAddr := &net.UDPAddr{IP: net.IPv4zero, Port: 0} udpListener, err := net.ListenUDP("udp", localAddr) @@ -191,6 +192,11 @@ func (s *Socks) proxyUDP(inConn *net.Conn, methodReq socks.MethodsRequest, reque } continue } + srcIP0, _, _ := net.SplitHostPort(srcAddr.String()) + //IP not match drop it + if srcIP != srcIP0 { + continue + } p := socks.NewPacketUDP() //convert data to raw if len(s.udpLocalKey) > 0 {