Fix system stack rewriting TUN subnet destinations to loopback
The acceptLoop was rewriting any TCP destination within the TUN address prefix to 127.0.0.1/::1. This incorrectly caught the gateway address and other subnet addresses, not just the interface address itself.
This commit is contained in:
parent
0e624a007c
commit
24b12270db
1 changed files with 1 additions and 17 deletions
|
|
@ -330,23 +330,7 @@ func (s *System) acceptLoop(listener net.Listener) {
|
|||
s.logger.Trace(E.New("unknown session with port ", connPort))
|
||||
continue
|
||||
}
|
||||
destination := M.SocksaddrFromNetIP(session.Destination)
|
||||
if destination.Addr.Is4() {
|
||||
for _, prefix := range s.inet4Prefixes {
|
||||
if prefix.Contains(destination.Addr) {
|
||||
destination.Addr = netip.AddrFrom4([4]byte{127, 0, 0, 1})
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for _, prefix := range s.inet6Prefixes {
|
||||
if prefix.Contains(destination.Addr) {
|
||||
destination.Addr = netip.AddrFrom16([16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1})
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
go s.handler.NewConnectionEx(s.ctx, conn, M.SocksaddrFromNetIP(session.Source), destination, nil)
|
||||
go s.handler.NewConnectionEx(s.ctx, conn, M.SocksaddrFromNetIP(session.Source), M.SocksaddrFromNetIP(session.Destination), nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue