我想演示一种 MTU 流量高于可接受的情况。因此,源将收到 ICMP 类型 3 代码 4 作为回复。
我正在尝试在 AWS 上运行两个 Linux 实例。两者位于同一网络但不同子网。
实例 A 的 MTU 为 9001。实例 B 的 MTU 为 1500。
我正在尝试使用 ping。
ping B-ip -M dont -s 9001
我预计它会失败,但实际上它正在工作,它得到了回复。
如何模拟/演示 ICMP 类型 3 代码 4?
我正在尝试使用 ping 来避免 TCP MSS 限制。但我对其他选择持开放态度。
您必须 ping超出B。事实上,它通过 MTU9000 电路进行应答,这不是问题。请记住,任何 MTU 设置都适用于接口,而不是主机。
您需要设置两个网段/IP 子网 - 一个在主机 A 和 B 之间,MTU 9000,另一个在 B 上的第二个接口上,MTU 1500。激活 B 上的路由。如果实际上没有其他东西连接到 MTU1500 子网,则您需要设置两个网段/IP 子网。需要为 B 上的虚拟 IP 地址设置静态 ARP 条目(否则 ARP 目的地失败将阻止实际的数据包发送尝试)。
现在,当您 时
ping dummyIP -M do -s 8972
,B 应该返回 Fragmentation Needed 消息。-M do
需要设置DF标志-s 8972
定义 MTU 9000 的最大 ping 有效负载 - 请注意 20 个八位位组的 IPv4 标头和 8 个八位位组的 ICMP 标头