web-dev-qa-db-ja.com

LXCコンテナには2つのIPアドレスが割り当てられます

学習体験として、ArchLinuxワークステーションでLXCをいじっています。 ArchwikiのLXCページのガイドに従い、コンテナーの静的IPを設定しています。これは私のネットワーク構成がどのようなものかです:

/etc/netctl/lxcbridge
---------------------
Description="LXC Bridge"
Interface=br0
Connection=bridge
BindsToInterfaces=(enp1s0)
IP=static
Address=('192.168.0.20/24')
Gateway='192.168.0.1'
DNS=('192.168.0.1')

そして、コンテナ構成:

/var/lib/lxc/testcontainer/config
---------------------------------
lxc.network.type = veth
lxc.network.link = br0
lxc.network.ipv4 = 192.168.0.198/24

ただし、lxc-ls -fによると、追加のIPアドレスが与えられます。

NAME          STATE   AUTOSTART GROUPS IPV4                         IPV6
testcontainer RUNNING 0         -      192.168.0.198, 192.168.0.220 -

192.168.0.198だけが欲しいです。なぜ2番目のものが割り当てられるのかわかりません。

2
Kalq

それで、もう少し調査した後、私はこれがなぜ起こっているのかを決定しました。デフォルトのUbuntuおよびDebianテンプレートを使用してコンテナーを作成し、DHCPを使用してルーターからIPを要求するようにネットワークを設定しています。そのため、最初に静的IPはlxc.container.configを使用して設定され、コンテナーが起動すると、ルーター(または使用しているDHCPサーバー)にセカンダリIPを照会して割り当てられます。

これを停止する最も論理的な方法は、コンテナ内に静的IPを割り当てることです。したがって、Debianベースのテンプレートでは/etc/network/interfacesを編集します。

auto etho0
iface etho0 inet static
    address 192.168.0.15
    netmask 255.255.255.0
    gateway 192.168.0.1

次に、lxc config /var/lib/lxc/testcontainer/configからipv4行を削除します。

lxc.network.type = veth
lxc.network.link = br0

もう1つの方法は、ipv4行を/var/lib/lxc/testcontainer/configに保持してホストにipを設定させ、手動に設定してインターフェイスに触れないようにコンテナーに明示的に指示することです。

auto eth0
iface eth0 inet manual

ホストが一時停止されてから再開された場合、この2番目の方法には明らかにいくつかの問題があります。おそらく最初の方法を使用するのが最善です。

1
Kalq