Centos 6.5でMACの代わりにインターフェイス名に基づいてIPを設定する方法

Centos 6.5でMACの代わりにインターフェイス名に基づいてIPを設定する方法

同じボックスで使用されるネットワークインターフェイスの設定を自動化しようとしています。このボックスには3つの異なるNICがあります。 3つのNICのそれぞれには、区別するために使用できるさまざまなMACプレフィックスがあり、適切なMACプレフィックス名と一致するワイルドカードを使用して予測可能なMACアドレスにマッピングするudevルールを設定しました。

しかし、Centos 6.5では、インターフェイスを名前で目的のIP設定にマッピングするのに問題があります。一般的な方法(HWADDR)は、MACアドレス全体を使用し、ボックスごとにアドレスが異なるため使用できないため、デバイス名を一致させようとします。問題はNetworkManagerデーモンにあるようです。

私がしたことはifcfg-に設定されました。装備/etc/sysconf/network-scripts ディレクトリー内のファイル。たとえば、ifcfg-i1:

DEVICE=i1
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.102.30.158
PREFIX=24
GATEWAY=10.102.30.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
ONBOOT=yes
UUID=9ff7691b-e65b-4f9b-b6f2-e7549662403b

すべてが正常です。もしNetworkManagerデーモンが起動する前に、すべてのインターフェイスが表示されます。ただし、3つのインターフェイスが「準備」される前にサービスが開始されると、サービスはifcfgファイルにあるものとは異なるIPでインターフェイスを設定します。 IPエラーが発生した場合、/var/log/messagesの関連行は次のようになります。

Jul 31 18:19:14 centos6 kernel: ADDRCONF(NETDEV_UP): i1: link is not ready
Jul 31 18:19:14 centos6 kernel: ADDRCONF(NETDEV_UP): i2: link is not ready
Jul 31 18:19:14 centos6 kernel: e1000e: i1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Jul 31 18:19:14 centos6 kernel: ADDRCONF(NETDEV_CHANGE): i1: link becomes ready
Jul 31 18:19:14 centos6 kernel: ADDRCONF(NETDEV_UP): i3: link is not ready
Jul 31 18:19:14 centos6 kernel: e1000e: i2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Jul 31 18:19:14 centos6 kernel: ADDRCONF(NETDEV_CHANGE): i2: link becomes ready

これでNetworkManagerサービスが開始されましたが、i3はまだ準備されていません。

Jul 31 18:19:15 centos6 NetworkManager[2350]: <info> NetworkManager (version 0.8.1-66.el6) is starting...
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-lo ...
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-i3 ...
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh:     read connection 'System i3'
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-i1 ...
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh:     read connection 'System i1'
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-i2 ...
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh:     read connection 'System i2'
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-em1 ...
Jul 31 18:19:15 centos6 NetworkManager[2350]:    ifcfg-rh:     read connection 'System em1'

最後にi3が実際に準備されました。

Jul 31 18:19:16 centos6 kernel: e1000e: i3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Jul 31 18:19:16 centos6 kernel: ADDRCONF(NETDEV_CHANGE): i3: link becomes ready
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> (i1): device state change: 7 -> 8 (reason 0)
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> Policy set 'System i1' (i1) as default for IPv4 routing and DNS.
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> Activation (i1) successful, device activated.
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> Activation (i1) Stage 5 of 5 (IP Configure Commit) complete.
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> (i3): carrier now ON (device state 2)
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> (i3): device state change: 2 -> 3 (reason 40)
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> Auto-activating connection 'System i1'.
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> Activation (i3) starting connection 'System i1'
Jul 31 18:19:17 centos6 NetworkManager[2350]: <info> (i3): device state change: 3 -> 4 (reason 0)

しかし、現在NetworkManagerはi1をデフォルトポリシーとして決定し、i3にもi1 IP(10.102.30.158)を割り当てました。

ifcfg-xxxファイルにNM_CONTROLLED = "no"を追加しようとしましたが、NetworkManagerログに次のものが表示されます。

warning: NM_CONTROLLED was false but HWADDR or SUBCHANNELS was missing; device will be managed

インターフェイスには影響はありません。正確なMACアドレスが使用できないため、HWADDRは使用できません。

まず、これはバグですか? NetworkManager が起動する前にインターフェイスが起動した場合、すべてが正常なため、結果は競合状態によって異なります。

これがバグでない場合、どうすればこれを達成できますか? NetworkManagerを無効にすることはオプションではないかもしれません。

答え1

私はこれを投稿しました質問Centos 6ネットワーキングフォーラムにアクセスすると、HWADDRを使用することが唯一のサポート方法であるという応答があります(少なくともNetworkManagerの場合)。

彼らは私にifcfg-を生成するように提案しました。装備ネットワークが起動する前に、ファイルには正しいMACアドレスがあります。初期化スクリプトを使用するのは簡単です。

関連情報