在 linux 系统上,我构建了自己的隧道协议,通过非标准化但经过验证的介质中继数据包。我所做的是使用 iptables 和 NFQUEUE 捕获数据包,通过我的介质中继它们,然后在另一端使用原始套接字重新注入它们。进入隧道的数据包与出来的数据包完全相同,经过验证。问题是,如果 ping 的目的地与隧道端点相同,则这不适用于 ICMP Ping(回声请求)。如果目的地与隧道端点不同,则 ping 数据包将重新路由并按应有的方式到达接收方,然后 ping 回复将返回给发送方。有谁知道发生了什么事。是否可以将原始 icmp 发送给自己?如果没有,有人知道我应该做什么吗?
我所拥有的是:
R1 ---- T1 -----T2 ------ R2
R1 ping R2。
R1、R2、路由器 1 和路由器 2 T1、T2、隧道点 1 和 2。(R1 和 T1 位于同一路由器上,R2 和 T2 位于同一路由器上)。此设置不起作用。
这确实有效:
R1 ---- T1 -----T2 ------ R2 ----- R3
R1 ping R3,这行得通。
有任何想法吗?
/安迪