CentOS7 よりネットワークデバイスが eth… とかではなく eno0 ens11f0 とかに変わりました。検索すると /etc/default/grub を更新して kernel の起動オプションを変更。grub データを更新が定番の設定のようだが、この方法だとマシンによって LANケーブルが刺さっている、刺さってないなどの理由により eth0 と eth1 が入れ替わったりと使えないマシンがある事が分かった。ここでは、NICのデバイス名を固定する方法を紹介したい。
定番の設定方法
/etc/default/grub
GRUB_CMDLINE_LINUX="rhgb quiet" ↓ GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0 biosdevname=0"
grub データの更新
# grub2-mkconfig -o /boot/grub2/grub.cfg
/etc/udev/rules.d/70-persistent-net.rules ファイルを作成すれば良いとかあるけれど、それでもダメ。以下のエラーメッセージが出力されたりする。
Sep 25 17:13:08 decstream systemd-udevd: Error changing net interface name 'eth1' to 'eth0': File exists Sep 25 17:13:08 decstream systemd-udevd: could not rename interface '3' from 'eth1' to 'eth0': File exists Sep 25 17:13:08 decstream systemd-udevd: Error changing net interface name 'eth0' to 'eth1': File exists Sep 25 17:13:08 decstream systemd-udevd: could not rename interface '2' from 'eth0' to 'eth1': File exists
ようするに、エラーメッセジから推測するに /etc/default/grub の更新は必要ないのです。
# cat /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEM=="net", ACTION=="add", KERNEL=="eno*", SUBSYSTEMS=="pci", KERNELS=="0000:05:00.0", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", KERNEL=="eno*", SUBSYSTEMS=="pci", KERNELS=="0000:00:1f.6", NAME="eth1"
KERNEL== は、実際割り当てられているデバイス eno* とか ens*。KERNELS== の値は ethtool コマンドで確認して変更して下さい。
# ethtool -i eth0 | grep bus-info
bus-info: 0000:05:00.0