サーバーの接続確認やAPIのテスト、ネットワーク状態の調査など、エンジニアが日々使うネットワークコマンドをまとめて学びましょう。 手元のLinux環境やサーバーでそのまま試せる例を中心に紹介します。
ping:疎通確認の第一歩
ping は指定したホストへICMPパケットを送り、応答が返るかどうかを確認するコマンドです。
ping google.com
デフォルトでは送り続けるので、Ctrl+C で止めます。回数を指定したいときは -c オプションを使います。
ping -c 4 google.com
応答時間(RTT)が大きければ、ネットワークの遅延が疑われます。Request timeout が出る場合はホストへの到達性に問題があります。
curl:URLへHTTPリクエストを送る
curl はURLを指定してデータを取得・送信する多機能コマンドです。APIのテストに欠かせません。
# ページの内容を標準出力に表示
curl https://example.com
# レスポンスヘッダーも表示する
curl -i https://example.com
# ヘッダーだけ見たい場合
curl -I https://example.com
POSTリクエストを送るには -X POST と -d でデータを指定します。
curl -X POST https://httpbin.org/post \
-H "Content-Type: application/json" \
-d '{"name": "taro", "age": 30}'
ファイルへ保存するには -o を使います。
curl -o output.html https://example.com
wget:ファイルをダウンロードする
wget はURLからファイルをダウンロードするコマンドです。curl より「保存」に特化しています。
# カレントディレクトリにファイルを保存
wget https://example.com/file.tar.gz
# ファイル名を指定して保存
wget -O myfile.tar.gz https://example.com/file.tar.gz
リトライや再接続も自動で行ってくれるため、大きなファイルのダウンロードに向いています。
ip:ネットワークインターフェースを確認する
ip コマンドはインターフェースのIPアドレスやルーティングテーブルを確認・設定するモダンなコマンドです(古い ifconfig の後継)。
# インターフェース一覧とIPアドレスを表示
ip addr show
# 特定のインターフェースだけ表示
ip addr show eth0
ルーティングテーブルを確認するには route サブコマンドを使います。
ip route show
ss:ポートとソケットの状態を確認する
ss はシステム上のソケット(通信のエンドポイント)の状態を確認するコマンドです(netstat の後継)。
# すべての接続を表示
ss -a
# TCP接続だけ表示
ss -t
# 使用中のポート番号とプロセスを確認
ss -tlnp
-tlnp は「TCP・リッスン中・ポート番号で表示・プロセス情報付き」の組み合わせです。特定のポートを何かが使っているか調べるときに便利です。
# 80番ポートを使っているプロセスを確認
ss -tlnp | grep :80
dig:DNSの名前解決を調べる
dig はドメイン名に対するDNSクエリを手動で送り、結果を詳しく表示するコマンドです。
# Aレコード(IPアドレス)を調べる
dig example.com
# MXレコード(メールサーバー)を調べる
dig example.com MX
# 結果を簡潔に表示
dig +short example.com
逆引き(IPアドレスからドメイン名)は -x で行います。
dig -x 8.8.8.8
traceroute:経路を追跡する
traceroute はパケットが目的ホストへ届くまでに経由するルーターを順番に表示します。
traceroute google.com
途中で * * * が続く場合、そのホップでICMPが遮断されているかルーターが応答しないことを示します。
練習問題
問題 1
google.com に対して3回だけ ping を送り、結果を ping_result.txt に保存してください。
問題 2
curl を使って https://httpbin.org/get にGETリクエストを送り、レスポンスを response.json に保存してください。
問題 3
現在のマシンで80番または443番ポートをLISTEN中のプロセスがあるか、ss コマンドで確認してください。
問題 4
dig コマンドを使って github.com のIPアドレスだけを簡潔に表示してください。
答え
問題 1 の答え
ping -c 3 google.com > ping_result.txt
-c 3 で3回に限定し、> でファイルへリダイレクトします。
問題 2 の答え
curl -o response.json https://httpbin.org/get
-o <ファイル名> でレスポンスボディをファイルに保存します。
問題 3 の答え
ss -tlnp | grep -E ':80|:443'
-tlnp でTCP・リッスン中・ポート番号・プロセス情報を表示し、grep で対象ポートに絞ります。何も表示されなければ該当プロセスはありません。
問題 4 の答え
dig +short github.com
+short を付けることでIPアドレスのみが出力されます。