自宅のインターネット回線はフレッツ光を使用しており、KVM上の仮想マシン(CentOS7)をルーターとしてPPPoE接続している。セットアップ後、特に使用上の問題は感じられなかったが、何気なくログをみていると「Bad TCP checksum」が多発している。直観的にMSSかなと推測したが、ifcfg-ppp0では既にMTU=1454、CLAMPMSS=1414と設定されており、MSSではないようにも思えた。
結果
下記のiptables設定を追加することで解消した。やはり当初の推測通りMSSが原因でフラグメントしていたのだろう。ちなみにPPPoEのMTUは1454であるため、MSSはIPヘッダ(20byte)とTCPヘッダ(20byte)を差し引いて1414となる。
# iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --set-mss 1414
なお、ifcfg-ppp0のCLAMPMSS設定は有効でないことが分かったので削除した(パケットキャプチャすればもっと細かく分かるはずだが解消済みなので深入りしない)。
CentOS7 PPPoEでBad TCP checksumが多発