LXDホストのIPアドレスを変更する
LXD(lxc)でネットワークアクセスを有効にしていて、特定のIPアドレスに限っている場合、ホストのIPアドレスを変更した際にlxcコマンドがエラーとなる。
設定を行うlxc config edit
自体が動作しないので対処法に困ったが、何とか見つけることが出来た。
環境
- 変更前IPアドレス:
192.168.10.217/24
- 変更後IPアドレス:
192.168.10.161/24
現象
lxd init
のときに訊かれる、「ネットワーク経由でLXDにアクセスできるようにするか?」という質問にyes
と回答し、
その次の使用するIPアドレスを訊く質問に特定のNICに割り当てられているIPアドレスを設定した場合、
ローカルのlxc
コマンドもこのIPアドレスに対して通信する。
Would you like the LXD server to be available over the network? (yes/no) [default=no]: yes
Address to bind LXD to (not including port) [default=all]:192.168.10.217
そのため、ホストのIPアドレスを変更した後にlxc
コマンドを実行しようとしてもソケットと通信できないとエラーが出る。
$ lxc list
Error: Get "http://unix.socket/1.0": EOF
解決手順
そこで、ループバックアドレスとして変更前のIPアドレスを追加する(サブネットマスクは/32
)。
$ sudo ip -4 addr add 192.168.10.217/32 dev lo
正常にlxc list
が動作することを確認。
$ lxc list
+--------------+---------+------------------------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------------+---------+------------------------+------+-----------+-----------+
| ****** | RUNNING | ***.***.**.198 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ************ | RUNNING | ***.***.***.102 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ***** | RUNNING | **.***.***.146 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ******** | RUNNING | **.***.***.227 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ******** | RUNNING | **.***.***.177 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ******** | RUNNING | ***.***.***.103 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ****** | RUNNING | ***.***.***.104 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
この状態でならlxc config ***
が実行できる。変更前の設定は、以前のIPアドレスのまま。
$ lxc config show
config:
core.https_address: 192.168.10.217:8443
core.trust_password: true
lxc config edit
でviを起動して設定を変更する。
$ lxc config edit
もう一度lxc config show
を実行して、設定が書き換わっていること(この例では192.168.10.161
に変更した)を確認。
$ lxc config show
config:
core.https_address: 192.168.10.161:8443
core.trust_password: true
一時的に追加したループバックアドレスを削除し、動作確認して完了。
$ sudo ip -4 addr del 192.168.10.217/32 dev lo
$ lxc list
+--------------+---------+------------------------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------------+---------+------------------------+------+-----------+-----------+
| ****** | RUNNING | ***.***.**.198 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ************ | RUNNING | ***.***.***.102 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ***** | RUNNING | **.***.***.146 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ******** | RUNNING | **.***.***.227 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ******** | RUNNING | **.***.***.177 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ******** | RUNNING | ***.***.***.103 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+
| ****** | RUNNING | ***.***.***.104 (eth0) | | CONTAINER | 0 |
+--------------+---------+------------------------+------+-----------+-----------+