CentOS 6 / RedHatで新しいネットワークカードを自動的に検出するにはどうすればよいですか?


46

仮想環境で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が最初のインストールで実行される手順があります-誰かが私がそれを手動でトリガーできるようにそれを理解するのを手伝ってもらえますか?

回答:


52

CentOS 6では、すべてが現在udevによって処理されています。ファイルに移動し/etc/udev/rules.d70-persistent-net.rulesファイルを削除し、再起動します。手前に開くと、元のNIC MACがeth0として、新しいNIC MACがとして表示されeth1ます。

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

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

VMware ESXi 4.1上のCentOS 6クローンを常に使用する必要があります。kudzuは以前のバージョンでは過去にそれを処理するだけで苦労していました。


2
素晴らしいトレイシーに聞こえたが、あなたが説明したようにうまくいかなかった。古いifcfg-eth0ファイルは、正しい新しいアドレスではなく、元のMACアドレスなどとともに、まだそこにありました。
ジョシュア

2
申し訳ありませんが、私は忘れていました。申し訳ありませんが、ifcfg-eth0のMACアドレスも手動で更新する必要があります。それが動作するようになります。...そこに簡単な方法であることが、私はそれを見つけるためには至っていないかもしれません
トレイシー・カールトン

これは良いスタートでした。ブートアップ時に、プロセスを自動化するスクリプトを記述することも可能だと思われます-説明した手動のビットもです。問題は、マシンが複製/移動された後にのみスクリプトをアクティブ化することです。これにまだ完全な答え...
ジョシュア

5
ファイルに移動し/etc/udev/rules.d70-persistent-net.rulesファイルを削除し、再起動しないでください。/etc/sysconfig/network-scripts/ifcfg-eth0新しいNICカードのMACに移動して、手動で更新します。再起動すると、ネットワークが有効になります。

2
user151091 @の代わりに、リブートstart_udev後、service network restart私のために働きました。
doshea

5

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

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

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

次に、この画面が表示されます

ここに画像の説明を入力してください

デバイス構成を選択し、Enterを押します

次に、この画面が表示されます

ここに画像の説明を入力してください

ここでeth0は /etc/sysconfig/network-scripts/ifcfg-eth0

eth0その中で行われた編集がifcfg-eth0ファイルに影響を与えるものは何でも


これは一部の人々/ケースに対する有用な回答かもしれませんが、この目的は、ネットワークアダプターの構成をスクリプト化または自動化することでした。これは、TUI / GUIでは実行できません。オリジナルの投稿を読んでください:「CentOSにインストール時と同じように、ネットワークアダプタ/ ethファイルを自動的に再スキャンおよび再作成させる方法を見つけようとしています。」
ジョシュア

@ジョシュアごめんなさい... + 1
最大

@max、system-config-networkこのインターフェイスも開くようです。
Acumenus

2
@QiFanこのコマンドを試してくださいyum install system-config-network-tui
最大

1
@QiFanどのパッケージにそのコマンドが含まれているかを調べるには、これを試してくださいyum whatprovides */system-config-network-tui
最大

4

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

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を繰り返します。


本当に再起動する必要がありますか?なぜネットワークサービスを再起動しないのですか?
vgoff

これは一部の人々/ケースに対する有用な答えかもしれませんが、これの目的は、ネットワークアダプターの構成をスクリプト化または自動化することでした。オリジナルの投稿から:「CentOSで、インストール時と同じようにネットワークアダプター/ ethファイルを自動的に再スキャンおよび再作成する方法を見つけようとしています。」
ジョシュア

@vgoffはい、明らかにネットワークサービスを再起動すると正常に動作します:)おそらく彼は、ネットワークデバイス自体、例えばを再起動するに言及だ等「にeth0 ifupを」
ヨシュア

そうかもしれませんが、彼は「システム」ではなく「デバイス」と言います。
vgoff

私は間違っているかもしれませんが、永続的なルールファイルを削除した後、「サービスネットワークの再起動」によってアダプターの名前が変更されることはなく、アダプターの名前を変更するには再起動または「start_udev」が必要だと思います。
doshea

4

クローン後のファイルの変更は、私のユースケースでは機能しないため、次のように問題を解決しました。

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

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

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

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


