手当たり次第に書くんだ

飽きっぽいのは本能

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

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

CentOS 7 サーバー管理ガイドへ戻る

CentOS 7 で PPPoE を使った環境において、パケットキャプチャ上で Bad TCP checksum が多発したときの確認メモです。PPPoE、NIC オフロード、MSS、MTU が絡むため、見た目だけで異常と判断しない方がよいケースがあります。

特に tcpdump や Wireshark で checksum エラーが見える場合、実際に壊れているのか、NIC の checksum offload によって送信前の状態を見ているだけなのかを分けて確認します。

まず通信状態を確認する

ip address
ip route
ping -c 3 8.8.8.8
curl -I https://www.example.com/

PPPoE インターフェースを確認する

ip link show
ip address show ppp0

tcpdump で確認する

tcpdump -i ppp0 -nn tcp

NIC オフロード状態を確認する

ethtool -k eth0

切り分けとしてオフロードを無効化する

ethtool -K eth0 tx off rx off tso off gso off gro off

MSS 調整を確認する

PPPoE では通常の Ethernet より MTU が小さくなるため、MSS 調整が必要になる場合があります。経路上で PMTUD が期待通り動かない場合、TCP の詰まりとして見えることがあります。

iptables -t mangle -A POSTROUTING -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

確認するポイント

  • checksum エラー表示が実通信の障害と一致しているか。
  • オフロードを無効化した状態で表示が変わるか。
  • PPPoE の MTU / MSS が適切か。
  • ICMP を過度に遮断して PMTUD を壊していないか。

まとめ

Bad TCP checksum の表示は、必ずしもパケット破損を意味しません。CentOS 7 の PPPoE 環境では、checksum offload、MTU、MSS、実際の通信症状を分けて見ることが重要です。見た目のエラーに引っ張られず、通信できているか、どこで詰まっているかを順番に確認します。

関連する記事

参考書籍

参考
書籍
参考書籍
マスタリング TCP/IP 入門編 第6版

TCP/IP、Ethernet、VLAN、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

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

コメントを残す

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

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

トップへ戻る