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

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

質問:

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


背景:

私はVMware Workstation経由でCentOS 7.2.1511仮想マシンを実行しています。デフォルトでは、CentOS 7はeth0ネットワークスクリプトの命名規則が変更され、ネットワークスクリプトの名前を使用するように設定されました。cfg-eno1677776 さんまたは似たようなもの。私はソフトウェアを持っています重く依存しているeth0命名規則を変更しました。cfg-eno1677776 さん脚本:

  1. /etc/sysconfig/network-scripts/ifcfg-eno1677776名前を変更する/etc/sysconfig/network-scripts/ifcfg-eth0
  2. 変更中ifcfg-eth0(HWADDRは から取得/sys/class/net/eno1677776/address):

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

  3. 追加したネット.ifnames=0最後までGRUB_CMDLINE_LINUXファイル内の行/etc/sysconfig/grub

  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 アドレスが変更されます。


編集:

grub2-mkconfig -o /boot/grub2/grub.cfg動作させるには、@larsks が推奨する以下の変更を行った後に実行する必要があります。私の場合は動作しました!

答え1

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

biosdevname=0 net.ifnames=0

これを設定すると、システムの最初のイーサネットインターフェースはeth0、2番目は というeth1ように名前が付けられます。これは文書化されています。ここ

これを設定すると、HWADDR構成ファイルからその行を削除するだけで、すべてが期待どおりに動作するはずです。

関連情報