Linuxネットワークコマンド解説

ネットワークコマンド

ネットワーク接続の確認、設定、診断などを行うコマンドです。

ping - ネットワーク接続の確認

指定したホストとの接続を確認します。

オプション 説明
-c N N回のみpingを送信して終了
-i N N秒間隔でpingを送信
-s N パケットサイズをNバイトに設定
-t N TTL(Time To Live)値をNに設定
-w N タイムアウト時間をN秒に設定

例:

ping google.com - Googleのサーバーに継続的にpingを送信
ping -c 5 192.168.1.1 - 指定したIPアドレスに5回pingを送信
ping -i 2 -c 10 example.com - 2秒間隔で10回pingを送信
ping -c 5 google.com | grep "time=" - 応答時間のみを表示
ping -c 10 google.com | grep "time=" | awk '{print $7}' | cut -d "=" -f 2 - 応答時間の数値のみを抽出
ping -c 5 google.com | tail -1 | awk '{print $4}' | cut -d '/' -f 2 - 平均応答時間を抽出
for ip in 192.168.1.{1..10}; do ping -c 1 -W 1 $ip | grep "from" && echo "$ip is up"; done - 複数のIPアドレスに対してpingを実行
ping -c 5 -q google.com | grep "packet loss" | awk '{print $6}' - パケットロス率を抽出
ping -c 1 -W 1 google.com > /dev/null 2>&1 && echo "Internet is up" || echo "Internet is down" - インターネット接続を確認
ping -c 5 -s 1500 google.com - 大きなパケットサイズでMTUを確認
ping -c 5 google.com | tee ping_results.txt - 結果をファイルに保存しながら表示

ifconfig - ネットワークインターフェースの設定・表示

ネットワークインターフェースの情報を表示したり、設定したりします。

注: 最近のLinuxディストリビューションではipコマンドが推奨されています。

構文/オプション 説明
ifconfig すべてのアクティブなインターフェースの情報を表示
ifconfig -a すべてのインターフェース(非アクティブも含む)の情報を表示
ifconfig [interface] 特定のインターフェースの情報を表示
ifconfig [interface] up/down インターフェースを有効化/無効化
ifconfig [interface] [ip] netmask [mask] IPアドレスとネットマスクを設定

例:

ifconfig - すべてのアクティブなネットワークインターフェースの情報を表示
ifconfig eth0 - eth0インターフェースの情報を表示
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 - eth0にIPアドレスとネットマスクを設定
ifconfig | grep -A 1 "inet " - すべてのインターフェースのIPv4アドレスを表示
ifconfig | grep -o -E 'inet ([0-9]{1,3}\.){3}[0-9]{1,3}' | cut -d' ' -f2 - IPアドレスのみを抽出
ifconfig | grep "ether" | awk '{print $2}' - すべてのインターフェースのMACアドレスを抽出
ifconfig eth0 | grep "RX packets" | awk '{print "Received: " $3 " packets, " $5 " bytes"}' - 受信パケット数とバイト数を整形して表示
ifconfig eth0 | grep "TX packets" | awk '{print "Transmitted: " $3 " packets, " $5 " bytes"}' - 送信パケット数とバイト数を整形して表示
for i in $(ifconfig | grep -o '^[a-zA-Z0-9]*:' | sed 's/://'); do echo "===$i==="; ifconfig $i | grep "inet "; done - 各インターフェースのIPアドレスを整形して表示
ifconfig | grep "mtu" | awk '{print $1, "MTU:", $NF}' - 各インターフェースのMTU値を表示
ifconfig eth0 | grep "errors" | awk '{print "RX errors: " $3 ", TX errors: " $7}' - 送受信エラー数を表示

ip - IPネットワークの設定

IPアドレス、ルーティング、ネットワークデバイスなどを設定・管理します。

サブコマンド 説明
ip addr IPアドレスの表示・設定
ip link ネットワークインターフェースの表示・設定
ip route ルーティングテーブルの表示・設定
ip neigh ネイバーテーブル(ARPテーブル)の表示・設定
ip tunnel トンネルの表示・設定

例:

ip addr show - すべてのインターフェースのIPアドレス情報を表示
ip link set eth0 up - eth0インターフェースを有効化
ip route show - ルーティングテーブルを表示
sudo ip addr add 192.168.1.100/24 dev eth0 - eth0にIPアドレスを追加

netstat - ネットワーク接続・ルーティングテーブル・インターフェース統計の表示

ネットワーク接続、ルーティングテーブル、インターフェース統計などを表示します。

注: 最近のLinuxディストリビューションではssコマンドが推奨されています。

オプション 説明
-a すべての接続を表示(リッスン中のソケットを含む)
-t TCP接続のみを表示
-u UDP接続のみを表示
-n ホスト名、ポート名、ユーザー名を数値で表示
-p 接続に関連するプロセスIDとプログラム名を表示
-r ルーティングテーブルを表示
-i ネットワークインターフェースの統計を表示

例:

netstat -tuln - リッスン中のTCPとUDPポートを数値で表示
netstat -anp - すべての接続とそれに関連するプロセスを表示
netstat -r - ルーティングテーブルを表示

ss - ソケット統計の表示

ソケット統計を表示します。netstatの代替として使用されます。

