目前正在使用基于 Go 的 NAT 路由器,并且在转换 ICMP 流量时看到了一些有趣的行为。
客户端请求被转发到服务器,服务器跟踪内部 IP 和客户端 ICMP ID,使用来自服务器的开放 ICMP ID,更改数据包中的字段并将其转发到外部地址(在本例中为 8.8.8.8.8.8 和8.8)。
当服务器收到响应时,它会查找外部 ICMP 数据包 ID 的内部 IP、MAC 和 ICMP ID 并将其转发回客户端。
我可能会遗漏一些基本的东西,因为我离问题太近了,但我们将不胜感激。如果数据包以某种我无法识别的方式出现格式错误,那么我将能够相应地调整代码。
收到外部回复后从服务器发送的回复