我刚刚重建了我的 NAS,现在使用基于 Intel 的 SBC 和两个 Realtek 以太网端口(感兴趣的朋友可以选 Odroid H2)。到目前为止,一切都运行良好,直到我尝试在桥接中使用两个以太网端口来最大化本地网络带宽(此 NAS 将用于本地传输多个 4K 流)。
硬件设置很简单:H2,M.2 插槽中配备 256GB NVMe SSD,两个 HDD 连接到两个 SATA 端口,两个以太网端口插入我的路由器(HyperOptic 的调制解调器+路由器组合 Tilgin HG2381)的前两个 LAN 端口上。
软件方面也很简单:常规的 Ubuntu Server 19.04 安装在 SSD 上,我将云内容、Docker 的内容(图像、配置文件夹)等存储在 SSD 上;两个 HDD 位于 RAID0 阵列中,带有一个 XFS 分区用于存储媒体。数据丢失并不危险,因为我不太关心 HDD 上的内容,并且 docker 配置(不可替代的部分)每天都会备份到 Google Drive。
我已经cloud-init
从系统中清除了所有内容,并将 netplan 渲染器设置为 NetworkManager,这样我就可以使用 Cockpit 的 Web 界面来管理所有内容。安装的额外网络软件是 zerotier,我发现它的设置和管理最简单。
两个独立的网络接口工作正常,但设备有两个独立的 IP。我希望将此连接视为具有负载平衡的单个接口,因此我创建了一个由这两个接口组成的桥接器,并为其设置了一个静态 IPv4 地址。一旦激活此网络配置,整个本地网络就会死机 - WiFi、互联网访问、本地网络访问,一切都会死机。虽然我很高兴发现这个终止开关,但我真的很想修复它。
当前的 NetworkManager 配置:
有线连接1:
[connection]
id=Wired connection 1
uuid=8d403f31-b593-38b7-a177-62d26ac8604c
type=ethernet
autoconnect-priority=-999
master=bridge0
permissions=
slave-type=bridge
timestamp=1565379408
[ethernet]
mac-address=00:1E:06:45:06:C1
mac-address-blacklist=
有线连接2:
[connection]
id=Wired connection 2
uuid=a440422a-941f-32c0-8863-5b35e3a9cd12
type=ethernet
autoconnect-priority=-999
master=bridge0
permissions=
slave-type=bridge
timestamp=1565379408
[ethernet]
mac-address=00:1E:06:45:06:C2
mac-address-blacklist=
桥接器0:
[connection]
id=bridge0
uuid=c60701c0-12f2-4624-a6d0-4f0ba327445f
type=bridge
autoconnect-slaves=1
interface-name=bridge0
permissions=
timestamp=1565379708
[bridge]
stp=false
[ipv4]
address1=192.168.1.75/24,192.168.1.1
dns=1.1.1.1;1.0.0.1;
dns-search=
method=manual
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto
乍一看,我没发现任何问题,但我甚至还远未熟练掌握 NetworkManager(我仍在熟悉它,几乎只使用过 /etc/network/interfaces - 很少有嵌入式设备拥有完全成熟的网络管理系统,甚至路由器也不行!)。我的网络配置有问题吗?还是路由器不能很好地处理桥接接口?
答案1
您不想桥接端口,而是想将它们绑定。桥接允许计算机在一个端口上接收数据包(技术上是帧),然后将其转发到另一个端口,这根本不是您想要的。
绑定告诉计算机通过一个端口或另一个端口传输帧(基于您可以配置的策略),交换机在计算机上执行相同的操作。它通常使用 IEEE 802.3ad 协议完成。您需要在两个端口上进行设置NAS 电脑和交换机。如果交换机不支持 IEEE 802.3ad,我认为没有办法让它工作。
顺便说一句,当你以桥接模式连接网络时,网络断线的原因是,通过多个链路连接两个网桥/交换机(关闭生成树,就像你那样)会产生开关循环NAS 和实际交换机都在两条电缆之间无限地来回转发流量,消耗所有带宽并有效地破坏网络。生成树协议是专门为防止此问题而设计的;如果您将其关闭,则您有责任创建无环路的网络。