2026年9月16日
2026年9月16日
netstat と tracert の使い分け:接続状態と経路の切り分け方
netstat は「自分のコンピューターのどのポートが待ち受けていて、誰と接続しているか」を見るコマンドで、tracert は「相手のコンピューターまでどのルーターを経由しているか」を見るコマンドです。前者は手元の状態、後者は途中の経路を調べる道具なので、通信トラブルでは両方を順番に使うと原因の場所を絞り込めます。この記事では、それぞれの基本的な使い方と出力の読み方、どちらを先に使うべきかの判断基準、そして WordPress サイトにつながらないときの切り分け手順を説明します。
コマンド例は主に Windows のものですが、Linux での対応コマンドも合わせて紹介します。
役割の違いを一言で整理する
- netstat:自ホストのソケットの状態を表示します。「サーバーが 443 番で待ち受けているか」「PC が相手と接続を確立できているか」「どのプロセスがそのポートを使っているか」が分かります。
- tracert:相手までの経路を1ホップずつ表示します。「どのルーターまで届いているか」「どのあたりから遅延が増えるか」の手がかりが得られます。
たとえるなら、netstat は自宅の玄関の鍵が開いているかを確認する作業で、tracert は相手の家までの道順と、どの交差点で渋滞しているかを確認する作業です。
netstat の使い方(Windows)
コマンドプロンプトや PowerShell で実行します。
# すべての接続と待ち受けを数値で表示し、PID も出す
netstat -ano
# 443 番に関係する行だけを表示
netstat -ano | findstr :443
# PID からプロセス名を確認
tasklist /fi "PID eq 1234"
# ルーティングテーブルを表示
netstat -r
主なオプションは次のとおりです。
-a:接続中のものと待ち受け中のものをすべて表示-n:アドレスとポートを数値で表示(名前解決をしないので速い)-o:プロセス ID(PID)を表示-b:実行ファイル名を表示(管理者権限が必要)-r:ルーティングテーブルを表示-s:プロトコルごとの統計を表示
出力の State 列で状態を読みます。LISTENING は待ち受け中、ESTABLISHED は接続確立済み、SYN_SENT は接続要求を出したが応答がない状態、TIME_WAIT は接続を閉じた直後の待機状態です。PC から Web サーバーへの接続が SYN_SENT のまま進まない場合は、途中で通信が遮断されているか、相手が応答していない可能性があります。
PowerShell では、同じ情報を Get-NetTCPConnection で取得することもできます。
# 待ち受け中の TCP ポート
Get-NetTCPConnection -State Listen | Sort-Object LocalPort
# 相手先ポート 443 の接続
Get-NetTCPConnection -RemotePort 443
tracert の使い方(Windows)
# 名前解決を省略して経路を表示
tracert -d example.com
# 最大ホップ数を 20 に、各応答の待ち時間を 2000 ミリ秒にする
tracert -d -h 20 -w 2000 example.com
主なオプションは次のとおりです。
-d:各ホップのアドレスを名前解決しない(表示が大幅に速くなる)-h:最大ホップ数(既定は 30)-w:各応答を待つ時間(ミリ秒)-4/-6:IPv4 または IPv6 を指定
出力は1行が1ホップで、3回分の応答時間とルーターのアドレスが並びます。読み方の要点は次のとおりです。
- **途中に
*が並ぶ行がある**:そのルーターが応答を返さない設定になっているだけのことが多く、その先のホップに応答があれば通信自体は通っています。 - **ある地点から先がすべて
***:その付近で通信が止まっているか、相手側のファイアウォールが応答を返していない可能性があります。 - 途中で遅延が急に増え、その先もずっと高い:その区間が遅延の原因である可能性があります。途中の1ホップだけ高く、その先が元に戻る場合は、そのルーターが応答の生成を後回しにしているだけのことが多いです。
Windows の tracert は ICMP を使うため、ICMP を遮断しているネットワークでは途中から応答が得られません。そのため、tracert の結果だけで「ここが壊れている」と断定しないことが大切です。
Linux での対応コマンド
Linux では netstat を含む net-tools は既定で入っていないディストリビューションが多く、代わりに次のコマンドを使います(2026年10月現在)。
netstat -tulpn→ss -tulpn(待ち受けポートとプロセス)netstat -r→ip route(ルーティングテーブル)tracert→traceroute(既定は UDP を使用。-Iで ICMP、-Tで TCP を使える実装が一般的)
traceroute -T -p 443 example.com のように TCP の 443 番で経路を調べると、ICMP や UDP が遮断されている環境でも、Web 通信と同じ条件で途中まで届くかを確認できます(root 権限が必要な場合があります)。経路と損失を継続的に見たい場合は、mtr を使うと各ホップの損失率を集計できます。
どちらを先に使うかの判断基準
迷ったときは、次の順番で考えると効率よく切り分けられます。
- 相手の名前は正しく引けるか:
nslookupなどで DNS を確認します。名前が引けなければ、netstat や tracert の前に DNS の問題です。 - 手元から相手のポートに接続できるか:PowerShell の
Test-NetConnection example.com -Port 443で TCP 接続を試します。成功すれば経路は通っており、問題はアプリケーション側にあります。 - 接続できない場合は tracert で経路を見る:どこまで届いているかを確認し、自宅や社内のネットワーク内で止まっているのか、プロバイダーやサーバー側の近くで止まっているのかを判断します。
- サーバー側で netstat(Linux なら ss)を見る:サーバーにログインできるなら、Web サーバーが目的のポートで待ち受けているかを確認します。待ち受けていなければ、経路ではなくサーバーのサービス停止が原因です。
つまり、接続できるかの確認と待ち受けの確認には netstat、届かない場所の特定には tracert、という使い分けになります。
WordPress サイトにつながらないときの切り分け例
「サイトが表示されない」という報告を受けたときの流れを例にします。
- PC で
Test-NetConnectionを使って 443 番への接続を試す。失敗したら次へ。 tracert -dでサーバーまでの経路を見る。社内ルーターの直後で止まるなら社内ネットワーク、サーバー直前で止まるならサーバー側のファイアウォールやクラウドのセキュリティグループを疑います。- サーバーに SSH でログインし、
sudo ss -ltnp '( sport = :80 or sport = :443 )'で nginx や Apache が待ち受けているかを確認します。 - 待ち受けていなければ、Web サーバーのエラーログと
systemctl statusで停止の原因を調べます。待ち受けていれば、ファイアウォール(ufw や firewalld)の許可設定を確認します。
ファイアウォールやサービスの設定を変更する前には、現在の設定を保存しておきます。特にリモートからファイアウォールを変更する場合は、SSH の許可を先に確認しないと自分の接続を遮断してしまうおそれがあります。
まとめ
- netstat は手元のソケットの状態(待ち受け・接続・プロセス)を、tracert は相手までの経路を調べるコマンドです。
netstat -anoとtasklistでポートを使っているプロセスを特定できます。- tracert の
*は応答しないルーターがあるだけのことも多く、その先のホップの応答と合わせて判断します。 - Linux では
ss、ip route、tracerouteが対応コマンドで、TCP の traceroute や mtr も役立ちます。 - 接続テスト、経路確認、サーバー側の待ち受け確認の順に進めると、原因が手元・経路・サーバーのどこにあるかを絞り込めます。