奇怪的 IP 数据包负载损坏

网络工程 路由器 ipv4 纳特 互联网
2021-07-16 21:38:32

我正在开发一种直接在 IP 之上分层的传输协议,并在进行实验以查看 Internet 上的路由器如何对未定义的协议做出反应时,我观察到了一些不寻常的行为。

我的实验涉及从公共互联网上的一台主机向另一台主机发送一个普通的 IPv4 数据包。两台主机都是典型的家庭用户设置:

[Host] -> [Router/Modem Billion 7300GRA] -> (Internet)

够简单了吧?显然,我观察到的情况并非如此,尽管正在接收数据包,但存在一种模式,其中每个其他数据包的有效载荷的前 4 个字节都被清零。下面是一个示例:

0000   00 1c c0 93 6a 7f 00 04 ed 9b 53 26 08 00 45 00  ....j.....S&..E.
0010   00 1d 37 ff 00 00 70 fd 27 2b 3a a2 ef 6d c0 a8  ..7...p.'+:..m..
0020   00 02 00 00 00 00 4d 53 47 00 01 aa 00 00 4d 53  ......MSG.....MS
0030   00 00 00 00 88 64 63 78 00 00 0b 00              .....dcx....

0000   00 1c c0 93 6a 7f 00 04 ed 9b 53 26 08 00 45 00  ....j.....S&..E.
0010   00 1d 38 08 00 00 70 fd 27 22 3a a2 ef 6d c0 a8  ..8...p.'":..m..
0020   00 02 54 45 53 54 4d 53 47 00 02 aa 53 54 4d 53  ..TESTMSG...STMS
0030   00 00 00 00 88 64 65 78 00 00 0b 00              .....dex....

0000   00 1c c0 93 6a 7f 00 04 ed 9b 53 26 08 00 45 00  ....j.....S&..E.
0010   00 1d 38 15 00 00 70 fd 27 15 3a a2 ef 6d c0 a8  ..8...p.'.:..m..
0020   00 02 00 00 00 00 4d 53 47 00 03 aa 00 00 4d 53  ......MSG.....MS
0030   00 00 00 00 88 64 1e bc 80 00 33 db              .....d....3.

0000   00 1c c0 93 6a 7f 00 04 ed 9b 53 26 08 00 45 00  ....j.....S&..E.
0010   00 1d 38 21 00 00 70 fd 27 09 3a a2 ef 6d c0 a8  ..8!..p.'.:..m..
0020   00 02 54 45 53 54 4d 53 47 00 04 aa 53 54 4d 53  ..TESTMSG...STMS
0030   00 00 00 00 88 64 04 00 00 00 89 ff              .....d......

这种模式似乎无止境地继续下去。预计有效载荷结构为:

[8 bytes] "TESTMSG\0"
[1 bytes] A counter incremented per packet (added to verify it wasn't some strange ordering issue)

我还在 IP 标头中使用 0xFD 作为传输协议标识符,因为它被 IANA 指定为“实验性使用”

我已经通过 Wireshark 验证这不是发送方的编程错误,并且我还反转了主机之间的 tx/rx 角色。

我目前的假设是问题出在其中一台路由器上,其中两个主机都位于后面,所以我希望如果这里有人了解他们的固件实现,他们可以对此有所了解。(它是前 4 个字节的事实向我表明它可能与 NAT 有关,因为该偏移量与 TCP/UDP 的 src/dst 端口相关)

谢谢,

-马特

2个回答

结果是其中一个路由器(十亿个 7300GRA)是罪魁祸首;它处理协议 ID 为 0xFD 的数据包是导致观察到的行为的原因,并且在简单地使用不同的 ID(仅测试 0x8F)后,问题就停止了。

(我应该早点更新这个问题。抱歉)

重新配置您的 ISP 调制解调器,为测试计算机/路由器分配可公开路由的 IP 地址,从而避免 NAT/PAT。

希望有帮助。

你为什么做这个?