インフラ作業支援ラボInfra Support Lab ← ガイド一覧← 戻る

Linuxネットワーク疎通・接続障害の確認手順|ip・ping・ss・curl・nc

Linuxで通信できないときに、NIC・IPアドレス・ルーティング・ICMP疎通・TCPポート・待受状態・HTTP/TLSの順で原因を切り分ける確認手順を整理します。

このページの目的

「ネットワークがつながらない」を一括りにせず、ローカルNIC、経路、IP疎通、TCPポート、サーバー待受、アプリケーション応答のどこで止まっているかを順番に分けます。

最初にやること

ip -br addrとip routeで自ホストの状態を確認し、接続先IPが分かる場合はip route get 接続先IPでカーネルが選ぶ経路を確認します。

このページの担当:Linuxホストから別ホスト・サービスへ通信できないときのネットワーク疎通とTCP接続を扱います。名前解決だけが失敗する場合はDNSガイド、SSH固有の認証エラーはSSHガイドへ分けています。

最短の確認順

# 1. NICとIPアドレス ip -br addr # 2. ルーティング ip route ip route get 203.0.113.10 # 3. IPで疎通確認(ICMPが許可されている環境) ping -c 3 203.0.113.10 # 4. TCPポートへ接続できるか(ncがある場合) nc -vz -w 3 203.0.113.10 443 # 5. HTTP/HTTPSならアプリ層まで確認 curl -v --connect-timeout 5 https://example.com/ # 6. サーバー側で待受確認 ss -lntp

最初からFirewallやサービス設定を変更せず、自ホスト → 経路 → IP → TCPポート → サーバー待受 → アプリの順で、どこまで正常かを記録します。

例示IPについて:203.0.113.10はドキュメント用の例です。実環境では対象ホストのIPへ置き換えてください。接続確認は許可された対象に対して実施してください。

エラー表示から確認範囲を絞る

症状・表示まず疑う範囲最初の確認
Network is unreachableローカル経路・NIC・ルーティングip -br addr / ip route get
No route to host経路、途中の拒否、到達不能応答などip route get / ping / 経路確認
Connection refused到達先でポート未待受、明示的拒否クライアントのncとサーバーのss -lntp
Connection timed out経路途中のdrop、FW、Security Group、到達不能などip route / nc / FW・クラウド設定
Could not resolve host等DNS・名前解決DNS名前解決ガイド
HTTP 4xx / 5xxネットワーク到達後のアプリケーション側curl -vとアプリ・Proxyログ
エラー名だけで断定しない:同じ表示でもOS、アプリケーション、Firewall、NAT、Proxyなどで原因は変わります。コマンド結果を組み合わせて確認します。

1. NICとIPアドレスを確認する

ip -br addr ip link

ip -br addrでインターフェースの状態とIPアドレスを一覧し、想定したNICに想定したアドレスが付いているかを確認します。インターフェースがDOWN、IP未設定、別VRF・namespace内などの場合は、この段階で調査対象を分けます。

2. ルーティングを確認する

ip route ip route get 203.0.113.10

ip route showはルーティングテーブルを表示します。ip route getは指定した宛先に対して、カーネルが選ぶ経路・出力インターフェース・送信元アドレスなどを確認するのに向いています。

デフォルトルートだけでは足りない場合:policy routing、VRF、複数NIC、VPNがある環境では、ip ruleやテーブル別ルートも確認します。

3. IP疎通を確認する

ping -c 3 203.0.113.10

pingはICMP Echoを使った疎通確認です。応答があればIPレベルの往復経路を確認する材料になりますが、pingが失敗しただけで対象ホストが停止しているとは断定できません。ICMPをFirewallやクラウド側で許可していない構成もあります。

可能なら同一セグメントのGateway、接続先IPなどを段階的に確認し、「どこから失敗するか」を分けます。

4. TCPポートへ接続できるか確認する

# netcatが利用できる場合 nc -vz -w 3 203.0.113.10 443 # HTTP/HTTPSならcurlでも確認 curl -v --connect-timeout 5 https://example.com/

