LinuxでMACアドレスが違うのにリンクローカルアドレスが被った
サーバ検証用にProxmox基盤を運用しており、
一度構築したサーバでスナップショット取得しつつクローンで使いまわす事が多い筆者。
クローン時にMACアドレスやIPアドレスなど固有パラメータが被らない様に気を付けているが、
自動生成するIPv6リンクローカルアドレスが被っているケースが先日起きた。
そもそも、リンクローカルアドレスが被る事は無いだろうと高を括っていたのだが、
messagesログに”advertised our address fe80::X on eth0!”と出力されていて偶然気づいた。
MACアドレスは違うし、EUI-64で被る事も無いと考えていた中での重複だったので少し調査してみた。
今回の事象が発生した環境はRockyLinux 8.10で稼働しており、
IPアドレスなどネットワーク周りはNetwork Managerで一元管理していた。
何か設定が重複していると考えてnmcliとdiffを駆使して差分を確認した所、
NICのUUIDが重複している事を発見。
リンクローカルアドレスが被った環境でUUID変更とnmcli down; nmcli upしてみたら、
NICに付与されたリンクローカルアドレスも更新される事を確認出来た。
………
RockyLinux 8.10のNetwork Managerでは、
“/etc/sysconfig/networks-scripts/ifcfg-eth0″のUUIDパラメータを見ている様な動きをしており、
このパラメータをわざと重複させた際の挙動がどうなるのか気になったのでテストしてみる事に。
だが、RockyLinux 8.10のテスト環境が無かったので、ディストリビューションが違うがRHEL 9.4で実施。
RHEL 9.4で生成するNetwork Managerの設定は、
“/etc/NetworkManager/system-connections/enp6s0.nmconnection”なのでUUIDを変更した所、
MACアドレスは違うがUUIDを同一にしてみても、リンクローカルアドレスも一意なままだった。
左:検証サーバの元環境
右:サーバをクローンした後、MACアドレスとUUID変更をした環境
………
アドレスが被った環境からの予想では、UUIDが同一ならリンクローカルアドレスも同一になり、
MACアドレスの差異は影響しないと考えていたが、普通にリンクローカルアドレスも変わった。
事象の発生した環境とテスト環境が違うので参考情報になってしまうが、
RHEL 9.4ならUUIDに依存せずリンクローカルアドレスが生成されている様に見える。
スクリーンショットを取り忘れたが、UUID変更前後でもリンクローカルアドレスは変化しなかったので、
MACアドレスなどUUID以外のパラメータを見ている可能性も高そうに見える。。
仮想サーバをクローンした際にEUI-64割り当てのIPv6アドレスが重複する可能性があるのは理解していたが、
リンクローカルアドレスが重複するパターンは想定外だった。
本気で調査するならソースコードを読めばいいが大変なのは今回はここまで。
システムを過去の知識ベースで弄ると問題になるケースがある良い教訓となった。