メインコンテンツへスキップ
見出し画像

【保存版】ネットワーク障害で最初に使うコマンド10選|Windows・Mac・Linux対応のトラブルシューティング実践ガイド

    「インターネットにつながらない」
    「社内ネットワークだけ通信できない」
    「pingは通るのにWebサイトが開かない」
    ネットワーク障害が発生したとき、原因を調べようとしても、何から確認すればよいか迷った経験はありませんか?
    ネットワーク障害の調査では、やみくもに機器を再起動したり設定を変更したりするよりも、適切なコマンドを使って、問題が発生している場所を絞り込むことが重要です。
    この記事では、ネットワークエンジニアや社内SEが障害調査で活用できる基本コマンド10選を紹介します。
    Windows・macOS・Linuxそれぞれの実行方法に加え、実行結果から何を判断できるのかも解説します。
    この記事で分かること

    • ネットワーク障害の切り分けに役立つ10種類のコマンド

    • Windows・macOS・Linuxでの実行方法

    • コマンドの結果から確認できること

    • DNS障害・通信遅延・経路障害の調査方法

    • 現場で使えるトラブルシューティングの基本手順

    ※ OSのバージョンや環境によって、コマンドのオプションや出力は異なります。Linuxでは追加パッケージが必要な場合があります。

    1. ipconfig / ip / ifconfig|IPアドレスを確認する
    ネットワーク障害が発生したら、最初に確認したいのがIPアドレスです。
    端末に正しいIPアドレスが設定されていなければ、正常な通信は期待できません。
    Windows
    ipconfig /all
    macOS
    ifconfig
    Linux
    ip addr show
    確認するポイント

    • IPアドレスが想定したネットワークに属しているか

    • サブネットマスクやプレフィックス長は正しいか

    • デフォルトゲートウェイが設定されているか

    • DNSサーバーが適切か

    • DHCPによるアドレス取得が正常か

    例えばWindowsで次のように表示された場合です。
    IPv4 Address : 169.254.10.25
    Subnet Mask  : 255.255.0.0
    169.254.0.0/16はIPv4リンクローカルアドレスの範囲です。
    通常のDHCP構成で想定外にこのアドレスが設定されている場合、DHCPによるアドレス取得に失敗している可能性があります。
    ただし、これだけでDHCPサーバーの故障と断定することはできません。VLAN設定、無線認証、物理接続なども確認が必要です。
    実務ポイント: まずIPアドレスを確認するだけで、調査範囲を大幅に絞り込めることがあります。

    2. ping|通信相手への到達性を確認する
    ネットワーク障害の調査で、最も基本的なコマンドの一つです。
    ICMP Echo Requestを送信し、応答が返ってくるか確認します。
    Windows
    ping 8.8.8.8
    macOS / Linux
    ping -c 4 8.8.8.8
    実行結果の例
    64 bytes from 8.8.8.8:
    icmp_seq=1 ttl=117 time=12.5 ms
    確認するポイントは次の3つです。
    ① 応答の有無
    応答が返ってくれば、少なくともその時点でICMPの往復通信が成立しています。
    ② 応答時間(RTT)
    time=12.5 ms は往復時間を表します。
    値が大きい場合、ネットワーク経路の遅延や通信相手の処理などが影響している可能性があります。
    ③ パケットロス
    送信したパケットの一部が応答しない場合、パケット損失やICMPの制限などが考えられます。
    注意点
    pingが通らないからといって、必ずしもネットワーク障害とは限りません。
    ファイアウォールなどでICMPを拒否している機器もあります。
    また、pingが成功してもHTTPやHTTPSの通信が正常とは限りません。

    3. tracert / traceroute|通信経路を調査する
    通信先までの経路を確認するコマンドです。
    Windows
    tracert 8.8.8.8
    macOS / Linux
    traceroute 8.8.8.8
    出力例
    1  192.168.1.1    1 ms
    2  10.10.0.1      4 ms
    3  203.0.113.1   10 ms
    4  * * *
    ※ IPアドレスは説明用の例です。
    この結果から、経路上のルーターや各ホップの応答時間を確認できます。
    重要な注意点
    途中に * * * が表示されても、その場所で通信が途絶えているとは限りません。
    ルーターがTTL超過メッセージに応答しない場合や、ICMPを制限している場合にも発生します。
    後続のホップが正常に応答しているなら、途中の * だけを障害と判断しないことが重要です。

    4. nslookup|DNSの名前解決を確認する
    IPアドレスへの通信は成功するのに、Webサイトの名前でアクセスできない場合、DNSが原因の可能性があります。
    Windows / macOS / Linux
    nslookup example.com
    DNSサーバーを指定する場合
    nslookup example.com 8.8.8.8
    確認するポイント

    • DNSサーバーから応答が返ってくるか

    • 想定したIPアドレスが返るか

    • タイムアウトが発生していないか

    • 社内DNSと外部DNSで結果が異なるか

    例えば、社内DNSでは名前解決に失敗するのに外部DNSでは成功する場合、社内DNSの設定やフォワーダーなどを調査する手掛かりになります。
    ただし、社内専用ドメインは外部DNSでは解決できないことが正常です。

    5. arp|同一ネットワーク内のMACアドレスを確認する
    ARPは、IPv4アドレスとMACアドレスの対応関係を調べるための仕組みです。
    Windows / macOS / Linux
    arp -a
    出力例
    192.168.1.1  aa:bb:cc:dd:ee:ff
    どんなときに使う?

    • デフォルトゲートウェイと通信できない

    • 同一セグメントの端末にアクセスできない

    • IPアドレス重複が疑われる

    • ARPテーブルに想定外の情報がある

    Linuxでは次のコマンドも利用できます。
    ip neigh show
    なお、ARPテーブルにエントリがないだけで障害とは断定できません。通信履歴、キャッシュの有効期限、端末の状態などによって結果が変わります。

    6. route|ルーティングテーブルを確認する
    IPアドレスが正しく設定されていても、通信先への経路が間違っていれば通信できません。
    Windows
    route print
    macOS
    netstat -rn
    Linux
    ip route show
    確認するポイント

    • デフォルトルートが存在するか

    • ネクストホップが正しいか

    • 意図しない静的ルートが存在しないか

    • VPN接続によって経路が変わっていないか

    例えばLinuxで次のように表示された場合です。
    default via 192.168.1.1 dev eth0
    これは、より具体的な経路が存在しない宛先への通信に、192.168.1.1をゲートウェイとして使用する設定を表します。
    特にVPN接続後に通信できなくなる場合は、ルーティングテーブルの確認が有効です。

    7. netstat / ss|通信状態と待ち受けポートを確認する
    「サーバーは起動しているのに接続できない」
    そんなときに確認したいコマンドです。
    Windows
    netstat -ano
    macOS
    netstat -an
    Linux
    ss -tuna
    確認するポイント

    • TCP接続が確立されているか

    • 対象ポートが待ち受け状態か

    • 接続先IPアドレスとポート番号

    • 接続状態がどこで止まっているか

    代表的なTCP状態には次のものがあります。
    状態
    意味
    LISTEN
    接続待ち
    SYN_SENT
    接続要求送信後、応答待ち
    ESTABLISHED
    接続確立
    TIME_WAIT
    接続終了後の待機状態
    ※ 表示される状態名はOSによって異なります。
    SYN_SENTが継続する場合、通信先からの応答が届いていない可能性があります。ただし、その原因はファイアウォール、経路、相手側の状態など複数考えられます。

    8. curl|HTTP・HTTPS通信を確認する
    pingが成功してもWebサイトが表示できない場合、HTTPやHTTPSのレベルで確認する必要があります。
    Windows / macOS / Linux
    curl -I https://example.com
    ※ Windows PowerShellでは、環境による別名との混同を避けるため curl.exe を使用すると確実です。
    確認できること

    • DNSによる名前解決

    • TCP接続

    • TLSハンドシェイク

    • HTTPレスポンス

    • サーバーからの応答コード

    例えば次のようなレスポンスです。
    HTTP/2 200
    HTTP 200はリクエストが成功したことを示します。
    一方、HTTP 403ならアクセス拒否、HTTP 503ならサービス利用不可を表します。
    なお、-I はHEADリクエストを送信するため、サーバーによってはGETと異なる応答になる場合があります。
    詳細な通信時間を確認する
    curl -o /dev/null -sS \
      -w 'DNS:%{time_namelookup}\nConnect:%{time_connect}\nTLS:%{time_appconnect}\nTotal:%{time_total}\n' \
      https://example.com
    Windowsで使用する場合は、出力先を NUL に変更するなど、シェルに合わせて調整してください。
    表示される時間は、リクエスト開始からの経過時間です。DNS、TCP接続、TLSなどの各処理を比較する際には、その差分も確認します。

    9. dig|DNSをより詳しく調査する
    nslookupよりもDNSレコードを細かく確認したい場合に便利です。
    macOS / Linux
    dig example.com
    Aレコードを確認
    dig example.com A
    MXレコードを確認
    dig example.com MX
    DNSサーバーを指定
    dig @8.8.8.8 example.com
    Windowsでは標準で利用できない環境があるため、BIND関連ツールなどの導入が必要です。
    実務で確認するポイント

    • ANSWER SECTIONに期待したレコードがあるか

    • DNS応答コードが正常か

    • TTLが想定どおりか

    • DNSサーバーによって回答が異なるか

    DNSの問題では、単純に名前解決が成功するかだけでなく、どのDNSサーバーからどのレコードが返ってきたかが重要になります。

    10. Test-NetConnection / nc|TCPポートへの接続を確認する
    最後に紹介するのは、特定のTCPポートに接続できるか確認するコマンドです。
    Windows PowerShell
    Test-NetConnection example.com -Port 443
    macOS / Linux
    nc -vz example.com 443
    どんなときに使う?

    • HTTPSの443番ポートに接続できるか

    • SSHの22番ポートが到達可能か

    • アプリケーション用ポートが開いているか

    • ファイアウォールで遮断されていないか

    Windowsでは次のような結果が表示されます。
    TcpTestSucceeded : True
    これは指定した宛先・ポートへのTCP接続に成功したことを示します。
    ただし、TCP接続が成功しても、その先のTLS認証やアプリケーション処理が正常とは限りません。

    実践編:ネットワーク障害はこの順番で調べる
    ここまで10種類のコマンドを紹介しましたが、重要なのは使う順番です。
    例えば、Webサイトが表示できない場合は次のように調査します。
    STEP 1:IPアドレスを確認
    Windowsなら次のコマンドです。
    ipconfig /all
    IPアドレス、ゲートウェイ、DNSサーバーが適切か確認します。
    STEP 2:ゲートウェイへの通信を確認
    ping 192.168.1.1
    ※ 192.168.1.1は例です。実際のゲートウェイIPアドレスに置き換えてください。
    応答がない場合、LAN接続、Wi-Fi接続、VLAN、ゲートウェイのICMP設定などを確認します。
    STEP 3:外部IPアドレスへの通信を確認
    ping 8.8.8.8
    ここで失敗した場合、経路やファイアウォールなどを調査します。ただしICMPが制限されている可能性も考慮します。
    STEP 4:DNSを確認
    nslookup example.com
    名前解決が成功するか確認します。
    STEP 5:HTTPS接続を確認
    Test-NetConnection example.com -Port 443
    TCP接続が成立するかを確認します。
    STEP 6:HTTPレスポンスを確認
    curl.exe -I https://example.com
    Webサーバーからの応答やTLS関連のエラーを確認します。
    STEP 7:必要に応じて経路を確認
    tracert 8.8.8.8
    ここまで調べることで、問題がIP設定、DNS、通信経路、TCP接続、HTTPなど、どの領域にあるかを絞り込めます。
    ただし、これらのコマンドだけですべての原因を特定できるわけではありません。

    コマンドだけでは分からない障害もある
    例えば、次のようなケースです。

    • pingは正常なのに、アプリケーションが頻繁に切断される

    • TCP接続は成立するのに、通信速度が極端に遅い

    • 特定の端末だけ通信が不安定になる

    • ファイル転送中に通信が止まる

    • DNSの応答は正常なのに、Webアクセスに時間がかかる

    こうした問題では、パケットの再送、TCPウィンドウ、接続確立処理などを詳しく確認する必要があります。
    そこで役立つのが Wireshark です。
    Wiresharkを使用すると、実際に送受信されているパケットを取得し、通信の状態を詳細に分析できます。
    ただし、取得位置によって観測できる通信は異なります。暗号化された通信の内容も、通常はそのまま確認できません。

    さらに詳しく学びたい方へ
    この記事では、ネットワーク障害の初動調査に役立つ10種類のコマンドを紹介しました。
    実際の障害対応では、コマンドの実行結果から仮説を立て、必要に応じてパケットキャプチャを取得し、原因を検証することが重要です。
    より高度な調査方法を学びたい方向けに、別の記事で 「Wiresharkによる異常通信解析」 を解説しています。
    TCP再送、重複ACK、通信遅延、接続異常など、コマンドだけでは判断しにくい問題の解析に興味がある方は、ぜひ参考にしてください。
    ▶ 関連記事:【実務向け】Wiresharkによる異常通信解析
    ※ ここに公開済みの有料note記事へのリンクを挿入してください。

    まとめ
    ネットワーク障害の調査では、最初から難しい解析を行う必要はありません。
    まずは基本的なコマンドを使用して、障害の発生箇所を絞り込むことが大切です。
    今回紹介した10種類をもう一度整理します。
    コマンド
    主な用途
    ipconfig / ip / ifconfig
    IPアドレスの確認
    ping
    ICMP到達性・RTTの確認
    tracert / traceroute
    通信経路の確認
    nslookup
    DNS名前解決の確認
    arp
    IPv4とMACアドレスの対応確認
    route
    ルーティングの確認
    netstat / ss
    TCP接続・ポート状態の確認
    curl
    HTTP・HTTPS通信の確認
    dig
    DNSレコードの詳細調査
    Test-NetConnection / nc
    TCPポートへの接続確認
    ネットワーク障害対応で重要なのは、コマンドを暗記することではなく、実行結果から何が分かり、何がまだ分からないのかを理解することです。
    この記事が日々のトラブルシューティングに役立てば幸いです。
    後から見返せるように、ぜひ保存して活用してください。

     
     
    IT業界15年以上|ネットワーク・サーバインフラ 現場で培った経験をもとに、構築・運用の実務ノウハウや技術解説、トラブル対応の知見を発信。現役エンジニアの役に立つ情報をお届けします。

    あなたへのおすすめ