fix: when host's ip in fakeip's range, don't send to remote server
This commit is contained in:
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user