fix: when host's ip in fakeip's range, don't send to remote server

This commit is contained in:
wwqgtxx
2022-11-10 21:08:06 +08:00
parent 7c8d8f56e1
commit 64552fbd00
2 changed files with 22 additions and 11 deletions

View File

@ -41,8 +41,18 @@ var (
udpTimeout = 60 * time.Second
alwaysFindProcess = false
fakeIPRange netip.Prefix
)
func SetFakeIPRange(p netip.Prefix) {
fakeIPRange = p
}
func FakeIPRange() netip.Prefix {
return fakeIPRange
}
func SetSniffing(b bool) {
if sniffer.Dispatcher.Enable() {
configMux.Lock()
@ -334,9 +344,11 @@ func handleTCPConn(connCtx C.ConnContext) {
dialMetadata := metadata
if len(metadata.Host) > 0 {
if node := resolver.DefaultHosts.Search(metadata.Host); node != nil {
dialMetadata.DstIP = node.Data()
dialMetadata.DNSMode = C.DNSHosts
dialMetadata = dialMetadata.Pure()
if dstIp := node.Data(); !FakeIPRange().Contains(dstIp) {
dialMetadata.DstIP = dstIp
dialMetadata.DNSMode = C.DNSHosts
dialMetadata = dialMetadata.Pure()
}
}
}