- 「IPアドレスを確認したいけど、どのコマンドを使えばいいの?」
- 「ifconfigコマンドが使えないって言われた…」
- 「ipコマンドって何?難しそう…」
実は、最近のLinuxでは ifconfig
に代わって ip
コマンド が標準になっています。
ipコマンドとは
- Linuxでネットワークを管理するための現代的なツール
- ifconfig、route、arpなどの古いコマンドを1つにまとめたもの
- より多機能で、IPv6にも完全対応
- ほとんどのLinuxディストリビューションに最初から入っている
この記事では、ipコマンドの基本から実際の使い方まで、初心者にも分かりやすく説明します。
ipコマンドとifconfigの違い

なぜipコマンドが推奨されるのか?
従来のコマンドとの比較
操作 | 古いコマンド | 新しいコマンド |
---|---|---|
IPアドレス確認 | ifconfig | ip addr show |
ルーティング確認 | route -n | ip route show |
ARPテーブル確認 | arp -a | ip neigh show |
インターフェース操作 | ifconfig eth0 up | ip link set eth0 up |
ipコマンドの優れた点
- 統一性: 1つのコマンドで様々な操作ができる
- IPv6対応: 最初からIPv6に完全対応
- 豊富な機能: VLANやブリッジなど高度な設定も可能
- スクリプト向け: 出力形式が安定している
- 将来性: 新しい機能が継続的に追加される
移行が進む理由
ifconfigの問題点
- IPv6の対応が不完全
- 新しい機能が追加されない
- 将来的に削除される予定
- 複数のコマンドを覚える必要がある
ipコマンドのメリット
- 1つのコマンドですべてできる
- 最新のネットワーク技術に対応
- より詳細な情報が得られる
- JSON形式での出力も可能
ipコマンドの基本構文
基本的な書き方
ip [オプション] オブジェクト コマンド
主要なオブジェクト
addr
(address): IPアドレス関連link
: ネットワークインターフェース関連route
: ルーティング関連neigh
(neighbor): ARP/NDP関連
主要なコマンド
show
(またはlist
): 情報を表示add
: 追加del
(またはdelete
): 削除set
: 設定変更
省略形も使える
ipコマンドは多くの部分を省略できます:
# フルバージョン
ip address show
# 省略版
ip addr show
ip addr
ip a
# すべて同じ結果になる
基本的な使い方
IPアドレスの確認
すべてのインターフェースを表示
ip addr show
# または
ip a
実行例
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet6 fe80::a00:27ff:fe12:3456/64 scope link
出力の読み方
lo
: ループバックインターフェース(自分自身との通信用)eth0
: 有線LANインターフェースinet
: IPv4アドレスinet6
: IPv6アドレスlink/ether
: MACアドレス
特定のインターフェースのみ表示
ip addr show eth0
# または
ip a show eth0
ネットワークインターフェースの確認
インターフェースの一覧表示
ip link show
# または
ip link
ip l
実行例
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT
link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT
link/ether 02:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
状態の意味
UP
: インターフェースが有効DOWN
: インターフェースが無効LOWER_UP
: 物理的なリンクが確立BROADCAST
: ブロードキャスト対応MULTICAST
: マルチキャスト対応
ルーティングテーブルの確認
現在のルートを表示
ip route show
# または
ip route
ip r
実行例
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
出力の読み方
default via 192.168.1.1
: デフォルトゲートウェイdev eth0
: 使用するインターフェースproto dhcp
: DHCPで設定されたルートmetric 100
: ルートの優先度(小さいほど優先)
ARP/NDPテーブルの確認
近隣ノード(ARP)の確認
ip neigh show
# または
ip neigh
ip n
実行例
192.168.1.1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
192.168.1.50 dev eth0 lladdr aa:bb:cc:dd:ee:ff STALE
fe80::1 dev eth0 lladdr 00:11:22:33:44:55 router REACHABLE
状態の意味
REACHABLE
: 到達可能STALE
: 古い情報(確認が必要)DELAY
: 確認中PROBE
: 調査中
設定変更の基本操作

インターフェースの有効化・無効化
インターフェースを有効にする
sudo ip link set eth0 up
インターフェースを無効にする
sudo ip link set eth0 down
確認
ip link show eth0
IPアドレスの追加・削除
IPアドレスを追加
sudo ip addr add 192.168.1.200/24 dev eth0
IPアドレスを削除
sudo ip addr del 192.168.1.200/24 dev eth0
すべてのIPアドレスを削除(インターフェースのフラッシュ)
sudo ip addr flush dev eth0
ルートの追加・削除
デフォルトゲートウェイを追加
sudo ip route add default via 192.168.1.1
特定ネットワークへのルートを追加
sudo ip route add 10.0.0.0/24 via 192.168.1.254
ルートを削除
sudo ip route del 10.0.0.0/24
デフォルトルートを削除
sudo ip route del default
実践的な使用例
基本的なネットワーク情報の確認
ネットワーク状況の一括確認スクリプト
#!/bin/bash
echo "=== ネットワークインターフェース ==="
ip link show
echo -e "\n=== IPアドレス設定 ==="
ip addr show
echo -e "\n=== ルーティングテーブル ==="
ip route show
echo -e "\n=== ARPテーブル ==="
ip neigh show
DHCPでIPアドレスを取得
# インターフェースをいったん無効化
sudo ip link set eth0 down
# 既存のIPアドレスを削除
sudo ip addr flush dev eth0
# インターフェースを有効化
sudo ip link set eth0 up
# DHCPクライアントを起動(Ubuntu/Debian)
sudo dhclient eth0
# または(CentOS/RHEL)
sudo dhcpcd eth0
静的IPアドレスの設定
# 既存設定のクリア
sudo ip addr flush dev eth0
# 静的IPアドレスを設定
sudo ip addr add 192.168.1.100/24 dev eth0
# デフォルトゲートウェイを設定
sudo ip route add default via 192.168.1.1
# インターフェースを有効化
sudo ip link set eth0 up
# 設定確認
ip addr show eth0
ip route show
ネットワークトラブルシューティング
接続性の確認手順
# 1. インターフェースの状態確認
ip link show
# 2. IPアドレスの確認
ip addr show
# 3. ルーティングの確認
ip route show
# 4. ゲートウェイへの疎通確認
ping -c 3 $(ip route | awk '/default/ {print $3}')
# 5. DNS解決の確認
nslookup google.com
# 6. 外部への疎通確認
ping -c 3 8.8.8.8
高度な機能

