gpt4 book ai didi

linux - 给我自己的原始 ICMP 数据包

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:12 25 4
gpt4 key购买 nike

在 Linux 系统上,我构建了自己的隧道协议(protocol),通过非标准化但经过验证的介质中继数据包。我所做的是使用 iptables 和 NFQUEUE 捕获数据包,通过我的媒介中继它们,在另一端我使用原始套接字重新注入(inject)它们。进入隧道的数据包与经过验证的数据包完全相同。问题是如果 ping 的目的地与隧道端点相同,这对 ICMP Ping(回声请求)不起作用。如果目的地与隧道端点不同,则 ping 数据包将被重新路由并按原样到达接收方,ping 回复将返回给发送方。有谁知道发生了什么事。不能给自己发送原始 icmp 吗?如果没有,有人知道我应该怎么做吗?

我有的是:

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

R1 ping R2。

R1、R2、路由器 1 和路由器 2T1、T2、隧道点 1 和 2。(R1 和 T1 位于同一路由器上,R2 和 T2 位于同一路由器上)。此设置不起作用。

这确实有效:

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

R1 ping R3,这有效。

有什么想法吗?

/安迪

最佳答案

我不知道这是否可行,但拦截和重新注入(inject)数据包的首选方法是使用 tun/tap接口(interface)(另见内核文档/目录)。我想如果您切换,ICMP 会起作用。

关于linux - 给我自己的原始 ICMP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5067289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com