web-dev-qa-db-ja.com

CentOS 6 / RedHatで新しいネットワークカードを自動的に検出する方法を教えてください。

私はCentOS 6を仮想環境で使っています。 CentOSの仮想バージョンを複製するとき、古いethアダプタは「削除」され、新しいものとネットMACアドレスに置き換えられます。ただし、ifcfg-ethnファイルはまだ存在しています。インストール時と同じように、CentOSでネットワークアダプタ/ ethファイルを自動的に再スキャンして再作成する方法を見つけようとしています。

さもなければ私はここに記述されているように退屈なプロセスを残します: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

GUIでこれを実行する簡単な方法があることを私は知っています、しかし私達はサーバーを使用しているのでGUIはこの場合適用されません。助けて?

編集:@ OldWolfはKudzuを提案しました、しかしKudzuはCentos 5の時点で削除されましたので私はむしろそれを避けたいと思います。 Linuxが初期インストール時に実行される手順があります - それが何であるか私が手動でそれを引き起こすことができるように誰かが私が理解するのを助けることができますか?

46
Joshua

CentOS 6では、everthingは現在udevによって処理されます。 /etc/udev/rules.dに入り、70-persistent-net.rulesファイルを削除して再起動します。手で開くと、元のNICのMACがeth0として、新しいものがeth1としてリストされているのが最もよくわかるでしょう。

/etc/sysconfig/network-scripts/ifcfg-eth0を編集して新しいNICカードのMACに手動で更新する必要があります。

ファイルを削除すると、クローン作成プロセスから手荷物が残されずに検出プロセスが起動時に再度実行されます。つまり、古いNICのMACアドレスです。

私はいつもVMware ESXi 4.1上の私のCentOS 6クローンでそれをしなければならない。それは、以前のバージョンでは過去にそれを扱っていただけの痛みです。

51
Tracy Carlton

このツールも使用できます(これはGUIツール、そのTUIツール、テキストベースのユーザーインターフェースではありません)。

[root @ localhost〜]#system-config-network-tui

上記のコマンドを入力してEnterを押す

その後、この画面が表示されます

enter image description here

「装置構成」を選択してEnterを押す

その後、この画面が表示されます

enter image description here

ここでeth0は/etc/sysconfig/network-scripts/ifcfg-eth0を表します

eth0の編集内容がifcfg-eth0ファイルに影響を与えるものは何でも

5
max

永続ルールファイルを削除します。

rm /etc/udev/rules.d/70-persistent-net.rules

Ifcfg-eth0を編集します。

nano /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR行を完全に削除します(または新しいNICのMACアドレスと一致するように変更します)。

システムを再起動します。

reboot

NICをもう一度変更した場合は、手順1と3を繰り返してください。

4
Martin Anderson

クローン作成後にファイルを変更しても私のユースケースではうまくいかないので、次のようにして問題を解決しました。

2つのファイルを編集して、それぞれのMacアドレスへの参照を削除する必要があります。

/etc/sysconfig/network-scripts/ifcfg-eth0 - HWADDR =行を削除します。

/etc/udev/rules.d/70-persistent-net.rules - ATTR {address} ==から次のカンマまでを削除します。

これで、VMのクローンを作成してMACアドレスを変更しても、Macアドレスがどちらのファイルにも書き込まれることはないので、ネットワークは機能します。

4
Scot Inscore

私はVirtualBoxでクローンを作成する際にeth0を修正するために私がいくつかのBashfuを書いたとても多くのCentOS 6仮想マシンを作成し、削除します。

   [root@jp-xm-base ~]# cat fixeth0.sh
