pingは通るのにTCP通信できない理由【原因の見抜き方と完全切り分け手順】

  • URLをコピーしました!

pingは成功する。

しかしSSHもHTTPも接続できない。

この状態は、

「ネットワークは正常」とは言えません。

pingはICMP(制御用プロトコル)、 TCPはセッション型通信です。

動作条件がまったく違います。

本記事では、

  • なぜpingは通るのか
  • TCPが失敗する代表パターン
  • どこで止まっているかの見分け方
  • 原因ごとの具体的対処法
  • 「解決した」と言える確認基準

まで、実務レベルで解説します。

目次

まず理解すべき:ICMPとTCPは別物

項目ping (ICMP)TCP通信
ポート不要必要
セッションなし3way handshake必要
FW制御許可されやすい制限されやすい
MTU影響小さいため影響受けにくい受けやすい

ping成功は、

「IPレベル到達確認」に過ぎません。

最初にやるべき確認

1. ポートはLISTENしているか

ss -lntp | grep ポート番号

LISTENしていなければ、ネットワーク以前の問題です。

解決方法

  • サービス起動確認
  • bindアドレス確認(0.0.0.0 or 特定IP)

次に見る:SYNは届いているか

tcpdump -nn port 80

確認ポイント:

  • SYNが届いているか
  • SYN-ACKが返っているか

パターン別:原因と対処

① SYNが届いていない

原因

  • FWでTCPのみ遮断
  • ACL設定ミス
  • ルーティング不備

確認方法

  • FWログ確認
  • 中間機器でtcpdump

解決方法

  • TCPポート許可
  • 正しい経路へ修正

解決判定:SYNがサーバまで到達すること。

② SYNは来るがSYN-ACKが返らない

原因

  • サービス未起動
  • ローカルFW(iptables/firewalld)拒否
  • rp_filterで破棄

確認

iptables -L -n
sysctl net.ipv4.conf.all.rp_filter

解決方法

  • ポート開放
  • rp_filter調整(非対称ルート時)

解決判定:SYN-ACKが返ること。

③ SYN-ACKは出るがACKが戻らない

原因

  • 戻り経路不一致(非対称ルーティング)
  • NATセッション破棄
  • セキュリティ機器による遮断

確認

  • tcpdumpで双方向確認
  • tracerouteで経路確認

解決方法

  • 経路対称化
  • NAT設定修正

解決判定:3way handshakeが完了すること。

④ 接続は確立するがすぐ切れる

原因

  • MTU不一致
  • MSS調整不足
  • アプリ側即時close

確認

ping -M do -s 1472 相手IP

解決方法

  • MSS clamp設定
  • MTU統一

解決判定:データ送受信が継続できること。

よくある誤解

  • ping通る=通信OK → ❌
  • ポート開いてる=接続できる → ❌
  • FW通しているはず → ❌(ログ確認必須)

最短切り分けフロー

  1. ssでLISTEN確認
  2. tcpdumpでSYN到達確認
  3. SYN-ACK応答確認
  4. ACK戻り確認
  5. データ送受信確認

この順で追えば必ず原因に到達します。

解決したと言える状態

  • 3way handshake成功
  • データが双方向に流れる
  • FWログでdenyなし
  • 再送が発生していない

まとめ

pingが通るのにTCP通信できない理由は、

ICMP成功とTCP成功は別条件だから

です。

主な原因は:

  • ポート未起動
  • FW制御
  • 非対称ルーティング
  • MTU不一致
  • NAT問題

「どの段階で止まっているか」をtcpdumpで可視化すれば必ず解決できます。

目次