web-dev-qa-db-ja.com

ブートCentOS 7のifcfg-eth0ネットワークスクリプトでHWADDRを強制的に修正する

質問

VMのクローンまたはコピーが発生したときに変更される場合に備えて、ifcfg-eth0スクリプトのHWADDR行をブート時に自身を検証/更新する方法を見つけたいと思います。これを行う方法は?CentOS 6では、ifcfg-eth0スクリプトからHWADDR行を削除することで、はるかに動的になりましたが、ifcfg-eth0がHWADDR行なしでifcfg-eno1677776に戻らないようにする方法をまだ見つけていませんCentOS 7のサポートに感謝します。


背景

VMware Workstationを介してCentOS 7.2.1511仮想マシンを実行しています。デフォルトでは、CentOS 7はネットワークスクリプトのeth命名規則を取り除き、現在ifcfg-eno1677776または類似の名前のネットワークスクリプトを使用するように構成されています。 heavlylyeth命名スキームに依存するソフトウェアを持っています。だから私はifcfg-eno1677776スクリプトを次のように再構成しました:

  1. _/etc/sysconfig/network-scripts/ifcfg-eno1677776_を_/etc/sysconfig/network-scripts/ifcfg-eth0_に名前変更
  2. ifcfg-ethを変更して(_/sys/class/net/eno1677776/address_からHWADDRを取得):

    _BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes NM_CONTROLLED=no HWADDR=00:0c:29:d6:d2:65_

  3. _/etc/sysconfig/grub_ファイルのGRUB_CMDLINE_LINUX行の最後にnet.ifnames =を追加しました。

  4. 再起動してifconfigを実行します(そしてお祝いします!):

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.176.15.148 netmask 255.255.252.0 broadcast 10.176.15.255 inet6 fe80::20c:29ff:fed6:d265 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d6:d2:65 txqueuelen 1000 (Ethernet) RX packets 2141073 bytes 749959853 (715.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 65237 bytes 35352127 (33.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

起動するたびに、このeth0インターフェイスが残ります。ただし、これはVMはチームメンバー間で配布され、最終的に顧客に提供されます。ここで問題が発生します。VMwareは、VMは配布用ですが、これによりVMのMACアドレスが変更されます。


編集:

以下の推奨される@larsksを機能させるには、変更後に_grub2-mkconfig -o /boot/grub2/grub.cfg_を実行する必要があります。私のために働いた!

4
msteppe91

最も簡単な解決策は、カーネルコマンドラインで次のオプションを設定して、「予測可能なデバイスの命名」動作を無効にすることです。

biosdevname=0 net.ifnames=0

これを配置すると、システムの最初のイーサネットインターフェースの名前はeth0、2番目のインターフェースはeth1などになります。これは here に記載されています。

これを配置したら、構成ファイルからHWADDR行を削除するだけで、すべてが期待どおりに機能します。

5
larsks