ip
コマンドはネットワーク設定コマンドのスタンダード。システムのネットワークパラメータを表示したり設定するコマンドだ。 Linux では広く使われていた ifconfig
が非推奨となり多くのディストリビューションで排除されつつある。 ip
コマンドへの移行が推奨されている。
IPROUTE コマンドは多くの情報を含んでいるにもかかわらず、ほとんど中身がわからなかったので調べてみることにした。
システムのすべてのネットワークを表示させる
$ ip addr
$ ip a
上記の2つのコマンドはネットワークデバイスの IPアドレスとプロパティを表示させるコマンドであり、出力結果は同じだ。 オブジェクトaddr
(address の略)の代わりに a
だけでも表示させることができる。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:25:22:xx:x7:71 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.40/24 brd 192.168.0.255 scope global dynamic noprefixroute enp6s0
valid_lft 67751sec preferred_lft 67751sec
inet6 fe80::7x77:x490:311x:5be8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
ifconfig -a
とほぼ同じ情報が表示されることがわかる。
インターフェイス名について
上記のログで2つのネットワークインターフェイスが表示されていることがわかるだろう。
1番目の lo
は IP 通信を行うためのローカルループバックインターフェイスだ。
2番目の enp6s0
は物理的なデバイスにつけられたインターフェイス名前。旧来のように eth0
ではなく、 なぜ enp6s0
という奇妙なインターフェイス名が割り当てられているのかというと systemd/udev
によってデバイスに割り当てられた 「Predictable Network Interface」 (予測可能なネットワークインターフェイス)だからだ。
これはカーネルがデバイスを発見した順番にインターフェイス名を eth0
、 eth1
、wlan0
、wlan1
というように割り振るとセキュリティ上危険だと判明したためだ。
例えばカーネルのブート前などに以前起動したときとは違うデバイス構成にしてしまえば、インターフェイス名が変わってしまう場合があり、その回線向けに設定したファイヤーウォールなどが無意味になってしまう。
これを解決するため、 systemd
ではより細かくハードウェアの物理的な位置をもとに割り振るようになった。 en
は ethernet (イーサネット)。 p
は イーサネットカードのバス番号。 s
はスロット番号といった意味がある。
参考:freedesktop.org – Predictable Network Interface Names
<BROADCAST,MULTICAST,UP,LOWER_UP> の意味
不等号(<>)に囲まれた情報はそのインターフェイスのステータスを示している。
解説 | |
---|---|
BROADCAST | ブロードキャストが有効になっている |
MULTICAST | マルチキャストが有効になっている |
UP | ネットワークインターフェイスが有効状態 |
LOWER_UP | デバイスにケーブルが繋がっている |
RUNNING | デバイスが作動中である |
LOOPBACK | ループバック状態 |
その他のプロパティ
解説 | |
---|---|
mtu 1500 | ネットワーク上で送信可能なパケットの最大サイズは1500バイト |
qdisc fq_codel | qdisc(Queueing Discipline) 送信パケットを取り扱うスケジューラ、 fq_codel(Fair Queueing Codel) は systemd のデフォルト。他にも10種類ほどあるがここでは省略。 |
state UP | ネットワークインターフェイスが作動中 |
group default | グループインターフェイス |
qlen 1000 | キューの長さ |
link/ether 00:25:22:cf:c7:71 | macアドレス |
brd ff:ff:ff:ff:ff:ff | ブロードキャストアドレス |
inet 192.168.0.40/24 | IPv4 アドレス |
brd 192.168.0.255 | ブロードキャストアドレス |
scope global | scope global : 送信先はグローバル。 scope link : ローカルネットワーク内。 scope host : 自システムのみ。 |
dynamic noprefixroute enp6s0 | 予めネットワーク経路を固定せず動的にアドレスを割り当てる。 |
valid_lft 67751sec | IPv4 アドレスの有効期限 |
preferred_lft 67751sec | 適切な IPv4 アドレスの有効期限 |
inet6 fe80::7×77:x490:311x:5xx8/64 | IPv6 のアドレス。 |
scope link | 送信先はローカルネットワーク内のみ。 |
noprefixroute | IPv6 アドレスの割当。予め該当のネットワークの経路を固定しない。 |
valid_lft forever | 有効な IPv6 アドレスの有効期限 |
preferred_lft forever | 適切な IPv6 アドレスの有効期限 |
おわり
image from Thomas Jensen
コメント