CentOS 7 啟動時強制 HWADDR 在 ifcfg-eth0 網路腳本中進行自我修正

CentOS 7 啟動時強制 HWADDR 在 ifcfg-eth0 網路腳本中進行自我修正

問題:

我想找到一種方法,讓 ifcfg-eth0 腳本中的 HWADDR 行在啟動時驗證/更新自身,以防在虛擬機器複製或副本發生時發生變更。有辦法這樣做嗎?在 CentOS 6 中,從 ifcfg-eth0 腳本中刪除 HWADDR 行使其更加動態,但我還沒有找到一種方法來阻止 ifcfg-eth0 在 CentOS 7 中沒有 HWADDR 行的情況下改回 ifcfg-eno1677776。 !


背景:

我正在透過 VMware Workstation 運行 CentOS 7.2.1511 虛擬機器。預設 CentOS 7 擺脫了乙太網路0其網路腳本的命名約定,現在已配置為使用名為ifcfg-eno1677776或類似的東西。我有一個軟體可以重重地依賴於乙太網路0命名方案。所以我重新配置了我的ifcfg-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 介面都會保留。然而,該虛擬機將在團隊成員之間分發並最終交付給客戶。這就是問題出現的地方。 VMware 的優點在於您可以複製虛擬機器的快照以進行分發,但這會變更虛擬機器的 MAC 位址。


編輯:

您必須grub2-mkconfig -o /boot/grub2/grub.cfg在進行@larsks 下面建議的更改後運行才能使其發揮作用。為我工作!

答案1

最簡單的解決方案可能是透過在核心命令列上設定以下選項來停用「可預測裝置命名」行為:

biosdevname=0 net.ifnames=0

完成此操作後,系統上的第一個乙太網路介面將被命名為eth0,第二個將被命名為eth1,等等。這裡

完成此操作後,只需HWADDR從設定檔中刪除該行,一切就應該按您的預期工作。

相關內容