IP コマンドの見方とオプションの説明

IP コマンドIP コマンドとは、ネットワークデバイスやルーティングなどの管理・確認コマンドです。

ip コマンドは、レガシーな net-tools パッケージの代替として推奨されてます。

iproute2 (推奨)net-tools (レガシー)説明
ip link, ip addrifconfigIP アドレスNIC
ip neigharpARP テーブル
ip routerouteIP ルーティングテーブル
ip maddripmaddr, netstat -gマルチキャスト
https://enakai00.hatenablog.com/entry/20140712/1405139841
ip addr
2: eth0: mtu 1500(一部略)
    link/ether 12:34:56:78:9a:bc
    inet 192.0.2.2/24
ネットワークのコマンド
スポンサーリンク
ip linkip link とは、ネットワークデバイスを管理・確認するコマンドです。

例えば、ネットワークデバイス (NIC) の MAC アドレスを確認したりできます。

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    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 qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
PC は NIC (有線) や、無線子機ごと
iPhone は、無線子機が内蔵されてると考えればok
(Wi-fi アドレス = MAC アドレス)

MAC アドレスは、ベンダーが出荷時に割り当てます。(最近のものはランダムに変わったりする)

ip link の見方

2つ目のネットワークデバイス eth0 を例に、各フィールドの意味を説明します。

フィールド説明
eth0ネットワークデバイス名
<BROADCAST,MULTICAST,UP,LOWER_UP>デバイスの状態
mtu 1500MTU (1回の転送で送信可能な IP パケット) のサイズ
qdisc pfifo_fastキューイング規則
state UPネットワークの状態
qlen 1000キューの長さ
link/ether 12:34:56:78:9a:bcMAC アドレス
brd ff:ff:ff:ff:ff:ffブロードキャストアドレス

ip link コマンドのオプション

show <デバイス名> (特定のデバイスを確認)

特定のネットワークデバイスだけ確認できます。

ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff

set (属性を変更)

ネットワークデバイスの属性 (設定) を変更します。

sudo ip link set lo down

lo (localhost) に対して、通信できなくなります。

ping localhost
sudo ip link set lo up

注意事項

なお、ip コマンドによるネットワークの設定変更は一時的です。

再起動しても恒久的に設定したい場合は、nmcli を使いましょう。

スポンサーリンク

ip addr (ip-address)

ip addr(ip-address)ip addr とは、IP アドレスの管理・確認するコマンドです。

ip link の情報に加え、IP アドレスの情報が追加されます。

ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.2/24 brd 192.0.2.255 scope global dynamic eth0
       valid_lft 3000sec preferred_lft 3000sec
MAC アドレスと同様に、NIC や無線子機ごとに設定可能

ip addr の見方

IP アドレスに関連がある部分だけを説明します。

ip addr の全フィールドの説明はこちら

フィールド説明
eth0ネットワークデバイス名
<BROADCAST,MULTICAST,UP,LOWER_UP>ネットワークデバイスの状態
mtu 1500MTU (1回の転送で送信可能な IP パケット) のサイズ
qdisc pfifo_fastキューイング規則
state UPネットワークの状態
qlen 1000キューの長さ
link/ether 12:34:56:78:9a:bc
brd ff:ff:ff:ff:ff:ff
MAC アドレス
ブロードキャストアドレス
inet 192.0.2.2/24
brd 192.0.2.255
IPv4 アドレス
ブロードキャストアドレス
scope global送信先のスコープ
scope global : グローバル
scope link : ローカルネットワーク (自身のサブネット等)
scope host : 自分のみ
dynamicDHCP などで動的にアドレスを割り当て
eth0ネットワークデバイス名
valid_lft 3000secIPv4 アドレスの有効期限
preferred_lft 3000secIPv4 アドレスの適切な有効期限
https://slacknotebook.com/checking-network-configs-on-linux-using-ip-command/
フィールド説明
eth0ネットワークデバイス名
inet 192.0.2.2/24IPv4 アドレス
brd 192.0.2.255ブロードキャストアドレス
scope global送信先のスコープ
scope global : グローバル
scope link : ローカルネットワーク (自身のサブネット等)
scope host : 自分のみ
dynamicDHCP などで動的にアドレスを割り当て
eth0ネットワークデバイス名
valid_lft 3000secIPv4 アドレスの有効期限
preferred_lft 3000secIPv4 アドレスの適切な有効期限
https://slacknotebook.com/checking-network-configs-on-linux-using-ip-command/

IP アドレスの静的 (手動) 設定

ip addr コマンドで、IP アドレスを手動で割り当ててみます。

show <デバイス名> (指定したデバイスを確認)

ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.2/24 brd 192.0.2.255 scope global eth0
       valid_lft 3000sec preferred_lft 3000sec

add (IP アドレスを追加)

sudo ip addr add 192.0.2.3/24 dev eth0
ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.2/24 brd 192.0.2.255 scope global eth0
       valid_lft 3000sec preferred_lft 3000sec
    inet 192.0.2.3/24 scope global eth0
       valid_lft forever preferred_lft forever
