diff --git a/forwarder.go b/forwarder.go index a9f6705..72433bd 100644 --- a/forwarder.go +++ b/forwarder.go @@ -87,23 +87,24 @@ func (f *Forwarder) ForwardPacket(ipLayer *layers.IPv4, transportLayer gopacket. // 获取源IP和端口 srcIP := ipLayer.SrcIP.String() - var srcPort int + var srcPort, dstPort int // 根据传输层协议获取端口 switch t := transportLayer.(type) { case *layers.TCP: srcPort = int(t.SrcPort) - // dstPort = int(t.DstPort) + dstPort = int(t.DstPort) case *layers.UDP: srcPort = int(t.SrcPort) - // dstPort = int(t.DstPort) + dstPort = int(t.DstPort) default: // 不支持的传输层协议 return nil } - // 查找转发规则 - key := fmt.Sprintf("%s:%d", srcIP, srcPort) + // 查找转发规则, 按照目标端口查找并转发。 + // 相当于做了一个端口映射。 + key := fmt.Sprintf(":%d", dstPort) // srcIP, srcPort) if forwardAddr, exists := f.natTable[key]; exists { // 解析转发目标地址 addr, port, err := net.SplitHostPort(forwardAddr)