Это NetworkManager творит свое чудо.
Если вы хотите использовать статический адрес, отредактируйте / etc / network / interfaces
как обычно и перезагрузитесь. Затем NetworkManager должен игнорировать интерфейсы, определенные в / etc / network / interfaces
.
Используйте ip addr show
, чтобы увидеть имена устройств ваших сетевых контроллеров.
Проблема заключается в firewalld Fedora. Похоже, что nspawn никогда не был интегрирован с firewalld. (nspawn также неправильно интегрирован с политикой SELinux Fedora).
Как упоминалось в вопросе, libvirt работает нормально :). Мы можем использовать тот же трюк, который обнаружили люди для запуска контейнеров с LXC в Fedora .
Обновление: обходной путь перестал работать после того, как я обновился до Fedora 30.
Запустите systemd-nspawn с опцией - network-bridge virbr0
. Вместо того, чтобы полагаться на systemd-networkd
, здесь используется libvirtd.service
. Последняя служба уже запущена по умолчанию в Fedora. В гостевой системе настройте предпочитаемый DHCP-клиент как обычно.
Использование systemd-networkd
в качестве DHCP-клиента может случайно работать самостоятельно, если у вас может быть левый через /etc/resolv.conf
из предыдущей загрузки контейнера. Но в целом на такую работу рассчитывать нельзя. Он действительно разработан для работы вместе с systemd-resolved.service
.
В свою очередь, systemd-resolved предназначен для использования с nss-resolve
. Однако это не принципиально AIUI.