"feat(forwarder): 修改转发规则匹配逻辑,改为基于目标端口进行映射"

This commit is contained in:
程广 2025-07-03 18:34:10 +08:00
parent f27002ddff
commit 7013bd61f1
1 changed files with 6 additions and 5 deletions

View File

@ -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)