问题
ovn网络,跨主机的docker容器之间,ssh连接时卡住,使用ssh -v root@10.0.0.2后,发现进程卡在:debug1: expecting SSH2_MSG_KEX_ECDH_REPLY。尝试改小mtu无效,最后找到以下办法,成功解决:
解决办法1
# 关闭系统的PMTU发现功能,系统发包时将不再设置DF标志,中间设备也可正常处理。
echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
解决办法2
ssh -o KexAlgorithms=ecdh-sha2-nistp521 root@10.0.0.2
原因
由于中间路由设备的MTU值小于1500,并且发送的数据包设置了DF不允许分片标志,路由设备回复了ICMP不可达消息,通告其MTU为1480,问题出在,接收到此ICMP报文之后,系统并未改变其PMTU,仍然使用1500作为分片大小发送数据包,导致发送失败。