ネットワーク 初級

Linuxネットワークコマンド入門

ping、curl、ss、ip、digなど、Linuxで頻繁に使うネットワーク関連コマンドの基本的な使い方を学ぶ

サーバーの接続確認や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アドレスのみが出力されます。