"feat(forwarder): 修改转发规则匹配逻辑,改为基于目标端口进行映射"
This commit is contained in:
parent
f27002ddff
commit
7013bd61f1
11
forwarder.go
11
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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue