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

2015-05-21 10:38:16Ubuntulinux, network, systemd, ubuntu, udev, ネットワーク

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ファイルを修正しておく。
sudo vi /etc/network/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 

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

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

お気に入りのUbuntu 14.04 LTS日本語Rem―無償OS &無償ソフトで何でも揃う!
岡田 長治 中村 睦
カットシステム
売り上げランキング: 505,347

2015-05-21 10:38:16Ubuntulinux, network, systemd, ubuntu, udev, ネットワーク