为什么 ICMP 通但 TCP 不通?tunl 设备校验和没生效

k8s 环境里 pod 之间 ICMP 通但 TCP 不通,client 收到 synack 却不响应。根因是 server 端 tunl 设备的 tx-checksumming 没生效,发出的包校验和错误,被 client 丢弃。 现象 有个 k8s 的环境,pod 之间 ICMP 是通的,TCP 不通。 client 发送的 SYN 报文,可以收到 server 的 SYNACK 回复,但是 client 并不响应这个 SYNACK 报文。 排查 通过 tcpdump -vvv 抓包,看到 server 发出的包,在 client 端依然 checksum incorrect。 怀疑是 server 端的 tx-checksumming: on 功能对 tunl 设备没有生效。 关闭 server 的该功能后正常: ethtool -K tunl0 tx off 根因 1. tunl0 是个软件设备 client 和 server 用 tunnel 隧道来通信,这里的 tunl0 是个软件设备。 ...

January 3, 2026 · 2 min · 373 words · 文叨叨