场景
- NAS 有两个网口:
enp37s0→ WAN(上游路由器 / ISP DHCP)enp38s0→ 接电脑
- 目标:
- NAS 自己和电脑都能从 WAN 的 DHCP 获取地址,并访问外网。
一、常规做法(标准 Linux 环境)
1. 创建桥
sudo ovs-vsctl add-br br0在 常规 Linux 环境 推荐使用 br# 作为统一的桥命名。
2. 添加物理接口
sudo ovs-vsctl add-port br0 enp37s0
sudo ovs-vsctl add-port br0 enp38s03. 清理物理口 IP
sudo ip addr flush dev enp37s0
sudo ip addr flush dev enp38s04. 给 NAS 自己的桥接口获取 IP
sudo dhclient br0在常规 Linux 下,这样就能让 电脑和 NAS 都通过 DHCP 获取 IP,互相可达并访问互联网。
二、飞牛OS下的特殊情况
遇到的问题
- NAS GUI 不允许自定义桥名,只能通过“指定网口启用 OVS”来创建桥,名字固定为
物理口-ovs,例如enp37s0-ovs。 - 电脑(接在
enp38s0)能上网,但 NAS 本机(IP 在 internal 口enp37s0-ovs)无法访问外网,ping网关/电脑都丢包。
问题原因
- OVS 创建的 internal 口(
enp37s0-ovs)默认不参与物理转发。 - internal 口使用了随机生成的 MAC,导致 DHCP/ARP 不匹配,上游交换机/路由器无法识别 NAS 的 IP 请求。
解决方法
1. 确认桥和端口
桥 enp37s0-ovs 中应包含:
- 物理口:
enp37s0(WAN)、enp38s0(电脑) - internal 口:
enp37s0-ovs
2. 清理物理接口 IP
sudo ip addr flush dev enp37s0
sudo ip addr flush dev enp38s03. 让 internal 口继承物理 WAN 的 MAC
sudo ovs-vsctl set bridge enp37s0-ovs other-config:hwaddr=$(cat /sys/class/net/enp37s0/address)4. 给 internal 口获取 DHCP 地址
sudo dhclient enp37s0-ovs