我在容器中遇到网络问题systemd nspawn
。
我已在命令中启用了-n
/选项。几个小时前,这个命令已经起作用了(我知道这是因为我下载了一些东西)。但是,我在主机和容器上做了一些操作(不幸的是,我记不清大部分操作了,包括重新启动、干扰不应该干扰这里的 Web 服务器和其他一些操作),现在当我回来时,它不再起作用了。--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
?我不知道从哪里开始,任何想法都非常感谢。
答案1
在容器中验证服务是否systemd-networkd
已启用并正在运行。您可以通过在容器内
执行此操作来执行此操作。 如果服务仅启用但未启用,则必须启用它并重新启动容器。systemctl status systemd-networkd
loaded
active (running)
systemctl enable systemd-networkd
显然我必须在不使用 --network-veth 的情况下启动它?它现在可以工作了,但我不再理解它,所以我不会将其标记为已接受。请随意发布一些有用的东西。
当您删除它时--network-veth
,它还会删除隐式选项--private-network
,从而使主机的每个接口都可用于容器。
此时,ip a
主机和容器上应该显示相同的结果。
答案2
显然我必须在没有的情况下启动它--network-veth
?它现在可以工作了,但我不再理解它,所以我不会将其标记为已接受。请随意发布一些有用的东西。