结论:我撤回这个问题。
好吧,坏消息是我开始遇到硬盘上的(看似无关的)IO 错误。经过一些故障排除后,驱动器似乎完全死机了;我甚至无法再启动它了。
好消息是,我在新硬盘上安装了 Ubuntu Server,下面发布的配置运行正常。我最好的猜测是旧硬盘无法正常启动某些东西(尽管我确实搜索了各种日志,但什么也没找到)。所以我们永远不会知道。我很高兴它现在运行得如此简单,但令人沮丧的是,我们浪费了这么多时间在一个可能只是硬件问题上。
谢谢大家的帮助!至少我学到了很多关于 Netplan 的知识。
原始帖子
我在一台装有两块物理网卡的微型计算机上安装了 Ubuntu 22.04.3(Ubuntu Server),并安装了 KVM。我想使用第二块物理网卡并将其应用于网桥,以便 KVM 虚拟机可以暴露在网络中。问题是,我的第二个物理接口(eno2
)默认不显示,也没有与网桥(br0
)关联。
这是我的配置文件/etc/netplan/00-installer-config.yaml
:
network:
version: 2
ethernets:
eno1:
dhcp4: true
eno2:
dhcp4: false
bridges:
br0:
interfaces: [eno2]
dhcp4: false
parameters:
stp: false
forward-delay: 0
我可以通过命令行让它工作。为了让一切按照我想要的方式工作,我只需要执行以下命令:
$ sudo brctl addif br0 eno2 # add eno2 to the bridge br0.
$ sudo ip link set br0 up # bring up both interfaces.
$ sudo ip link set eno2 up
$ sudo dhclient br0 # ask the bridge to request an IP again.
我做错了什么,导致这个配置在启动时无法开始工作?
ChatGPT 认为 Netplan 中有一个错误。:grin:
调试数据
输出sudo lshw -c network
:
*-network:0
description: Ethernet interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 1d.1
bus info: pci@0000:00:1d.1
logical name: eno1
version: 11
serial: 00:01:c0:33:4a:5e
size: 1Gbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical 10bt-fd 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=st_gmac driverversion=Jan_2016 duplex=full ip=192.168.1.26 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
resources: iomemory:600-5ff irq:130 memory:6001340000-600137ffff
*-network:1 DISABLED
description: Ethernet interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 1d.2
bus info: pci@0000:00:1d.2
logical name: eno2
version: 11
serial: 00:01:c0:33:4a:5f
width: 64 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical
configuration: broadcast=yes driver=intel-eth-pci latency=0 multicast=yes
resources: iomemory:600-5ff irq:170 memory:6001300000-600133ffff
线索1 (2023-09-27)
这里有 和 的文件eno1
:eno2
,/run/systemd/network/10-netplan-eno2.network
唯一的区别是eno2
有一个部分:
[Link]
RequiredForOnline=no
我可以删除它(或将其更改为“是”),重启后它又会恢复。如果我运行,它就会恢复sudo netplan apply
。而且运行sudo networkctl reload
似乎根本没有改变任何东西。
线索2 (2023-09-27)
当我运行时sudo networkctl renew eno2
,我得到了这个:
Failed to renew dynamic configuration of interface eno2: Interface eno2 is not managed by systemd-networkd
如果我运行sudo networkctl renew eno1
,则不会出现任何错误。很可疑,对吧?为什么不由eno2
networkd 管理?
答案1
由于在启动过程中桥接器可用并不是必需的,因此我将设置一个启用桥接器的 bash 脚本。
#!/bin/bash
#
brctl addif br0 eno2
ip link set br0 up
ip link set eno2 up
dhclient br0
然后,您可以创建一个计时器,在启动完成 10 秒后执行启用桥接脚本。
可能还有更优雅的解决方案,但是这个解决方案可以满足要求。