if grep -q eth1 /etc/udev/rules.d/70-persistent-net.rules; then
   sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules;
   sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules;
   ETHERNET=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules | awk -F"," '{print $4}' | awk -F"\"" '{print $2}'`;
   echo Ethernet Addr: $ETHERNET;
   sed -i 's/HWADDR=".*"/HWADDR="'$ETHERNET'"/' /etc/sysconfig/network-scripts/ifcfg-eth0;
   /sbin/start_udev
   /sbin/service network restart;
fi
3
Electrawn

あなたの唯一の問題がMACアドレスであるなら、あなたは以下のような何かを実行することができます。

TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0

HWADDR項目を更新します。

編集:問題は仮想ハードウェアの実際の変更であるように思われるので、次のことを試すことができます。 (未テストで、 から参照されている

/ etc/sysconfig/hwconfを編集して、以前のNICへの参照をすべて削除し、kudzuを再実行して新しいハードウェアを検出するかどうかを確認します。再起動する必要があるかもしれません。

1
OldWolf

私はVmwareを使っていませんが、virshと一緒にKVMを使っています - これが私がしたことです。

CentOS 6.4で 'ベース'イメージを作成しました。これは私のすべてのクローンのソースです。最初の起動後、私はこのようなスクリプトを作成しました

cat /etc/init.d/manglemac 
#!/bin/bash
#
# manglemac        This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg

mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut   -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)

if [ -z "$match_mac" ];
then
   echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi

でinitに追加しました

chkconfig --add manglemac

HWADDRまたはUUIDの/ etc/sysconfig/network-scripts/ifcfg-eth0へのすべての参照を削除し、さらに/etc/udev/rules.d/70-persistent-net.rulesからudevルールを削除しました。

この時点で私はマシンをシャットダウンしてクローンを作り始めました。すべてうまくいきます。私が作成したスクリプトは非常に単純ですがうまく機能しますが、ネットワークの設定に関していくつかの前提条件があります(eth0のみ)。

助けになれば幸いです。

1
silviud

私は複数のNICを扱っていて、上では何もできなかったので(VMware Fusion 7/VMware 6以下)、スクリプトを書きました。 tarballはここ です

これが付属しているREADMEname__です。

  • このtarballと関連するスクリプトは最近クローンを作成したVMware CentOS 6以下のマシンのMACアドレスを変更します(systemdは無し)。
  • あなたが一度にクローンを作成するマシンでやらなければいけないことは、次のとおりです。

    1. lshwname__をインストール
    2. すべての/etc/sysconfig/network-scripts/ifcfg-eth?のMACアドレスをMACDADDYに置き換えますnum どこで num ネットワークインタフェースの番号です。ファイルの命名パターンに従う必要があります。
    3. 実行します。

      chckconfig change_mac_address on
      

      これはファイルで指定された適切な実行レベルでsymリンクを追加するはずです

    4. 通常通りにマシンのクローンを作成して起動します。 それぞれのifcfg-eth?ファイルのMACアドレスを変更するはずです。
      • udevファイルを消去します。
      • e1000デバイスを再スキャンします。
      • そしてネットワークを再起動します

問題点

  • 理由は定かではありませんが、すべてのNICを認識させるためにもう一度ネットワークを再起動する必要がある場合があります。

    /etc/init.d/network restart
    

    sleep 20の始めに/etc/init.d/networkを置くことによってこれを修正しました

  • これは私にとって問題ではありませんでしたが、スクリプトはifcfg-eth?と同じ順序でNICを返すlshwname__に依存しています。
  • これはNICデバイスがe1000であることを前提としています。 VMwareの標準ですか?
  • ifcfg-eth?ファイルの番号付けを変更して、lshwname__がうまくいかないということや、たくさんのNICを搭載したマシンをたくさん作っているということで一致するようにするとよいでしょう。
  • NICが1つの場合は、うまくいくはずです。
  • 最初の起動後、/usr/bin/change_mac_address.pl/usr/bin/change_mac_address.pl.oldに移動します。
  • これは、MACDADDYがなければ何もしませんが、再起動のたびに実行されないようにしますか?あなたのifcfg-eth?
  • また実行することができます

    chkconfig change_mac_address off
    
0
FFQ