У меня проблема с сетью в 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
? Сейчас он работает, но я этого больше не понимаю, поэтому не буду отмечать это как принятый. Не стесняйтесь размещать что-нибудь полезное.