オプション 説明
-a すべてのソケットを表示(リッスン中のソケットを含む)
-t TCPソケットのみを表示
-u UDPソケットのみを表示
-n ホスト名、ポート名を数値で表示
-p ソケットに関連するプロセスを表示
-l リッスン中のソケットのみを表示
-i 内部TCPの情報を表示

例:

ss -tuln - リッスン中のTCPとUDPポートを数値で表示
ss -anp - すべてのソケットとそれに関連するプロセスを表示
ss -i - 内部TCPの情報を表示

wget - ネットワークからのファイルダウンロード

HTTPやFTPなどのプロトコルを使用してファイルをダウンロードします。

オプション 説明
-O [file] ダウンロードしたファイルを指定した名前で保存
-c 部分的にダウンロードしたファイルの続きからダウンロード
-b バックグラウンドでダウンロード
-r 再帰的にダウンロード
-P [dir] ファイルを指定したディレクトリに保存
--limit-rate=[rate] ダウンロード速度を制限(例: 200k)

例:

wget https://example.com/file.zip - ファイルをダウンロード
wget -O output.zip https://example.com/file.zip - ファイルを指定した名前で保存
wget -c https://example.com/large-file.iso - 中断したダウンロードを再開

curl - データ転送ツール

様々なプロトコルを使用してデータを送受信します。

オプション 説明
-o [file] 出力を指定したファイルに保存
-O リモートファイルと同じ名前で保存
-L リダイレクトに従う
-I, --head HTTPヘッダーのみを取得
-X [method] HTTPリクエストメソッドを指定(GET, POST, PUT, DELETEなど)
-d, --data [data] POSTデータを送信
-H [header] HTTPヘッダーを指定

例:

curl https://example.com - ウェブページの内容を表示
curl -o page.html https://example.com - ウェブページを指定したファイルに保存
curl -I https://example.com - HTTPヘッダーのみを取得
curl -X POST -d "name=value" https://example.com/api - POSTリクエストを送信
curl -s https://example.com | grep "title" | sed 's/<[^>]*>//g' - ウェブページからタイトルを抽出してHTMLタグを削除
curl -s https://api.github.com/users/username | jq '.name, .location' - GitHub APIからJSONデータを取得して特定のフィールドを抽出
curl -u username:password https://example.com/protected - Basic認証を使用してアクセス
curl -H "Authorization: Bearer token123" https://api.example.com - Bearer認証トークンを使用してAPIにアクセス
curl -F "file=@document.pdf" https://example.com/upload - ファイルをアップロード(multipart/form-data)
curl -s -w "\nHTTP Status: %{http_code}\nTotal time: %{time_total}s\n" https://example.com -o /dev/null - パフォーマンス統計を表示
curl --limit-rate 200K https://example.com/large-file.iso -o large-file.iso - ダウンロード速度を制限
for i in {1..5}; do curl -s -o /dev/null -w "%{http_code}\n" https://example.com; done - 複数回リクエストを送信してHTTPステータスコードを確認
curl -s -L https://bit.ly/shorturl - リダイレクトに従ってショートURLの最終的な宛先を取得

traceroute - パケットの経路追跡

パケットが目的地に到達するまでの経路を表示します。

オプション 説明
-n IPアドレスを名前解決せずに表示
-w [seconds] 応答を待つ時間を指定
-m [max_ttl] 最大TTL(ホップ数)を指定
-p [port] 使用するポート番号を指定

例:

traceroute google.com - Googleサーバーまでの経路を表示
traceroute -n 8.8.8.8 - 名前解決せずに経路を表示
traceroute -m 15 example.com - 最大15ホップまでの経路を表示
traceroute -T -p 443 example.com - TCPトレースルートをポート443で実行
traceroute -I example.com - ICMPプロトコルを使用してトレースルート
traceroute -4 example.com - IPv4のみを使用してトレースルート
traceroute -w 1 example.com - 応答待ち時間を1秒に設定(高速化)
traceroute example.com | grep -v "\*\*\*" - タイムアウトしたホップを除外
traceroute example.com | awk '{print $2}' - ホップのIPアドレスまたはホスト名のみを抽出
traceroute -q 1 example.com | grep -v "\*" | awk '{print $2}' | xargs -n 1 whois | grep "Country" - 経路上のIPアドレスの国情報を表示
for ip in 8.8.8.8 1.1.1.1; do echo "=== $ip ==="; traceroute -n -w 1 $ip | tail -n +2 | head -n 5; done - 複数の宛先への最初の5ホップを比較
traceroute example.com 2>&1 | tee traceroute_$(date +%Y%m%d_%H%M%S).log - トレースルート結果をタイムスタンプ付きのログファイルに保存

nslookup/dig - DNSクエリの実行

ドメイン名やIPアドレスのDNS情報を取得します。

コマンド/オプション 説明
nslookup [domain] ドメインのIPアドレスを取得
nslookup -type=[record_type] [domain] 特定のDNSレコードタイプを取得(MX, NS, SOAなど)
dig [domain] ドメインのDNS情報を詳細に取得
dig [domain] [record_type] 特定のDNSレコードタイプを取得
dig +short [domain] 簡潔な結果のみを表示

例:

nslookup google.com - GoogleのIPアドレスを取得
nslookup -type=MX example.com - ドメインのメールサーバー情報を取得
dig google.com - GoogleのDNS情報を詳細に取得
dig example.com MX - ドメインのメールサーバー情報を取得
dig +short example.com - IPアドレスのみを表示