手当たり次第に書くんだ

飽きっぽいのは本能

VyOS VM クローン時の hw-id 問題 – NIC の MAC 変更へ安全に対応する

VyOS の VM をテンプレートからクローンすると、仮想 NIC の MAC アドレスだけが変わり、設定内の hw-id が元 VM の値のまま残ることがあります。その結果、eth0 として使いたい NIC が別名になったり、管理 IP が期待したインターフェイスへ付かなかったりします。

この記事では VyOS 1.5 を前提に、テンプレート作成前の準備、クローン後の NIC 対応確認、ハイパーバイザー側での MAC 固定、hw-id の更新・削除、管理接続を失わないための commit-confirm、復旧手順を確認します。

この記事の結論

  • VM クローン前後で仮想 NIC の MAC アドレスが変わるか確認する
  • 設定内の hw-id と実際の NIC をインターフェイスごとに対応付ける
  • MAC を固定して設定へ合わせる方法と、設定を新しい MAC へ合わせる方法を混在させない
  • 管理インターフェイスの変更はコンソールを確保し、commit-confirm で行う
  • ホスト名、管理 IP、DHCP 識別子、監視対象もクローン固有値として確認する
  • 通常作業では config.boot を直接編集せず、設定コマンドを優先する

hw-id がインターフェイス名を安定させる

VyOS は Ethernet インターフェイスの hw-id に MAC アドレスを保持し、その NIC を eth0 などの設定名へ対応付けます。VM の MAC が変わると、保存済みの対応関係と実機の NIC が一致しなくなります。

状態結果対応
MAC をクローン元と同じにする既存の hw-id と一致するMAC 重複が起きない範囲で固定する
MAC が新しくなる既存の hw-id と不一致になる新 MAC へ hw-id を更新する
hw-id を削除するNIC 対応が再生成されるテンプレート化前またはコンソール作業で行う
NIC 順序も変わるWAN と LAN が入れ替わる可能性があるMAC、仮想スロット、接続先を照合する

クローン前に確認する

テンプレート化する前に、現在のインターフェイス名、MAC アドレス、hw-id、管理 IP、ホスト名を記録します。管理接続が切れた場合に備え、ハイパーバイザーのコンソールからログインできることも確認します。

show interfaces detail
show interfaces ethernet
show configuration commands | match 'hw-id'
show configuration commands | match 'host-name'
show configuration commands | match 'interfaces ethernet'

方法 1: ハイパーバイザー側で MAC を固定する

クローン後も既存設定をそのまま使いたい場合は、各仮想 NIC の MAC を設定内の hw-id へ合わせます。この方法は NIC とインターフェイス名の対応を維持しやすい反面、同じ L2 ネットワーク上で MAC が重複しないよう、クローンごとに固有値を管理する必要があります。

テンプレートの MAC を全クローンで使い回すのではなく、各 VM へ割り当てた MAC と VyOS 設定を 1 対 1 で対応させます。

方法 2: hw-id を新しい MAC へ更新する

ハイパーバイザーが新しい MAC を割り当てた場合は、コンソールで実際の NIC を確認してから設定を更新します。次は、確認済みの新しい MAC を eth0eth1 へ対応付ける例です。

configure
set interfaces ethernet eth0 hw-id '00:53:00:10:00:01'
set interfaces ethernet eth1 hw-id '00:53:00:10:00:02'
commit-confirm 5

管理接続と WAN / LAN の対応を確認できたら、変更を確定して保存します。確認できなければ時間切れで元の設定へ戻るため、先にコンソール接続を確保します。

confirm
save

方法 3: テンプレートから hw-id を外す

クローン先ごとに新しい MAC を使い、初回起動時に対応を作り直す方針なら、テンプレート化前に hw-id を削除します。管理インターフェイスを含む変更なので、停止前にコンソール経路を確認します。

configure
delete interfaces ethernet eth0 hw-id
delete interfaces ethernet eth1 hw-id
commit-confirm 5

NIC 対応、管理 IP、疎通を確認した後に confirmsave を実行します。インターフェイスが多い場合は、設定に存在するすべての Ethernet インターフェイスを対象にします。

クローン固有値を変更する

NIC 対応が直っても、クローン元と同じ管理 IP やホスト名のまま起動すると競合します。ネットワークへ接続する前、または隔離された管理セグメントで固有値へ変更します。

configure
set system host-name 'vyos-edge-02'
delete interfaces ethernet eth0 address
set interfaces ethernet eth0 address '192.0.2.12/24'
commit-confirm 5

DHCP を使う場合は、MAC 以外に client-id、host-name、DHCPv6 DUID などを固定していないか確認します。監視、SSH known_hosts、バックアップ名、DNS 登録もクローン元の識別子を引き継いでいないか確認します。

クローン後に確認する

show interfaces detail
show configuration commands | match 'hw-id'
show configuration commands | match 'host-name'
show ip route
show arp
ping 192.0.2.1 count 4
  • WAN と LAN が意図した仮想 NIC へ対応している
  • 管理 IP とホスト名がクローン固有値になっている
  • デフォルトルートと DNS が期待どおりである
  • Firewall や NAT が正しいインターフェイス名を参照している
  • 監視とバックアップで別ノードとして識別される

接続できない場合の切り分け

症状確認する場所判断
eth0 が見つからない実 MAC と hw-id別名の Ethernet インターフェイスを確認する
WAN と LAN が逆になる仮想 NIC 順序と接続先MAC だけでなく仮想スロットも確認する
管理 IP へ接続できないIP、route、Firewall、NIC 対応コンソールから順に確認する
同一ネットワークが不安定MAC と IP の重複クローン元と同時起動していないか確認する
commit 後に切断したcommit-confirm の残り時間自動復旧を待ちコンソールで確認する
再起動後に戻るsave 実行running config だけ変更していないか確認する

まとめ

VyOS VM のクローンでは、設定内の hw-id、ハイパーバイザーが割り当てた MAC、仮想 NIC の順序、接続先ネットワークを対応付ける必要があります。MAC を設定へ合わせるのか、設定を新しい MAC へ合わせるのかを決めてから変更します。

管理インターフェイスの変更は、コンソールを確保し、commit-confirm で復旧余地を残して行います。NIC 対応の後は、管理 IP、ホスト名、DHCP 識別子、監視、バックアップまでクローン固有値になっていることを確認します。

関連する記事
VyOS VM クローン時の hw-id 問題 – NIC の MAC 変更へ安全に対応する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る