自建Debian路由器MTU问题排查:Backblaze忽略ICMP路径MTU致容器访问失败
问题排查:Podman容器访问Backblaze B2网络异常
问题根源
目前判断问题根源是数据包过大,抓包日志如下:
17:55:29.577781 eth0 入站 IP (服务类型 0x0, 生存时间 55, 标识 62820, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 校验和 0x9bde (正确), 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231592886 回显值 1643349940], 长度 1448 17:55:29.577833 eth0 出站 IP (服务类型 0xc0, 生存时间 64, 标识 59040, 偏移量 0, 标记 [无], 协议 ICMP (1), 长度 576) #.#.#.# > 45.11.37.254: ICMP #.#.#.# 不可达 - 需要分片(MTU 1450), 长度 556 IP (服务类型 0x0, 生存时间 55, 标识 62820, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231592886 回显值 1643349940], 长度 1448 17:55:29.798696 eth0 入站 IP (服务类型 0x0, 生存时间 55, 标识 62821, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 校验和 0x9ba6 (正确), 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231592942 回显值 1643349940], 长度 1448 17:55:29.798749 eth0 出站 IP (服务类型 0xc0, 生存时间 64, 标识 59074, 偏移量 0, 标记 [无], 协议 ICMP (1), 长度 576) #.#.#.# > 45.11.37.254: ICMP #.#.#.# 不可达 - 需要分片(MTU 1450), 长度 556 IP (服务类型 0x0, 生存时间 55, 标识 62821, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231592942 回显值 1643349940], 长度 1448 17:55:30.254893 eth0 入站 IP (服务类型 0x0, 生存时间 55, 标识 62822, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 校验和 0x9b34 (正确), 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231593056 回显值 1643349940], 长度 1448 17:55:30.255241 eth0 出站 IP (服务类型 0xc0, 生存时间 64, 标识 59143, 偏移量 0, 标记 [无], 协议 ICMP (1), 长度 576) #.#.#.# > 45.11.37.254: ICMP #.#.#.# 不可达 - 需要分片(MTU 1450), 长度 556 IP (服务类型 0x0, 生存时间 55, 标识 62822, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231593056 回显值 1643349940], 长度 1448 17:55:31.152224 eth0 入站 IP (服务类型 0x0, 生存时间 55, 标识 62823, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 校验和 0x9a54 (正确), 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231593280 回显值 1643349940], 长度 1448 17:55:31.152275 eth0 出站 IP (服务类型 0xc0, 生存时间 64, 标识 59260, 偏移量 0, 标记 [无], 协议 ICMP (1), 长度 576) #.#.#.# > 45.11.37.254: ICMP #.#.#.# 不可达 - 需要分片(MTU 1450), 长度 556 IP (服务类型 0x0, 生存时间 55, 标识 62823, 偏移量 0, 标记 [不分片], 协议 TCP (6), 长度 1500) 45.11.37.254.443 > #.#.#.#.58708: 标记 [.], 序列号 134:1582, 确认号 518, 窗口大小 235, 选项 [nop,nop,时间戳 值 2231593280 回显值 1643349940], 长度 1448
观察到分片数据包从未到达Podman容器或主机,推测Backblaze未响应ICMP路径MTU通知,计划尝试强制分片与重组操作。
已完成的测试
- 主机执行
curl https://www.google.com- 正常工作 - 容器执行
curl https://www.google.com- 正常工作 - 主机执行
curl https://s3.eu-central-003.backblazeb2.com/- 正常工作 - 容器执行
curl https://s3.eu-central-003.backblazeb2.com/- 无法正常工作- 已接收服务器SSL hello,但后续无数据传输
- 主机执行
nc -z s3.eu-central-003.backblazeb2.com 443- 正常工作 - 容器执行
nc -z s3.eu-central-003.backblazeb2.com 443- 正常工作
疑问
如何排查部分主机出现数据包丢失的情况?
内容的提问来源于stack exchange,提问作者chickeaterbanana
相关产品推荐
相关产品推荐

