发给我自己的原始 ICMP 数据包

发布于 2024-10-18 07:35:47 字数 581 浏览 6 评论 0原文

在 Linux 系统上,我构建了自己的隧道协议,通过非标准化但经过验证的介质中继数据包。我所做的是使用 iptables 和 NFQUEUE 捕获数据包,通过我的介质中继它们,并在另一端使用原始套接字重新注入它们。进入隧道的数据包与出来的数据包完全相同,经过验证。 问题是,如果 ping 的目标与隧道端点相同,则这对于 ICMP Ping(回显请求)不起作用。 如果目的地与隧道端点不同,则 ping 数据包将重新路由并按其应有的方式到达接收方,并且 ping 回复将返回发送方。 有谁知道发生了什么事。不是可以把raw 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,这有效。

有什么想法吗?

/安迪

On a linux system, I have built my own tunneling protocol, where I relay packets over a non-standarized but verfied medium. What I do is capture the packets using iptables and NFQUEUE, relay them over my medium, and at the other end I reinject them using raw sockets. The packet going into the tunnel is exactly the same as the one coming out, verified.
The problem is that this doesn't work for ICMP Ping (Echo Request) if the destination of the ping is the same as the tunnel endpoint.
If the destination is not the same as the tunnel endpoint, the ping packet is rerouted and arrives as it should at the receiver, and the ping reply comes back to the sender.
Does anyone know whats going on. Isn't it possible to send raw icmp to yourself? If not, anyone have an idea what I should do instead?

What I have is:

R1 ---- T1 -----T2 ------ R2

R1 pings R2.

R1, R2, router 1 and router 2
T1, T2, Tunnel Points 1 and 2. (R1 and T1 located on the same router, and R2 and T2 on the same router).
This setup does not work.

This do work:

R1 ---- T1 -----T2 ------ R2 ----- R3

R1 ping R3, this works.

Any ideas?

/Andy

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可爱咩 2024-10-25 07:35:47

我不知道是否可能,但拦截和重新注入数据包的首选方法是使用 tun/tap 接口(另请参阅内核 Documentation/ 目录)。我想如果你切换的话 ICMP 会起作用。

I don't know if it's possible,but the preferred way to intercept and re-inject packets is to use the tun/tap interface (also see the kernel Documentation/ directory). I'd imagine ICMP would work if you switch.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文