потерян сетевой интерфейс для systemd-networkd. Что здесь происходит?

У меня есть хост systemd с 4 портами Ethernet.

один порт зарезервирован для изолированных контейнеров. Он установлен как :

# /etc/systemd/network/20-eth3-reserved.network
[Match]
Name=eth3
[Link]
Unmanaged=yes

. Я также устанавливаю псевдонимы для портов, каждый в своем файле ссылок, например.

# /etc/systemd/network/12-alias-eth3.link
[Match]
MACAddress=42:42:42:42:42:03
[Link]
Name=eth3

Позже я использовал неуправляемый интерфейс в контейнере systemd-nspawn с

# /etc/systemd/nspawn/container1.nspawn
...
[Network]
Private=yes
VirtualEthernet=no
Interface=eth3

В какой-то момент (сентябрь)он работал нормально. Но несколько месяцев назад интерфейс с неуправляемой настройкой просто пропал из системы.

nspawn не вызывает контейнер, говоря, что интерфейс не найден.

ip linkне показывает ни eth3, ни mac-адрес.

lshwстранно показывает все управляемые порты, но НЕ указывайте поле macaddress(serial)для отключенного.

dmesgпрекрасно показывает все порты и указывает правильный MAC-адрес для всех, включая отключенный. Позже он также показывает применяемый псевдоним!

[Wed Nov 10 11:44:31 2021] igb 0000:03:00.3 eth3: renamed from enps0f4

Таким образом, systemd прекрасно видит устройство даже после того, как возникла проблема.

networkcltпоказывает все управляемые порты плюс loкак unmanaged. Но никаких признаков eth3.

Я не против найти решение этой проблемы, если есть лучший способ «зарезервировать» физический интерфейс для использования с nspawn вместоUnmanaged=yes

0
задан 11 November 2021 в 23:49
1 ответ

Все это было бы слишком забавно, если бы не печальная изюминка того состояния, в котором systemd все еще находится.

Виртуальная машина не была запущена, или она была запущена, и я пытался запустить ее снова? Независимо от случая machinectl listконтейнер не был запущен.

Единственная причина, по которой я мог найти интерфейс, который был виден ядру, заключался в том, что он был перемещен в другое пространство имен, и это должно произойти только тогда, когда nspawn назначает интерфейс работающему контейнеру.

Но не было контейнера, и не было возможности отладить/расследовать, что с ним случилось, или принудительно выпустить релизы.

И, к сожалению, networkctlеще меньше знает о пространствах имен и контрольных группах, чем легаси ps. Если интерфейс где-то прикреплен, значит, его уже нет.

В конце концов я не мог понять, что происходит, но обновление системы и перезагрузка решили проблему на данный момент.

0
ответ дан 12 November 2021 в 06:21

Теги

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