Fix ipv6 tproxy listener

This commit is contained in:
世界 2025-09-09 14:16:31 +08:00
parent 79c0b9f51d
commit f16468e74f
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
2 changed files with 4 additions and 2 deletions

View File

@ -3,6 +3,7 @@ package listener
import (
"net"
"net/netip"
"strings"
"syscall"
"time"
@ -56,7 +57,7 @@ func (l *Listener) ListenTCP() (net.Listener, error) {
if l.tproxy {
listenConfig.Control = control.Append(listenConfig.Control, func(network, address string, conn syscall.RawConn) error {
return control.Raw(conn, func(fd uintptr) error {
return redir.TProxy(fd, !M.ParseSocksaddr(address).IsIPv4(), false)
return redir.TProxy(fd, !strings.HasSuffix(network, "4"), false)
})
})
}

View File

@ -5,6 +5,7 @@ import (
"net"
"net/netip"
"os"
"strings"
"syscall"
"github.com/sagernet/sing-box/adapter"
@ -41,7 +42,7 @@ func (l *Listener) ListenUDP() (net.PacketConn, error) {
if l.tproxy {
listenConfig.Control = control.Append(listenConfig.Control, func(network, address string, conn syscall.RawConn) error {
return control.Raw(conn, func(fd uintptr) error {
return redir.TProxy(fd, !M.ParseSocksaddr(address).IsIPv4(), true)
return redir.TProxy(fd, !strings.HasSuffix(network, "4"), true)
})
})
}