通过IPSec(Debiantesting中的Strongswan)连接到存储守护进程(“B”)的我的一台服务器(“A”)的备份(通过Bacula)不能完成95%的运行时间。 显然发生的是:
net.ipv4.ip_no_pmtu_disc=0 ,所以明文数据包中设置了IP Do not Fragment位。 (ICMP数据包到达主机A,并且没有阻止ICMP的iptables规则。)
这种情况发生的可能原因,我可以想到:
什么是解决这个问题的最好方法,而不是全局禁用PMTU发现或降低接口MTU? 也许像FreeBSD一样,清除DF位与ipsec.dfbit = 0 ?
您可以尝试在iptables创build一个规则,将针对VPN的stream量的TCP MSS设置为较低的值。 但是如果没有数据包捕获,很难猜测发生了什么。
如果VPN场景中的PMTU发现失败,则这通常是中间的网关或路由器的公有IP地址或过滤的ICMP消息的问题。 MSS夹紧只是一个丑陋的解决方法。