[Ubuntu][Network][自分用メモ] 今更ながらUbuntuのSystemdの場合のネットワークインターフェイスの命名規則を調べてみた。

Ubuntu
ほげめも: Debian vs Ubuntu: ネットワークインタフェースの名前
Debian と Ubuntu の違いについて深追いする超不定期連載第 2 回はネットワークインタフェースの名前の付けかたについてです(なお第 1 回は 1 年半くらい前の記事 でした)。今回は Debian/Ubuntu ばかりでなく R...

RHEL7/CentOS7になってからネットワークインターフェイスの命名規則が変わったのは周知の事実ですが、Systemdに切り替わったUbuntu 15.04も同じなのかなぁと思って実際に環境を変更してみました。

POINT

元々自宅にある環境はDellのServerで動作しているのですが、RHEL/CentOSの場合はbiosdevnameによって他のマシンとは違う命名規則によって命名されるらしいのです。
#これ、今まで知りませんでした。

RHEL7/CentOS7:

  • 一般のマシン: Predictable Network Interface Name(予測可能な命名)
  • DELL製のハードウェア: biosdevnameによる「em<port>

やはりSystemdに切り替わったので、systemd/udevの命名規則にしたい場合は以下のようにするそうです。

1. 先に命名規則がどうなるか調べる

$ sudo udevadm test-builtin net_id /sys/class/net/eth1
calling: test-builtin
=== trie on-disk ===
tool version:          219
strings            1723288 bytes
nodes              5082488 bytes
Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Created link configuration context.
ID_NET_NAME_MAC=enx60eb6907d9a1
ID_OUI_FROM_DATABASE=Quanta computer Inc.
ID_NET_NAME_PATH=enp5s0f1
Unload module index
Unloaded link configuration context.

2. rulesファイルでインターフェイスを縛っている場合は、該当するインターフェイスをコメント扱いする。

$ ls -l /etc/udev/rules.d/70-persistent-net.rules
-rw-r--r-- 1 root root 855 May 19 20:09 /etc/udev/rules.d/70-persistent-net.rules

3. 本来であれば以下のように解釈されるのを、biosdevnameを無効、systemd/udevを有効にする。

POINT

ユーザの指定 persistent-net biosdevname systemd write_net_rules

13行目のGRUB_CMDLINE_LINUXに、biosdevname=0 net.ifnames=1を追記する。

$ head -15 /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset transparent_hugepage=always acpi=force"
GRUB_CMDLINE_LINUX="intel_iommu=on pci=assign-busses biosdevname=0 net.ifnames=1"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains

4. GRUBを更新する。

sudo update-grub2

5. interfacesファイルを修正しておく。

auto enp5s0f1
iface enp5s0f1 inet manual

auto enp4s0f0
iface enp4s0f0 inet manual
  bond-master bond1
  mtu 9000

auto enp4s0f1
iface enp4s0f1 inet manual
  bond-master bond1
  mtu 9000

auto bond1
iface bond1 inet static
  bond-miimon 100
  bond_downdelay 100
  bond_updelay 100
  bond-mode 2
  bond-slaves enp4s0f0 enp4s0f1
  bond-xmit-hash-policy layer2+3

  address 10.0.0.254
  netmask 255.255.255.0
  network 10.0.0.0
  broadcast 10.0.0.255

6. 再起動してみる。

7. インターフェイスが新しい命名で上がってきているか確認する。

enp5s0f0  Link encap:Ethernet  HWaddr 60:eb:69:07:d9:a0
inet6 addr: fe80::62eb:69ff:fe07:d9a0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:146460 errors:0 dropped:4 overruns:0 frame:0
TX packets:139281 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13661200 (13.6 MB)  TX bytes:11452647 (11.4 MB)
Memory:df6e0000-df6fffff

enp5s0f1  Link encap:Ethernet  HWaddr 60:eb:69:07:d9:a1
inet6 addr: fe80::62eb:69ff:fe07:d9a1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:35843 errors:0 dropped:3 overruns:0 frame:0
TX packets:23189 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6527319 (6.5 MB)  TX bytes:2756982 (2.7 MB)
Memory:df620000-df63ffff 

ちなみにうちの環境の場合の命名は以下のように決まった模様。

PredictableNetworkInterfaceNames

ハードウェアのコネクタの物理的/地理的位置を組み込んだ名前、らしいです。
enはイーサネット、pはphysical? sが何に該当するのかわからなかったです。ご存知のかたがいれば教えていただけると助かります。

systemd-udevdによるNIC命名とbiosdevnameがまざって混乱する件
最近のsystemd-udevdはlinuxのネットワークインタフェース名を設定します。それにともない特にRHEL界隈でNIC命名規則が複雑になってきたので紹介します。。 問題: linuxカーネルはNICの名前をドライバ初期化順につけるの...
お気に入りのUbuntu 14.04 LTS日本語Rem―無償OS &無償ソフトで何でも揃う!
岡田 長治 中村 睦
カットシステム
売り上げランキング: 505,347
この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました