结论:我撤回这个问题。

结论:我撤回这个问题。

结论:我撤回这个问题。

好吧,坏消息是我开始遇到硬盘上的(看似无关的)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)

这里有 和 的文件eno1eno2/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,则不会出现任何错误。很可疑,对吧?为什么不由eno2networkd 管理?

答案1

由于在启动过程中桥接器可用并不是必需的,因此我将设置一个启用桥接器的 bash 脚本。

#!/bin/bash
#
brctl addif br0 eno2
ip link set br0 up
ip link set eno2 up
dhclient br0

然后,您可以创建一个计时器,在启动完成 10 秒后执行启用桥接脚本。

可能还有更优雅的解决方案,但是这个解决方案可以满足要求。

相关内容