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

нет сети в контейнере nspawn

У меня проблема с сетью в systemd nspawn контейнер.

Я включил -n / --network-veth вариант в systemd-nspawn команда. Это сработало несколько часов назад (я знаю это, потому что скачал кое-что). Тем не менее, я сделал некоторые вещи на хосте и в контейнере (которые, к сожалению, я не могу вспомнить в основном, это включало некоторую перезагрузку, возня с веб-сервером, который не должен мешать здесь, и некоторые другие вещи), и теперь, когда я вернулся, он не больше не работаю.

Хост-система - это CentOS 7, контейнер реализован с использованием Arch Linux.


ip link на хосте

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether 0c:c4:7a:4b:11:3e brd ff:ff:ff:ff:ff:ff
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 0c:c4:7a:4b:11:3f brd ff:ff:ff:ff:ff:ff
4: ve-private@if2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 76:de:ce:fa:fd:49 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Если ve-private не быть UP?


На клиенте:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: host0@if4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether ce:1a:92:1b:95:22 brd ff:ff:ff:ff:ff:ff link-netnsid 0

когда я установил host0 вверх, он меняется на

1: the same as above...
2: host0@if4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
link/ether ce:1a:92:1b:95:22 brd ff:ff:ff:ff:ff:ff link-netnsid 0

К сожалению, я не очень разбираюсь в сети. Какую информацию я могу предоставить вам помимо ip link вывод? Не знаю, с чего начать, любые идеи приветствуются.

Проверьте в своем контейнере, что служба systemd-networkd включен и работает.
Вы можете сделать это, выполнив systemctl status systemd-networkd внутри вашего контейнера.
Если услуга только loaded но нет active (running) вы должны включить его с помощью systemctl enable systemd-networkd и перезапустите свой контейнер.


В ответ на ваш комментарий:

Видимо надо запускать БЕЗ --network-veth? Сейчас он работает, но я этого больше не понимаю, поэтому не буду отмечать это как принятый. Не стесняйтесь размещать что-нибудь полезное.

Когда вы удалили --network-veth он также удалил неявную опцию --private-network что, в свою очередь, сделало каждый интерфейс вашего хоста доступным вашему контейнеру.
С этой точки зрения ip a должен показывать одинаковый результат на хосте и контейнере.

Видимо надо БЕЗ запустить --network-veth? Сейчас он работает, но я этого больше не понимаю, поэтому не буду отмечать это как принятый. Не стесняйтесь размещать что-нибудь полезное.