Как установить статический адрес IPv6 для контейнера LXD

На Ubuntu Гостеприимный хост я выполняю LXD 2.12 от гостеприимных бэкпортов. В то время как легко измениться, контейнеры ipv4 адресуют к статическому адресу снаружи контейнера, я не могу изменить его адрес ipv6. Что правильный путь состоит в том, чтобы сделать это?

Я настроил lxd с мостом lxdbr0 с IPv4 и IPv6. Связанная часть в конфигурации похожа на это:

ipv4.address: 10.122.45.1/24
ipv4.nat: "true"
ipv6.address: fd42:7146:f400:1::1/64
ipv6.nat: "true"

После того, как я запустил контейнер с Гостеприимным (contxenial), его ifconfig для eth0 выглядел примерно так:

peter@led:~$ lxc exec contxenial -- ifconfig eth0
eth0 Link encap:Ethernet  HWaddr 00:16:3e:bc:f5:8d
     inet addr:10.122.45.223  Bcast:10.122.45.255  Mask:255.255.255.0
     inet6 addr: fd42:7146:f400:1:216:3eff:febc:f58d/64 Scope:Global
     inet6 addr: fe80::216:3eff:febc:f58d/64 Scope:Link
     :

Теперь я хотел изменить обоих, его ipv4 И его ipv6 адресуют к статическим IP адресам с помощью следующих команд:

peter@led:~$ lxc network attach lxdbr0 contxenial eth0
peter@led:~$ lxc config device set contxenial eth0 ipv4.address 10.122.45.71
peter@led:~$ lxc config device set contxenial eth0 ipv6.address fd42:7146:f400:1::71

Наконец я перезапустил свой контейнер.

peter@led:~$ lxc restart contxenial

К моему удивлению адрес IPv4, измененный как ожидалось, но адрес IPv6, не сделал!

peter@led:~$ lxc exec contxenial -- ifconfig eth0
eth0 Link encap:Ethernet  HWaddr 00:16:3e:bc:f5:8d
     inet addr:10.122.45.71  Bcast:10.122.45.255  Mask:255.255.255.0
     inet6 addr: fd42:7146:f400:1:216:3eff:febc:f58d/64 Scope:Global
     inet6 addr: fe80::216:3eff:febc:f58d/64 Scope:Link
     :

Однако dnsmasq.hosts содержит обоих, измененный адрес IPv4, а также измененный адрес IPv6.

peter@led:~$ sudo cat /var/lib/lxd/networks/lxdbr0/dnsmasq.hosts
00:16:3e:bc:f5:8d,id:*,10.122.45.71,[fd42:7146:f400:1::71],contxenial

Что это, я делаю неправильно? Что правильный путь состоит в том, чтобы в настоящее время достигать этого (начиная с LXC/LXD 2.3 или выше)?

3
задан 19 April 2017 в 18:01

1 ответ

От StГ©phane Graber, руководителя проекта LXC/LXD, у меня есть следующий ответ на мой выпуск :

Статическое присвоение IPv6 может только работать в режиме DHCP с сохранением информации как иначе, SLAAC используется для присвоения адреса.

можно включить DHCP с сохранением информации с:

lxc network set lxdbr0 ipv6.dhcp.stateful true

, Но примечание, что никакой дистрибутив Linux не делает DHCPv6 по умолчанию, таким образом, необходимо будет также обновить/etc/network/interfaces контейнера (или подобный на основе распределения), чтобы на самом деле сделать DHCPv6.

Это было недостающей первой частью, не мог найти ни в какой документации. Это также означает, что не возможно изменить адреса IPv6 снаружи контейнера тем же простым путем, это может быть сделано с IPv4.

В моем случае я должен был добавить следующую строку к/etc/network/interfaces.d/50-cloud-init.cfg в контейнере.

iface eth0 inet6 dhcp

Без комментариев это должно выглядеть примерно так:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

файл называют от/etc/network/interfaces. Это могло бы отличаться на других дистрибутивах.

Наконец это должно работать после перезапуска контейнера (по крайней мере, это работало на меня).

я надеюсь, что это помогает другим также.

3
ответ дан 1 December 2019 в 16:19

Другие вопросы по тегам:

Похожие вопросы: