VyOS の VM をテンプレートからクローンすると、仮想 NIC の MAC アドレスだけが変わり、設定内の hw-id が元 VM の値のまま残ることがあります。その結果、eth0 として使いたい NIC が別名になったり、管理 IP が期待したインターフェイスへ付かなかったりします。
この記事では VyOS 1.5 を前提に、テンプレート作成前の準備、クローン後の NIC 対応確認、ハイパーバイザー側での MAC 固定、hw-id の更新・削除、管理接続を失わないための commit-confirm、復旧手順を確認します。
書籍
IP アドレス、インターフェイス、経路、ネットワーク運用の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
この記事の結論
- 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 を eth0 と eth1 へ対応付ける例です。
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 5NIC 対応、管理 IP、疎通を確認した後に confirm と save を実行します。インターフェイスが多い場合は、設定に存在するすべての 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 5DHCP を使う場合は、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 識別子、監視、バックアップまでクローン固有値になっていることを確認します。