これは私のために働いた-前述のように、MACアドレスはどちらのファイルにも書き戻されないので、それを変更し続けることができ、インターフェースは同じ構成で「eth0」のままです。これは、ネットワークアダプターが1つしかない場合にのみ機能するようですが、そうでない場合は、「Starting udev:」で長いブート遅延が発生し、2番目のデバイスは「rename3」と呼ばれました。 「。
doshea

1つのアダプターの実行可能なソリューション。また、ネット設定で接続タイプをブリッジとして設定することを忘れないでください。
チェリー14

3

私は非常に多くのCentOS 6仮想マシンを作成および削除し、VirtualBoxでのクローン作成時にeth0を修正するBashfuを作成しました。

   [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

1

あなたの唯一の問題が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を再実行して、新しいハードウェアを検出するかどうかを確認します。再起動が必要になる場合があります。


たとえば、eth0のMACアドレスを手動で変更しようとしましたが、まだ機能しませんでした。「service network force-reload」、「ifup eth0」などの後続の試行は、常に「Device eth0が存在しないようです...」で終了しますか?
ジョシュア

どのタイプの仮想化を使用しており、システムをどのようにクローンしましたか?
オールドウルフ

VirtualBoxですが、仮想化は重要ではないと思います。これは、物理的なボックスをシャットダウンし、既存のネットワークアダプターを取り外し、別のネットワークアダプターを追加するようなものです。
ジョシュア

@Joshあなたが編集しているifcfg- *ファイルはどこにありますか?ええ、私は知っています-それはあなたがどのツールを使用してアダプターをセットアップするのかと関係があるようです)。最初は違いを生むものでなければなりませんが、他の人にも対処する必要があるかもしれません。
リンカー3000

1
私が質問し、仮想化の種類が重要であることの理由は、クローン作成プロセスがどのように見えるかを決定することです。同じホスト上のVMwareクローンは、特に指定しない限り、仮想ネットワークハードウェアを変更しません。あなたの場合、問題はMACアドレスやクローン作成プロセスではなく、仮想ハードウェアを変更していることです。
オールドウルフ

1

私はVmwareではなくKVMとvirshを使用しています-これが私がやったことです。

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のみ)。

お役に立てば幸いです。


0

私は複数のNICを扱っていましたが、上記では何も機能しませんでした(VMware Fusion 7 / VMware 6以下)ので、スクリプトを書きました。tarballはここにあります

これREADMEが付属しています:

  • このtarballおよび関連するスクリプトは、最近複製されたVMware CentOS 6以下のマシン(systemdなし)のMACアドレスを変更します。
  • 一度だけクローンを作成するマシンで行う必要があるすべて:

    1. インストール lshw
    2. あなたのすべてでMACアドレスを交換する /etc/sysconfig/network-scripts/ifcfg-eth?MACDADDYとNUM numは、ネットワークインタフェースの数です。ファイルの命名パターンに従う必要があります。
    3. 実行:

      chckconfig change_mac_address on
      

      これにより、ファイルで指定された適切な実行レベルでsymリンクが追加されます。

    4. 通常どおりマシンを複製し、起動します。各ifcfg-eth?ファイルのMACアドレスを変更する必要があり、
      • udevファイルを消去し、
      • e1000デバイスを再スキャンし、
      • ネットワークを再起動します

問題点:

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

    /etc/init.d/network restart
    

    これを修正するにはsleep 20、の先頭に/etc/init.d/network

  • これは私にとっては問題ではありませんでしたが、スクリプトはlshwNICを次の順序で返すことに依存しています。ifcfg-eth?
  • これは、NICデバイスがe1000であることを前提としています。VMware標準?
  • ifcfg-eth?ファイルのナンバリングを切り替えて、lshw機能しないことがあり、多くのNICを備えた多くのマシンを実行しているというまれな場合に返すものと一致するようにすることは価値があるかもしれません。
  • 1つのNICで機能するはずです。
  • 最初の起動後、に/usr/bin/change_mac_address.pl移動します/usr/bin/change_mac_address.pl.old
  • これにより、MACDADDYがない場合は何もしませんが、リブートごとに実行されなくなりますか?あなたのifcfg-eth?
  • また、おそらく実行する必要があります

    chkconfig change_mac_address off
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.