👻
cloneしたubuntuのIPが重複する
はじめに
ubuntu 22.04をESXiでクローンしたところ、クローンして作成したVMのIPアドレスが元のVMと同じになる事象が発生しました。
結論
sed -e 's/\( *\)dhcp4: true/&\n\1dhcp-identifier: mac/' \
< /etc/netplan/00-installer-config.yaml \
> /etc/netplan/01-clientid-macaddress.yaml
netplan apply
調査
DHCPサーバでDHCPクライアントへの配布状況を調べます。
cisco#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
(省略)
192.168.10.189 ffxx.xxxx.xxxx.xxxx. Jul 04 2022 10:32 PM Automatic
xxxx.xxxx.xxxx.xxxx.
xxxx.xx
(省略)
Client-IDのところにMACアドレスが入るかと思っていたのですが、やけに長い文字列が入っています。
DHCPリクエストもパケットキャプチャして見てみます。
# tcpdump -nv -i ens160 udp port 67 or port 68
tcpdump: listening on ens160, link-type EN10MB (Ethernet), snapshot length 262144 bytes
22:32:30.644851 IP (tos 0xc0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 322)
0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:29:ee:2f:27, length 294, xid 0x3f3d3377, secs 1, Flags [none]
Client-Ethernet-Address 00:0c:29:ee:2f:27
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message (53), length 1: Discover
Client-ID (61), length 19: hardware-type 255, xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Parameter-Request (55), length 11:
Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6), Hostname (12)
Domain-Name (15), MTU (26), Static-Route (33), NTP (42)
Unknown (119), Unknown (120), Classless-Static-Route (121)
MSZ (57), length 2: 576
Hostname (12), length 10: "xxxxxxxxxx"
確かにClient-IDに長い文字列が入っていて、クローン元、クローン後のVMが同じIDを使っていました。
設定変更
Ubuntu(Debian)のネットワーク設定は/etc/network/interfacesファイルでやるものだと思っていたのですが、昔の話になってしまったようで、22.04だとsystemdとnetplanで制御されているとのこと。
/etc/netplan/に設定ファイルがあります。
/etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: true
version: 2
このファイルをコピーしてdhcp-identifier: mac
を追加します。
01-clientid-macaddress.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: true
dhcp-identifier: mac
version: 2
ファイル内容を反映します。SSHでDHCPのIPで繋いでいた場合はコマンドを打った瞬間につながらなくなるので、SSH越しではないコンソールで実行するか、新しいIPアドレスをDHCPサーバで調べる必要があります。
netplan apply
パケットキャプチャを見てもClient-IDにMACを使うようになりました。
23:06:44.743388 IP (tos 0xc0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 310)
0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:29:ee:2f:27, length 282, xid 0x5768d155, secs 1, Flags [none]
Client-Ethernet-Address 00:0c:29:ee:2f:27
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message (53), length 1: Discover
Client-ID (61), length 7: ether 00:0c:29:ee:2f:27
Parameter-Request (55), length 11:
Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6), Hostname (12)
Domain-Name (15), MTU (26), Static-Route (33), NTP (42)
Unknown (119), Unknown (120), Classless-Static-Route (121)
MSZ (57), length 2: 576
Hostname (12), length 10: "xxxxxxxxxx"
参考文献
Discussion