CentOS7で再起動した後、BondのMacアドレスが変わるのはなぜですか?

CentOS7で再起動した後、BondのMacアドレスが変わるのはなぜですか?

LACPモード(mode = 4 <=> 802.3ad)では、2つのインターフェイスが一緒にバインドされていますbond0

bond0再起動する前のMacアドレス:

$ cat /sys/class/net/bond0/address
xx:xx:xx:xx:xx:bf

bond0再起動後のMacアドレス:

$ cat /sys/class/net/bond0/address
xx:xx:xx:xx:xx:bd

以下は、ネットワーク構成に関するいくつかの情報です。

$ ip -o l | grep state.UP
2: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000\    link/ether xx:xx:xx:xx:xx:bd brd ff:ff:ff:ff:ff:ff
3: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000\    link/ether xx:xx:xx:xx:xx:bd brd ff:ff:ff:ff:ff:ff
7: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP mode DEFAULT group default qlen 1000\    link/ether xx:xx:xx:xx:xx:bd brd ff:ff:ff:ff:ff:ff
$ grep BONDING_OPTS= /etc/sysconfig/network-scripts/ifcfg-bond0
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"
$ egrep "(MASTER|SLAVE)=" /etc/sysconfig/network-scripts/ifcfg-em?
/etc/sysconfig/network-scripts/ifcfg-em1:MASTER=bond0
/etc/sysconfig/network-scripts/ifcfg-em1:SLAVE=yes
/etc/sysconfig/network-scripts/ifcfg-em2:MASTER=bond0
/etc/sysconfig/network-scripts/ifcfg-em2:SLAVE=yes
$ egrep -v "^$|^#" /etc/NetworkManager/NetworkManager.conf
[main]
[logging]

Macアドレスがbond0変更されたのはなぜですか?

答え1

最後のオクテットがほんの数しかないことを考えると、NICem1とNICの両方がem2同じカードにあり、ボンドが別のNICからMACをインポートした可能性が高くなります。

ボンドは、ボンドに追加された最初のNICからMACアドレスを取得します。

しかし、NIC 列挙順序は定義されていません。

起動すると、em1MACエンドを持つNICがbd最初にボンドに参加できるため、ボンディングはMACエンドを選択しますbd

再起動すると、em2MACエンドを持つNICがbf最初にボンドに参加できるため、ボンドはMACエンドを選択しますbf

これがハードウェア列挙がどのように機能するかです。

最近、NetworkManagerには子デバイスを特定の順序で親デバイスに接続してこの正確な問題を解決する機能があるので、RHEL9に移行してください(無料)またはRocky / Alma 9(必要に応じて)。


もう1つの可能なオプションは、systemdが使用できると予想される予約名でも、NICがこれらの名前を使用するように強制することですem1em2このことをしているならしないでください。これはうまくいきません。

systemdに必要に応じてデバイス名を指定するか、カーネルとsystemdが使用したくない手動名を使用してください。または同様のものを使用できますnetX

関連情報