複数 NIC を搭載した Linux ECS インスタンスで NIC の追加または削除後に、NIC と MAC アドレスの不一致を修正します。
症状
複数 NIC を搭載した Linux ECS インスタンスで NIC を追加または削除すると、NIC デバイス名とメディアアクセス制御 (MAC) アドレスとの間に不一致が生じることがあります。この不一致は NIC ドリフトと呼ばれます。
以下の例では、インスタンスに eth1(MAC 00:16:3e:10:bd:1b)および eth2(MAC 00:16:3e:0c:92:df)が存在します。
ip addr コマンドを実行すると、eth1 に eth2 の MAC アドレスが表示されており、NIC ドリフトが発生していることを示しています。
原因
NIC 情報は /etc/udev/rules.d/70-persistent-net.rules に保存されています。このファイルが存在しないか、誤ったエントリが含まれている場合に NIC ドリフトが発生します。
ソリューション
重要
-
Alibaba Cloud インスタンスの構成やデータを変更するなど高リスク操作を実施する前に、ご利用のインスタンスのディザスタリカバリおよびフォールトトレランス機能を確認し、データセキュリティを確保してください。事前にスナップショットを作成することを推奨します。スナップショットの詳細については、「概要」をご参照ください。
-
特定のユーザーにユーザー名やパスワードなどの機密情報を許可した場合、または Alibaba Cloud 管理コンソールで機密情報を送信した場合は、速やかに当該情報を変更してください。
/etc/udev/rules.d/70-persistent-net.rules を編集して、各 NIC デバイス名を正しい MAC アドレスにバインドします。
-
Linux ECS インスタンスに接続します。
「接続方法の概要」をご参照ください。
-
/etc/udev/rules.d ディレクトリに移動します:
cd /etc/udev/rules.d -
/etc/udev/rules.d/70-persistent-net.rules ファイルを開きます:
vi 70-persistent-net.rules -
各 NIC デバイス名をその MAC アドレスにバインドします:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="<NIC の MAC アドレス>", KERNEL=="eth*", NAME="<NIC のデバイス名>"たとえば、eth1 を MAC アドレス 00:16:3e:10:bd:1b にバインドするには、次のとおり記述します:SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:3e:10:bd:1b", KERNEL=="eth*", NAME="eth1" -
/etc/udev/rules.d/70-persistent-net.rules 内の NIC 構成を確認します:
cat 70-persistent-net.rules期待される出力:
この出力により、eth1 が MAC アドレス 00:16:3e:10:bd:1b にマッピングされていることが確認でき、NIC ドリフトは発生していません。