はじめに

こんにちは!今回はifconfigコマンドについて解説します。

ifconfigはネットワークインターフェースの設定と状態を表示・変更するコマンドです。IPアドレスを確認したり、ネットワークを設定したり、通信トラブルを調査したりするときに使います。

ネットワーク管理の基本コマンドですね。ifconfigの出力が読めるようになると、ネットワークの仕組みがぐっと分かりやすくなりますよ。


ifconfigコマンドとは

ifconfigは、ネットワークインターフェースの設定と状態を表示・変更する外部コマンドです。“interface configuration"の略ですね。

マシンに接続されているネットワークデバイス(Ethernet、WiFi、ループバックなど)のIPアドレス、MACアドレス、送受信データ量などを確認できます。サーバー運用やネットワーク管理では必須のコマンドです。


基本構文

1
ifconfig [インターフェース名] [オプション]

引数なしで実行するとすべてのネットワークインターフェースの情報を表示します。インターフェース名を指定すると、そのデバイスだけの情報が表示されます。


主なオプション

オプション 説明
-a 有効・無効を問わずすべてのインターフェースを表示
-s 統計情報を表示(短い形式)
up インターフェースを有効化
down インターフェースを無効化
inet アドレス IPアドレスを設定
netmask マスク ネットマスクを設定
hw ether MACアドレス MACアドレスを設定(root権限が必要)
mtu サイズ MTUサイズを設定

使用例

例1: すべてのネットワークインターフェースを表示

1
ifconfig

実行結果:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe3e:1234  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3e:12:34  txqueuelen 1000  (Ethernet)
        RX packets 1250 bytes 98765 (96.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 980 bytes 75234 (73.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0
        collisions 0  txqueuelen 1000
        RX bytes:98765 (96.4 KiB)  TX bytes:75234 (73.4 KiB)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0 bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0 bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0
        collisions 0  txqueuelen 1000

マシンに接続されているすべてのネットワークデバイスの詳細情報が表示されます。

例2: 特定のインターフェースのみ表示

1
ifconfig eth0

実行結果:

1
2
3
4
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe3e:1234  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3e:12:34  txqueuelen 1000  (Ethernet)

特定のインターフェース(ここではeth0)の情報だけを表示。

例3: 有効・無効を問わずすべてのインターフェースを表示

1
ifconfig -a

実行結果:

1
2
3
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> ...
eth1: flags=4098<BROADCAST,MULTICAST> ...  (無効状態)
lo: flags=73<UP,LOOPBACK,RUNNING> ...

無効になっているインターフェースも表示されます。

例4: 統計情報を表示(短い形式)

1
ifconfig -s

実行結果:

1
2
3
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0      1500     1250      0      0      0      980      0      0      0 BMRU
lo       65536        0      0      0      0        0      0      0      0 LRU

ネットワークデバイスの統計情報が表形式で表示されます。

例5: インターフェースを有効化(root権限)

1
sudo ifconfig eth0 up

実行結果:

1
(成功時は何も表示されない)

無効になっているインターフェースを有効化します。

例6: インターフェースを無効化(root権限)

1
sudo ifconfig eth0 down

実行結果:

1
(成功時は何も表示されない)

ネットワークインターフェースを無効化。通信が遮断されます。

例7: IPアドレスを設定(root権限)

1
sudo ifconfig eth0 192.168.1.200 netmask 255.255.255.0

実行結果:

1
(成功時は何も表示されない)

インターフェースのIPアドレスとネットマスクを設定します。

例8: MACアドレスを表示

1
ifconfig eth0 | grep ether

実行結果:

1
ether 00:0c:29:3e:12:34  txqueuelen 1000  (Ethernet)

MACアドレス(物理アドレス)を表示。デバイスの一意識別子です。

例9: IPアドレス情報だけを抽出

1
ifconfig eth0 | grep "inet " | awk '{print $2}'

実行結果:

1
192.168.1.100

インターフェースのIPアドレスだけを表示。スクリプトで使うときに便利。

例10: MTUサイズを変更(root権限)

1
sudo ifconfig eth0 mtu 9000

実行結果:

1
(成功時は何も表示されない)

ネットワークの最大転送単位(MTU)を変更。パフォーマンス調整で使うことがあります。


Tips・注意点

ifconfigは古いコマンド

最新のLinuxではifconfigは非推奨になり、ipコマンドが標準になっています。ただし、互換性のためにまだサポートされていることがほとんどです。

1
2
3
4
5
# 古い方法
ifconfig eth0

# 新しい方法(推奨)
ip addr show eth0

IPアドレス設定は一時的

ifconfigで設定したIPアドレスは再起動すると元に戻ります。永続的に設定するには、/etc/network/interfacesなどの設定ファイルを編集する必要があります。

1
2
3
4
5
# 一時的な設定
sudo ifconfig eth0 192.168.1.200

# 永続的な設定(ファイル編集が必要)
sudo nano /etc/network/interfaces

root権限が必要な操作

IPアドレス変更やインターフェースのup/downには、root権限(sudo)が必要です。

1
2
3
4
5
# エラーになる
ifconfig eth0 192.168.1.200

# 正しい
sudo ifconfig eth0 192.168.1.200

インターフェース名の確認

システムによってインターフェース名が異なります。一般的にはeth0, eth1(有線)、wlan0, wlan1(無線)などです。

1
ifconfig -a  # すべてのインターフェースを確認

実践的な使い方

ネットワーク接続の確認

1
ifconfig eth0 | grep -E "inet |RX packets|TX packets"

ネットワークデバイスが正常に動作しているか確認。IPアドレス、送受信パケット数をチェック。

ネットワークトラブルシューティング

1
ifconfig -s

統計情報を表示してエラーやドロップの発生状況を確認。ネットワークの問題を診断できます。

ネットワーク設定情報の確認

1
2
3
4
5
6
7
#!/bin/bash
echo "=== Network Configuration ==="
for iface in $(ifconfig -a | cut -d ' ' -f1 | tr -d ':' | sort -u); do
  echo "Interface: $iface"
  ifconfig $iface | grep "inet " | awk '{print "  IP: " $2}'
  ifconfig $iface | grep "ether" | awk '{print "  MAC: " $2}'
done

すべてのインターフェースのIP・MACアドレスを一覧表示するスクリプト。

テスト環境でのIPアドレス一時変更

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# バックアップ
current_ip=$(ifconfig eth0 | grep "inet " | awk '{print $2}')

# テスト用に変更
sudo ifconfig eth0 192.168.1.200

# テスト実行
# ...

# 元に戻す
sudo ifconfig eth0 $current_ip

一時的にIPアドレスを変更してテストし、後で元に戻すスクリプト。


まとめ

ifconfigコマンドのポイント:

  • ネットワーク情報表示 - IPアドレス、MACアドレス、通信統計などを確認
  • -a: 有効・無効を問わずすべてのインターフェースを表示
  • -s: 統計情報を表形式で表示
  • up/down: インターフェースの有効・無効を切り替え
  • inet: IPアドレスを設定
  • root権限が必要 - 設定変更にはsudoが必要
  • よく使う組み合わせ: ifconfig, ifconfig -a, ifconfig -s

ネットワーク管理の基本コマンド。出力形式が複雑ですが、慣れるとシステムの状態がすぐ把握できます。トラブル時にはまずこのコマンドで確認するのが定石ですよ!