IP疎通だけでは、目的のTCPポートへ接続できるかは分かりません。対象プロトコルに合わせてポート接続を確認します。

ncは実装差があります:ディストリビューションやnetcat実装によってオプションが異なる場合があります。利用環境のnc -hやman pageを確認してください。

5. サーバー側で待受状態を確認する

sudo ss -lntp sudo ss -lntp 'sport = :443'

ssで対象ポートがLISTENしているか、どのアドレスにbindしているかを確認します。127.0.0.1:PORTだけで待ち受けている場合、外部ホストからは接続できません。

6. HTTP・TLSまで到達しているか確認する

curl -v --connect-timeout 5 https://example.com/ # DNSを切り離して特定IPへ接続する例 curl -v --connect-timeout 5 --resolve example.com:443:203.0.113.10 https://example.com/

curl -vでは名前解決、接続、TLS、HTTP応答のどこまで進んだかを確認できます。--resolveは指定したホスト名・ポートを特定IPへ向けて接続するため、DNS経路を切り離した比較にも使えます。

共有時はverbose出力に注意:curl -vの出力にはURL、ヘッダー、認証情報などの機密情報が含まれる可能性があります。外部へ共有する前に必ずマスクしてください。

7. 経路途中を確認する

tracepath 203.0.113.10 # または環境に応じて traceroute 203.0.113.10

経路確認コマンドは「最後に表示されたHopが障害点」と単純には判断できません。途中装置がTTL超過応答を返さない場合や、実通信と異なる経路を通る場合もあります。ルーティング・Firewall情報と合わせて判断します。

8. Firewall・クラウド・コンテナなどの環境差

調査目的で設定を全開放しない:FirewallやSecurity Groupを一括無効化する前に、現在値を記録し、必要な方向・プロトコル・ポートだけを確認してください。

確認結果から次へ進む

確認結果次の調査
NIC/IPが想定と違うネットワーク設定、DHCP、NetworkManager/systemd-networkd、クラウドNIC設定など
ip route getで経路がない/想定外route、policy routing、VPN、VRF、クラウドルート
pingだけ失敗・TCPは成功ICMP制御の可能性。目的ポートの実通信を基準に判断
TCPがrefusedサーバーのss -lntp、サービス状態、bindアドレスを確認
TCPがtimeout経路、FW、Security Group、Network ACL、LBなどを確認
IPでは接続できるが名前で失敗DNS名前解決を確認
22/TCPまでは到達するがSSH失敗SSH固有の切り分けへ
HTTP応答が4xx/5xxProxy/Web/Appの設定とログを確認

既存環境でよく使われる旧来コマンドとの読み替え

方針:新規の調査では ip・ss など現在一般的なツールを優先します。一方、既存の運用手順や長期稼働環境では ifconfig・netstat・route が残っていることがあります。旧来コマンドを見つけたら削除前提にせず、まず同じ確認を現行コマンドへ読み替えます。
確認したいこと現在の確認例既存環境で見かける例
IPアドレス・NICip -br addr
ip link
ifconfig -a
ルーティングip route
ip route get 192.0.2.10
route -n
TCP/UDP待受ss -lntupnetstat -lntup
command -v ip command -v ifconfig command -v ss command -v netstat command -v route

ifconfig・netstat・routeはnet-tools系の既存手順で見かけます。利用できるからといって誤りではありませんが、出力項目や対応機能は完全な1対1ではありません。新旧コマンドの結果を比較し、環境の標準ツールに合わせて手順を更新してください。

Firewallも管理方式を先に確認:nft、firewall-cmd、iptablesのどれを使うかは環境によります。iptablesコマンドがnftables互換バックエンドを利用している構成もあるため、コマンド名だけで実装方式を決めつけません。

公式・一次資料

症状別にさらに切り分ける

名前解決、SSH、systemdなど、ネットワークの先にある個別障害は専用ガイドで確認できます。

トラブル解決一覧へ