ping 192.0.2.3
PING 192.0.2.3 (192.0.2.3) 56(84) bytes of data.
64 bytes from 192.0.2.3: icmp_seq=1 ttl=127 time=0.021 ms
64 bytes from 192.0.2.3: icmp_seq=2 ttl=127 time=0.034 ms

del (IP アドレスを削除)

sudo ip addr del 192.0.2.3/24 dev eth0
ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.2/24 brd 192.0.2.255 scope global eth0
       valid_lft 3000sec preferred_lft 3000sec
ping 192.0.2.3
PING 192.0.2.3 (192.0.2.3) 56(84) bytes of data.
3 packets transmitted, 0 received, 100% packet loss, time 2106ms

IP アドレスの自動 (動的) 設定

systemd-networkd※1が DHCP サーバー※2と通信して、自動で IP アドレスを割り当てます。
※1 古い場合は dhclient
※2 ルータ広告を使う方法もある

sudo systemctl restart systemd-networkd
sudo journalctl -r
systemd-networkd[1111]: eth0: DHCPv4 address 192.0.2.2, gateway 192.0.2.1 acquired from 192.0.2.1
スポンサーリンク

ip neigh (ip-neighbour)

ip neigh(ip-neighbour)ip neigh とは、ARP テーブル (送信先の IP アドレスMAC アドレスの対応表) を管理・確認するコマンドです。
ip neigh
192.0.2.1 dev eth0 lladdr 01:23:45:67:89:AB REACHABLE
192.0.2.3 dev eth0 lladdr AA:BB:CC:DD:EE:FF REACHABLE

ip neigh の見方

フィールド説明
192.0.2.1送信先の IP アドレス
dev eth0送信元のネットワークデバイス名
lladdr 01:23:45:67:89:AB送信先の Link-Layer-Address (MAC アドレス)
REACHABLE状態

ARP テーブルの手動設定

ip-neigh コマンドを利用して、ARP テーブルを手動で設定してみます。

add (ARP テーブルに追加)

sudo ip neigh add 192.0.2.4 lladdr AA:BB:CC:DD:EE:FF dev eth0
ip neigh
192.0.2.1 dev eth0 lladdr 01:23:45:67:89:AB REACHABLE
192.0.2.4 dev eth0 lladdr BA:98:76:54:32:10 REACHABLE

del (ARP テーブルから削除)

sudo ip neigh del 192.0.2.4 dev eth0
ip neigh
192.0.2.1 dev eth0 lladdr 01:23:45:67:89:AB REACHABLE

ARP テーブルの自動 (動的) 更新

ARP テーブルに登録されていない IP アドレスと通信する場合、自動で ARP リクエストを送信して ARP テーブルを更新します。

ip neigh
192.0.2.1 dev eth0 lladdr 01:23:45:67:89:AB REACHABLE
ping 192.0.2.3
ip neigh
192.0.2.1 dev eth0 lladdr 01:23:45:67:89:AB REACHABLE
192.0.2.3 dev eth0 lladdr BA:98:76:54:32:10 REACHABLE

ARP テーブルが自動で更新されたことを確認できます。

ip route

ip routeip route とは、ルーティングテーブルを管理・確認するコマンドです。
ip route
default via 192.0.2.1 dev eth0
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.2

192.0.2.0/24 はデータリンク層で直接通信、それ以外はルーター 192.0.2.1 に転送を示します。

ip route の見方

フィールド説明
・default via 192.0.2.1
・192.0.2.0/24
送信先のネットワークアドレス
・default: デフォルトゲートウェイ
・via: next hop (次のルーター)
dev eth0送信元のネットワークデバイス名
proto kernelルートを作成したルーティングプロトコル
(kernel の場合は kernel により自動生成)
scope link送信先の範囲
host: 自分自身
link: 自分の所属するネットワーク (データリンク層で通信)
global: グローバル (他の) ネットワーク (ネットワーク層で通信)
src 192.0.2.2送信元ネットワークデバイスの IP アドレス

ルーティングテーブルの手動設定

ip route でルーティングテーブルを手動で設定してみます。

add ルーティングテーブルに追加

sudo ip route add 192.0.100.0/24 dev eth0
ip route
default via 192.0.2.1 dev eth0
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.2
192.0.100.0/24 dev eth0 scope link

del ルーティングテーブルから削除

sudo ip route del 192.0.100.0/24 dev eth0
ip route
default via 192.0.2.1 dev eth0
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.2

ip maddr

ip maddr(ip-maddress)ip maddr とは、マルチキャストアドレスを管理・確認するコマンドです。
ip maddr
2:	eth0
	link  01:00:5e:00:00:00
	inet  224.0.0.1

ip maddr の見方

フィールド説明
eth0ネットワークデバイス名
link 01:00:5e:00:00:00MAC アドレス (マルチキャストアドレスは 01:00:5e から始まる)
inet 224.0.0.1IP アドレス (マルチキャストアドレスの範囲は 224.0.0.0 ~ 239.255.255.255)

関連記事

学習ロードマップ
ネットワークのコマンド
OSI 参照モデル