CentOS7に特定のNIC名でないとインストールができないシステムをインストールする必要があったので、NIC名を変更する方法を調査した。
##そもそもなぜ変更する必要があるのか
CentOS7(RHEL7)からNIC名の命名規則が変わったから。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/ch-consistent_network_device_naming
6以前ではethといった名前がデフォルトであったため、ethに依存したシステムになっていた。
システム側を改修してNIC名に依存しない形にするのが最もきれいな解決策だが、
状況が許さなかったのでNIC名側を変更することになった。
##eth*に戻すには
####1.NetworkManagerを無効化する
NetworkManagerがNIC名を勝手に変えたりしてしまうことがあるから。
systemctl stop NetworkManager
systemctl disable NetworkManager
####2./usr/lib/udev/rules.d/60-net.rules
というファイルを作成し、下記内容を記述する。
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"
上記記述をするとOS起動時に
1./lib/udev/rename_device
を実行
2./etc/sysconfig/network-script/ifcfg-***
というファイルを検索
3.そのファイルに記載されているHWADDR
の値とNICのMACアドレスを比較
4.一致する場合は同ファイル内のDEVICE
の値をNIC名として設定
という処理をしてくれる。
####3./etc/sysconfig/network-scripts/ifcfg-eth0
を作成
名前を変えたいNICについている名前がenp0s8
とかだったら
mv /etc/sysconfig/network-scripts/ifcfg-enp0s8 /etc/sysconfig/network-scripts/ifcfg-eth0
####4.HWADDR
とDEVICE
の値を編集する
HWADDR=XX:XX:XX:XX:XX:XX
DEVICE=eth0
NAME=eth0 # NAMEがあったらこれも合わせておく
####5.再起動
reboot
##デフォルトゲートウェイについて
NIC名を変えるとデフォルトゲートウェイの設定が消えることがある。
下記ファイルにNIC名指定でデフォルトゲートウェイの設定が記述されていると発生する。
NETWORKING=Yes
#GATEWAYDEV=enp0s8
GATEWAYDEV=eth0 # GATEWAYDEVの値を変更後の名前にしておく
GATEWAY=192.168.1.1
##biosdevnameとnet.ifnames
調査しているとbiosdevnameとnet.ifnamesを無効化してeth*に戻す方法を紹介しているサイトが多かった。
ただその方法だとPCI識別番号順(多分ip a
で表示される順)にeth0、eth1~と割り振られてしまうので狙ったNICに狙った名前を付けることができない。
今回は2番目のNICにeth0、4番目のNICにeth1のように名前を付けたかったので上記の方法をとった。
また、biosdevnameとnet.ifnamesを無効化してから、udevルールやHWADDRで命名順序を変えようとすると名前の重複が発生してうまくいかないようだ。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec-troubleshooting_network_device_naming