[Linux] ネットワーク設定の確認を行う、ipコマンドを読み解く

※当サイトは広告収入で運営されているため広告が表示される場合があります。

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」 (予測可能なネットワークインターフェイス)だからだ。

これはカーネルがデバイスを発見した順番にインターフェイス名を eth0eth1wlan0wlan1 というように割り振るとセキュリティ上危険だと判明したためだ。

例えばカーネルのブート前などに以前起動したときとは違うデバイス構成にしてしまえば、インターフェイス名が変わってしまう場合があり、その回線向けに設定したファイヤーウォールなどが無意味になってしまう。

これを解決するため、 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_codelqdisc(Queueing Discipline) 送信パケットを取り扱うスケジューラ、 fq_codel(Fair Queueing Codel) は systemd のデフォルト。他にも10種類ほどあるがここでは省略。
state UPネットワークインターフェイスが作動中
group defaultグループインターフェイス
qlen 1000キューの長さ
link/ether 00:25:22:cf:c7:71macアドレス
brd ff:ff:ff:ff:ff:ffブロードキャストアドレス
inet 192.168.0.40/24IPv4 アドレス
brd 192.168.0.255ブロードキャストアドレス
scope globalscope global : 送信先はグローバル。
scope link : ローカルネットワーク内。
scope host : 自システムのみ。
dynamic noprefixroute enp6s0予めネットワーク経路を固定せず動的にアドレスを割り当てる。
valid_lft 67751secIPv4 アドレスの有効期限
preferred_lft 67751sec適切な IPv4 アドレスの有効期限
inet6 fe80::7×77:x490:311x:5xx8/64IPv6 のアドレス。
scope link送信先はローカルネットワーク内のみ。
noprefixrouteIPv6 アドレスの割当。予め該当のネットワークの経路を固定しない。
valid_lft forever有効な IPv6 アドレスの有効期限
preferred_lft forever適切な IPv6 アドレスの有効期限

おわり

image from Thomas Jensen

コメント

タイトルとURLをコピーしました