手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 7 PPPoE で Bad TCP checksum が多発したときのメモ

CentOS 7 は既にサポートが終了しています。このページは新規構築を推奨するものではなく、過去環境の保守、移行前調査、設定の読み解きに使うためのレガシー Linux 手順です。新規構築では現行の Linux ディストリビューションを利用してください。

CentOS 7 サーバー構築・保守ガイドへ戻る

CentOS 7 で PPPoE を利用していたとき、Bad TCP checksum が多発した際のメモです。PPPoE 環境では MTU / MSS の扱いが問題になりやすく、TCP MSS 調整で改善する場合があります。

MSS 調整

PPPoE では Ethernet の通常 MTU 1500 より小さくなるため、経路上でフラグメントや PMTUD の問題が出ることがあります。TCP SYN に対して MSS を調整する例です。

iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --set-mss 1414

考え方

この設定は、PPPoE そのものの問題を解決するというより、TCP セッション開始時に相手へ通知する MSS を小さくして、経路上で無理なサイズのパケットが流れにくくするためのものです。

確認するポイント

  • ppp0 の MTU を確認する。
  • tcpdump で TCP SYN の MSS を確認する。
  • iptables mangle ルールの適用順を確認する。
  • ルーターや上位装置側でも MSS clamp が行われていないか確認する。
ip link show ppp0
iptables -t mangle -L POSTROUTING -n -v
tcpdump -i ppp0 tcp and tcp[tcpflags] \& tcp-syn != 0

Bad TCP checksum はキャプチャ位置やオフロードの影響で見えることもあります。実際の通信不具合と一致しているかを確認してから、MSS 調整やオフロード設定を判断します。

PPPoE 問題として読む観点

Bad TCP checksum は、NIC オフロード、PPPoE、MSS、キャプチャ位置によって見え方が変わります。パケットキャプチャの表示だけで異常と決めず、実通信への影響を合わせて確認します。

  • tcpdump の取得位置。
  • NIC オフロード設定。
  • MSS clamp の有無。
  • 実際に再送や通信断が起きているか。
CentOS 7 PPPoE で Bad TCP checksum が多発したときのメモ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る