Edited at

CentOS 7のネットワーク名「enp1s0」という文字列の謎に迫る

More than 3 years have passed since last update.

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

すっきり!