JSON形式での出力
# JSON形式で出力(スクリプト処理に便利)
ip -j addr show
# 見やすく整形
ip -j addr show | python3 -m json.tool
カラー出力
# カラー表示で見やすく
ip -c addr show
ip -c link show
ip -c route show
特定の情報のみ抽出
# IPv4アドレスのみ表示
ip -4 addr show
# IPv6アドレスのみ表示
ip -6 addr show
# 特定のファミリーのルート
ip -4 route show
ip -6 route show
統計情報の表示
# 詳細な統計情報
ip -s link show
# より詳細な統計
ip -s -s link show
実行例
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT
link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
1048576 1024 0 0 0 0
TX: bytes packets errors dropped carrier collsns
524288 512 0 0 0 0
よくある問題と解決方法
問題1:ipコマンドが見つからない
症状
$ ip addr show
bash: ip: command not found
解決方法
# Ubuntu/Debian
sudo apt update
sudo apt install iproute2
# CentOS/RHEL 7以前
sudo yum install iproute
# CentOS/RHEL 8以降
sudo dnf install iproute
# Arch Linux
sudo pacman -S iproute2
問題2:権限がない
症状
$ ip addr add 192.168.1.100/24 dev eth0
RTNETLINK answers: Operation not permitted
解決方法
# sudoを使用
sudo ip addr add 192.168.1.100/24 dev eth0
問題3:設定が再起動後に消える
症状 ipコマンドで設定した内容が再起動後に元に戻る
解決方法 永続化するには、OS固有の設定ファイルを編集する必要があります:
Ubuntu(Netplan)
# /etc/netplan/01-network-manager-all.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
適用:
sudo netplan apply
CentOS/RHEL(ifcfg形式)
# /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
適用:
sudo systemctl restart NetworkManager
問題4:インターフェース名がわからない
解決方法
# すべてのインターフェースを表示
ip link show
# アクティブなインターフェースのみ
ip link show up
# 有線インターフェースを探す(通常 eth*, en* で始まる)
ip link show | grep -E "(eth|en)"
# 無線インターフェースを探す(通常 wlan*, wl* で始まる)
ip link show | grep -E "(wlan|wl)"
便利なエイリアスとスクリプト

.bashrcに追加すると便利なエイリアス
# ~/.bashrcに追加
alias ipa='ip addr show'
alias ipl='ip link show'
alias ipr='ip route show'
alias ipn='ip neigh show'
# カラー版
alias ipac='ip -c addr show'
alias iplc='ip -c link show'
alias iprc='ip -c route show'
# 統計付き
alias ipls='ip -s link show'
ネットワーク情報表示スクリプト
#!/bin/bash
# network-info.sh
echo "======================================"
echo " ネットワーク情報 "
echo "======================================"
echo -e "\n📡 アクティブなインターフェース:"
ip link show up | grep -E "^[0-9]+" | awk '{print " - " $2}' | sed 's/://g'
echo -e "\n🌐 IPv4アドレス:"
ip -4 addr show | grep inet | grep -v 127.0.0.1 | awk '{print " - " $NF ": " $2}'
echo -e "\n🛣️ デフォルトゲートウェイ:"
ip route | grep default | awk '{print " - " $3 " (via " $5 ")"}'
echo -e "\n🔍 DNS サーバー:"
if [ -f /etc/resolv.conf ]; then
grep nameserver /etc/resolv.conf | awk '{print " - " $2}'
fi
echo -e "\n📊 接続性テスト:"
if ping -c 1 -W 2 8.8.8.8 >/dev/null 2>&1; then
echo " ✅ インターネット接続: OK"
else
echo " ❌ インターネット接続: NG"
fi
まとめ
ipコマンドは、Linuxでネットワークを管理するための現代的で強力なツールです。
重要なポイント
- ifconfigの後継: より多機能で将来性がある
- 統一的な操作: 1つのコマンドで様々な操作が可能
- 豊富な情報: 詳細なネットワーク情報を取得可能
- スクリプト向け: 安定した出力形式
基本コマンド一覧
# 情報確認
ip addr show # IPアドレス確認
ip link show # インターフェース確認
ip route show # ルーティング確認
ip neigh show # ARP確認
# 設定変更(sudo必要)
ip link set eth0 up # インターフェース有効化
ip addr add IP/mask dev eth0 # IPアドレス追加
ip route add default via GW # デフォルトルート追加
# 省略形
ip a # ip addr showの省略
ip l # ip link showの省略
ip r # ip route showの省略
ip n # ip neigh showの省略
コメント