diff --git a/tcp.go b/tcp.go index e142fac6147b232276cdbed83a521c60c59244c0..e424f694d90dbfa908c1cb21069bbd01b4334e23 100644 --- a/tcp.go +++ b/tcp.go @@ -51,7 +51,7 @@ func tcpHandleConnection(conn net.Conn, logger *zap.Logger) { } targetAddr := Opts.TargetAddr6 - if AddrVersion(conn.RemoteAddr()) == 4 { + if AddrVersion(saddr) == 4 { targetAddr = Opts.TargetAddr4 } diff --git a/utils.go b/utils.go index 57065603051d102f76185e81068e4ea462516122..2610bb74300f4ecdbcd162d709bee32575054e6b 100644 --- a/utils.go +++ b/utils.go @@ -69,7 +69,7 @@ func DialUpstreamControl(sport int) func(string, string, syscall.RawConn) error } if network == "tcp6" || network == "udp6" { - syscallErr = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IP, syscall.IPV6_V6ONLY, 0) + syscallErr = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) if syscallErr != nil { syscallErr = fmt.Errorf("setsockopt(IPPROTO_IP, IPV6_ONLY, 0): %s", syscallErr.Error()) return