9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VMwareでUbuntuのクローンVMに同じIPアドレスが割り当てられる問題について

Last updated at Posted at 2018-11-20

概要

VMware Workstationで、Ubuntu 18.04/20.04のサーバーイメージを複数クローンし、サーバークラスターを作成したところ、全てのVMに同じIPアドレスが割り当てられる現象が発生しました。

期待する動作は、VMwareのbuilt-in DHCPサーバーがMACアドレスに応じてユニークなIPアドレスを割り当ててくれることですが、どうもUbuntuの場合はそのような動きにはなってくれません。

issuesの確認と、そこで紹介されているワークアラウンド

同じような現象はレポートされていて、/etc/machine-id を変更することで、ユニークなIPが割り当てられるようになります。

そもそもなぜUbuntuでこんな問題が発生したのか、少し探ってみました。

そして、最終的にVMware Workstation等で利用する場合に、もう少し簡単な方法を利用しているので、その説明と設定方法をまとめておきます。

原因

Wiresharkでフィルターにudp.port == 67を設定して、DHCP Discoverパケットを眺めてみると、異なるhost name(12)エントリを持つものの、Client Identifier(61)エントリがまったく同じものが確認できました。

古いUbuntu 16.04の挙動を調べてみると、Client Identifier(61)エントリは付与されていませんでした。

18.04からnetplanがIP割り当てを管理している影響なのか、ここら辺をキーワードに検索すると次のバグリポートが見つかりました。

このリポートはUbuntuクライアントがWindows ServerのDHCPサーバーからIPを割り当てる際の問題について言及していて、状況は異なりますが参考にはなります。

対応策

VMwareは異なるVMのNICに割り当てるMACアドレスはユニークにしてくれますが、ファイルシステム上のmachine-idファイルはケアしてくれません。

またクローンVM毎に systemd-machine-id-setup を起動するのも、なんか違うかなという気がします。

そこで、今回はMACアドレス毎にClient Identifierを作成するようにしました。

クローンを作成する時に使うオリジナルのVM上の /etc/netplan/ 配下の設定ファイルを編集し、デバイス毎に次のような一行を加えました。

--- /tmp/01-netcfg.yaml 2018-11-19 21:30:57.464200654 +0900
+++ /etc/netplan/01-netcfg.yaml 2018-11-19 21:24:45.947087390 +0900
@@ -6,7 +6,10 @@
   ethernets:
     ens33:
       dhcp4: yes
+      dhcp-identifier: mac
     ens34:
       dhcp4: yes
+      dhcp-identifier: mac
     ens35:
       dhcp4: yes
+      dhcp-identifier: mac

最終的にこのVMを利用することで、無事に各クローンVMにユニークなIPが割り当てられるようになりました。

VMイメージを元(Seed)にして、複数のクローンVMを作成するような場合には、あらかじめ元VMの/etc/netplan/配下のファイルを編集しておくようにしましょう。

以上

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?