ネットワークトラブルが発生したとき、原因を素早く特定するためのコマンドラインツールの使い方を解説します。ping・traceroute・nslookup・netstat・ssはエンジニアが毎日使うトラブルシューティングの基本ツールです。
ping:疎通確認
# 基本的な疎通確認
ping 8.8.8.8
ping hobbyshift.com
# Linux:4回送信して終了
ping -c 4 8.8.8.8
# Windows:4回送信
ping -n 4 8.8.8.8
# 結果の見方
# ICMP応答があれば接続OK
# 「Request timeout」なら接続不可またはICMPブロック中
# RTT(応答時間)が大きければ遅延ありtraceroute / tracert:経路確認
# Linux
traceroute hobbyshift.com
# Windows
tracert hobbyshift.com
# 結果の見方
# 各行が経由したルーター(ホップ)を表す
# * * * が続く → そのルーターがICMPを拒否している(必ずしも問題ではない)
# 特定のホップから急にRTTが増加 → そこがボトルネックnslookup / dig:DNS確認
# ドメインのIPアドレスを確認
nslookup hobbyshift.com
# 特定のDNSサーバーに問い合わせ
nslookup hobbyshift.com 8.8.8.8
# Linuxではdigが詳細情報を表示
dig hobbyshift.com
dig hobbyshift.com A # Aレコードのみ
dig hobbyshift.com MX # メールサーバー
# 逆引き(IPからドメインへ)
nslookup 8.8.8.8netstat / ss:接続状態確認
# 全接続とリスニングポートを表示
netstat -an
# プロセス名も表示(管理者権限)
netstat -anp
# 特定ポートを確認(例:80番)
netstat -an | grep :80
# Linuxではssが推奨(netstatより高速)
ss -tlnp # TCPリスニングポートとプロセス
ss -s # 統計サマリー
# よく使うフラグ
# -t: TCPのみ -u: UDPのみ -l: リスニングのみ
# -n: 数値表示 -p: プロセス名表示curl:HTTP接続確認
# ヘッダーのみ表示(サーバーの応答を確認)
curl -I https://hobbyshift.com
# レスポンス時間を計測
curl -o /dev/null -s -w "時間: %{time_total}s\nHTTPコード: %{http_code}\n" https://hobbyshift.com
# SSL証明書の有効期限を確認
echo | openssl s_client -connect hobbyshift.com:443 2>/dev/null | openssl x509 -noout -datesトラブルシューティングの手順
| 症状 | 確認コマンド | チェックポイント |
|---|---|---|
| Webサイトに繋がらない | ping → nslookup → curl | ①DNS解決できるか ②サーバーが応答するか ③HTTP応答コードは何か |
| 特定サーバーに繋がらない | ping → traceroute | どのホップで止まるか確認 |
| ポートが開いているか確認 | netstat / ss / nc | サービスが起動してリスニングしているか |
| 名前解決が遅い | dig / nslookup | DNSサーバーのRTTを確認 |
まとめ
- pingで疎通確認、tracerouteで経路のどこで詰まっているか確認する
- nslookup/digでDNSが正しく解決できるか確認する
- netstat/ssでサービスが正しくリスニングしているか確認する
- トラブルシューティングは「DNS→疎通→ポート→HTTP応答」の順で切り分ける


コメント