From 1a43ac8d304d5256f12723b55ae6f00d022a5bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 1 May 2025 12:26:25 +0800 Subject: [PATCH] Fix tproxy writeback --- protocol/redirect/tproxy.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/protocol/redirect/tproxy.go b/protocol/redirect/tproxy.go index 7860e173..d3aff2ad 100644 --- a/protocol/redirect/tproxy.go +++ b/protocol/redirect/tproxy.go @@ -146,10 +146,11 @@ func (w *tproxyPacketWriter) WritePacket(buffer *buf.Buffer, destination M.Socks } return err } - var listener net.ListenConfig - listener.Control = control.Append(listener.Control, control.ReuseAddr()) - listener.Control = control.Append(listener.Control, redir.TProxyWriteBack()) - packetConn, err := listener.ListenPacket(w.ctx, "udp", destination.String()) + var dialer net.Dialer + dialer.LocalAddr = destination.UDPAddr() + dialer.Control = control.Append(dialer.Control, control.ReuseAddr()) + dialer.Control = control.Append(dialer.Control, redir.TProxyWriteBack()) + packetConn, err := dialer.DialContext(w.ctx, "udp", w.source.String()) if err != nil { return err }