CentOS 7をインストールして謎だったことの一つとして、ネットワーク名が今までの「eth0」みたいなやつから、「enp1s0」みたいな謎の文字列に変わった事がある。
気になったので調べてみた。
ネットワーク名は新しい命名規則に沿って自動的に作られる
調べていると、以下のブログに丁寧に説明が書いてあった。
Predictable Network Interface Names
ざっくり訳すと以下の通り
v197のsystemd/udevでは自動的に安定的なネットワークインターフェース名を割り当てる。
ローカルエリアネットワークに限らず、WLANやWWANに対しても割り当てる。
伝統的な ("eth0", "eth1", "wlan0", ...)といった命名規則はもうしない。
新しい命名規則では以下の嬉しい事がある。
- OSが再起動してもインターフェース名が変わらない
- ハードウェアを追加したり外したりしてもインターフェース名が変わらない
- カーネルやドライバをアップデートしても変わらない
- NICが壊れて取り変えてもインターフェース名は変わらない
- インターフェース名は自動的に付けられてそのまま動く
- インターフェース名は命名規則に沿っているので完全に予測できる
- などなど
では「enp1s0」は何を意味するのか?
これはsystemdの中にネットワーク名を命名するソースコードがあり、そこを見ればわかる。
ソースコードはココ
この中に以下のコメントがある
* Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
*
* Type of names:
* b<number> -- BCMA bus core number
* ccw<name> -- CCW bus group name
* o<index>[d<dev_port>] -- on-board device index number
* s<slot>[f<function>][d<dev_port>] -- hotplug slot index number
* x<MAC> -- MAC address
* [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
* -- PCI geographical location
* [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
* -- USB port number chain
これに従うと、「enp1s0」は以下の意味であるとよみとれる。
- 「en」は「イーサーネット」
- 「p1」は「1番目のバス」
- 「s0」は「0番目のスロット」
なーるほど。
そもそも、切れ目すら知らずに「enp」ってなんだろうって思ってたよw
すっきり!