CentOS7 で eth0, eth1 固定にする

LINEで送る
Pocket

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

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください