LXCコンテナのeth0に固定IPアドレスを設定する

ホストもコンテナもUbuntu 20.04 LTSの場合、以下の手順で設定できました。

lxc network attach lxdbr0 container-name eth0 eth0
lxc config device set container-name eth0 ipv4.address 10.10.10.2

コンテナ名・IPアドレスなどは適宜変更します。lxdbr0に設定されたネットワーク範囲に応じたIPv4アドレスを指定する必要があります。

固定IPv6アドレスも設定する場合は、以下の設定も必要です。

lxc network set lxdbr0 ipv6.dhcp.stateful true
lxc config device set container-name eth0 ipv6.address fd01:2345:6789:abcd::2

lxdbr0に設定されたネットワーク範囲に応じたIPv6アドレスを指定する必要があります。

これだけでうまくいくこともありますが、すでにdnsmasqからアドレスが割り当て済みだとアドレスが変わらないことがありました。これを解決するためには、以下のコマンドで一度LXDデーモンを止めます(止めずになんとかする方法もあるかもしれません)。動作中のコンテナが停止するので注意が必要です。

sudo systemctl stop snap.lxd.daemon.service

「/var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.leases」にIPアドレスのリース情報が書かれているので、エディタで開いて変更したいホストの行を削除します。

sudoedit /var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.leases

LXDデーモンを再起動します。

sudo systemctl start snap.lxd.daemon.service

アドレスが割り当てられていることを確認します。

$ lxc list
+----------------+---------+------------------------------+-------------------------------+-----------+-----------+
|      NAME      |  STATE  |             IPV4             |              IPV6             |   TYPE    | SNAPSHOTS |
+----------------+---------+------------------------------+-------------------------------+-----------+-----------+
| container-name | RUNNING | 10.10.10.2 (eth0)            | fd01:2345:6789:abcd::2 (eth0) | CONTAINER | 0         |
+----------------+---------+------------------------------+-------------------------------+-----------+-----------+

うまくいかない場合、ファイル「/var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.hosts/コンテナ名」の内容を確認します。以下のように、設定したIPアドレスが記載されているはずです。

00:16:3e:b3:4f:84,10.10.10.2,[fd01:2345:6789:abcd::2],container-name

ファイルが存在しなかったり、内容がおかしいなら、以下のコマンドでeth0を消して最初からやり直すのが良いと思います。

lxc config device remove test eth0

コメント

タイトルとURLをコピーしました