Назад | Перейти на главную страницу

systemd-networkd не получает IP-адрес DHCP в клонированном контейнере

Я пробую LXD и создал образ Arch Linux с нуля. Он отлично работает при первом использовании образа, но клонирование контейнера или повторное использование образа заставляет networkd не транслировать DHCP-запрос.

Журналы не говорят ничего интересного - журнал dnsmasq для LXD не упоминает никаких запросов от клонированного контейнера, журнал контейнеров для networkd не упоминает ничего, кроме назначения локальных адресов ссылок, а журнал рабочего контейнера не упоминает скажи что-нибудь особенное.

MAC-адреса разные:

chloridecull@changeling:~$ lxc exec pythonhijinx -- ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
21: eth1@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:62:f5:96 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::216:3eff:fe62:f596/64 scope link
       valid_lft forever preferred_lft forever
23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:2d:21:de brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::216:3eff:fe2d:21de/64 scope link
       valid_lft forever preferred_lft forever
chloridecull@changeling:~$ lxc exec drawpilesrv -- ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:9e:10:77 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 2a01:████:ffff:████::faff/48 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe9e:1077/64 scope link
       valid_lft forever preferred_lft forever
19: eth1@if20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:32:33:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.143/24 brd 10.0.3.255 scope global dynamic eth1
       valid_lft 3257sec preferred_lft 3257sec
    inet6 fe80::216:3eff:fe32:3370/64 scope link
       valid_lft forever preferred_lft forever

Системные идентификаторы разные:

chloridecull@changeling:~$ lxc exec pythonhijinx -- cat /etc/machine-id
734bc201668745ff8259753d22fee54d
chloridecull@changeling:~$ lxc exec drawpilesrv -- cat /etc/machine-id
dec5bf32ce6b4017869fb872e7663e15

Используемый профиль:

chloridecull@changeling:~$ lxc profile show default
name: default
config: {}
devices:
  eth0:
    nictype: bridged
    parent: br0
    type: nic
  eth1:
    nictype: bridged
    parent: lxcbr0
    type: nic

Решение оказалось проще, чем я думал - интерфейсы почему-то поменялись местами.

Сравните другой конец недействительного eth1@if22 с действующим eth1@if20:

20: veth7CJ8BF@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master lxcbr0 state UP mode DEFAULT group default qlen 1000
    link/ether fe:ec:a2:e5:94:48 brd ff:ff:ff:ff:ff:ff link-netnsid 0
22: vethHK45MP@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
    link/ether fe:9b:42:ff:d7:99 brd ff:ff:ff:ff:ff:ff link-netnsid 3

Это исправлено добавлением name ключи к профилю LXD.