VirtualBox 6.0のGUIを介してdhcp enableを使用して新しいNATネットワークを作成し、2つのゲストVMを接続しましたが、両方のVMが同時に実行されている場合でも、同じIPを割り当て続けます。
VMを最初に起動した後にVirtualBoxが生成するNatNetwork-Dhcpd.leasesファイルを確認したところ、両方のVMのリースは「確認済み」と表示されますが、MACアドレスが異なっていても同じIPを取得していることがわかりました。
<?xml version="1.0"?> <Leases version="1.0"> <Lease mac="08:00:27:b9:41:77" id="ffe2343f3e00020000ab117f957fa5c66cfffd" network="0.0.0.0" state="acked"> <Address value="10.0.2.4"/> <Time issued="1565568632" expiration="1200"/> </Lease> <Lease mac="08:00:27:33:ac:c6" network="0.0.0.0" state="acked"> <Address value="10.0.2.4"/> <Time issued="1565568546" expiration="1200"/> </Lease> </Leases>
また、ゲストAをオフにしてから再度オンにすると、NatNetwork-Dhcpd.leasesによってゲストBのリースセクションのid属性が削除され、のリースセクションに追加されることに気付きました。次のようにファイルを変更するのとまったく同じ値を持つゲストA:
<?xml version="1.0"?> <Leases version="1.0"> <Lease mac="08:00:27:b9:41:77" network="0.0.0.0" state="acked"> <Address value="10.0.2.4"/> <Time issued="1565568632" expiration="1200"/> </Lease> <Lease mac="08:00:27:33:ac:c6" id="ffe2343f3e00020000ab117f957fa5c66cfffd" network="0.0.0.0" state="acked"> <Address value="10.0.2.4"/> <Time issued="1565576544" expiration="1200"/> </Lease> </Leases>
私のVirtualBoxNATネットワークは次のとおりです。
<NetserviceRegistry> <DHCPServers> <DHCPServer networkName="HostInterfaceNetworking-vboxnet0" IPAddress="192.168.56.100" networkMask="255.255.255.0" lowerIP="192.168.56.101" upperIP="192.168.56.254" enabled="1"/> <DHCPServer networkName="NatNetwork" IPAddress="10.0.2.3" networkMask="255.255.255.0" lowerIP="10.0.2.4" upperIP="10.0.2.254" enabled="1"> <Options> <Option name="3" value="10.0.2.1"/> <Option name="6" value="10.0.2.1"/> </Options> </DHCPServer> </DHCPServers> <NATNetworks> <NATNetwork networkName="NatNetwork" network="10.0.2.0/24" ipv6="0" ipv6prefix="fd17:625c:f037:2::/64" advertiseDefaultIPv6Route="0" needDhcp="1" enabled="1"> <Mappings> <Loopback4 address="127.0.0.1" offset="2"/> </Mappings> </NATNetwork> </NATNetworks> </NetserviceRegistry>
どんな助けでも本当にありがたいです。
さらに調査と試行錯誤を繰り返した結果、
この問題の原因は、Ubuntu18.04の組み込みネットワーク構成がDHCP要求のデフォルトIDとしてNIC Macアドレスを使用しなくなったことです。 (anneb、2018、para 。1)。
そしてまたそれ
Dhclientを含むMosDHCPクライアントは、タイプ「01」(MACベース)のクライアントIDフィールドを提供します。もう1つの一般的なタイプは「00」(ドメイン名)です。ただし、デフォルトでは、systemd-networkdは/ etc/machine-idの内容から生成された「不透明な」クライアントIDを提供します。
DHCPプロトコルによれば、リースは最初にクライアントIDによって選択され(クライアントが「クライアントID」オプションを提供する場合、MACベースである場合とそうでない場合があります)、次にクライアントが選択しなかった場合にのみMACアドレスによって選択されます。 IDを送信します。 (grawity、2018、para。4-5)
そのため、ゲストBでhvd (2017、n.p。)。 の方法で新しい/ etc/machine-idファイルを生成しました。
/ var/lib/dbus/machine-idが/ etc/machine-idへのシンボリックリンクであったかどうかの確認
$ Sudo ls -l /var/lib/dbus/machine-id lrwxrwxrwx 1 root root 15 Aug 1 17:18 /var/lib/dbus/machine-id -> /etc/machine-id
/ etc/machine-idを削除しています
Sudo rm -f /etc/machine-id
/ etc/machine-idを再生成しています
Sudo dbus-uuidgen --ensure=/etc/machine-id
VMを再起動します
Sudo init 6
ログインして、新しいIPアドレスがゲストBに割り当てられていることを確認します
$ ip addr show enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:b9:41:77 brd ff:ff:ff:ff:ff:ff inet 10.0.2.5/24 brd 10.0.2.255 scope global dynamic enp0s3 valid_lft 1070sec preferred_lft 1070sec inet6 fe80::a00:27ff:feb9:4177/64 scope link valid_lft forever preferred_lft forever
base-machine(Ubuntu 18.04)がある場合にも同様の問題が発生しました。基本的には、ユーザーアカウントを使用したクリーンインストールです。私はこのマシンを実行したことはありませんが、そこから新しいマシンのクローンを作成します。しかし、私が新しいMACを与えたとしても、すべてのクローンは同じIPを取得しました。しかし、あなたの投稿を読んで少しいじった後、私はbase-machineで次のように解決しました:
/etc/machine-id
と/var/lib/dbus/machine-id
を削除します。/etc/machine-id
を作成します。/etc/machine-id
に適切な権限を付与します(これは厳密には必要ではないようですが、当初はそうだったのです)。またはコードで:
Sudo rm /etc/machine-id /var/lib/dbus/machine-id
Sudo touch /etc/machine-id
Sudo chmod 444 /etc/machine-id
Sudo shutdown -h now
これで、base-machineを安全に複製でき、新しいマシンごとに、最初の起動時に独自のmachine-id
が生成されます。
新しい /etc/machine-id
は、読み取り専用で初期化されていない場合、起動時に systemd-machine-id-setup
によって自動的に生成されます。