场景

  • NAS 有两个网口:
    • enp37s0 → WAN(上游路由器 / ISP DHCP)
    • enp38s0 → 接电脑
  • 目标:
    • NAS 自己和电脑都能从 WAN 的 DHCP 获取地址,并访问外网。

一、常规做法(标准 Linux 环境)

1. 创建桥

BASH
sudo ovs-vsctl add-br br0
点击展开查看更多

常规 Linux 环境 推荐使用 br# 作为统一的桥命名。

2. 添加物理接口

BASH
sudo ovs-vsctl add-port br0 enp37s0
sudo ovs-vsctl add-port br0 enp38s0
点击展开查看更多

3. 清理物理口 IP

BASH
sudo ip addr flush dev enp37s0
sudo ip addr flush dev enp38s0
点击展开查看更多

4. 给 NAS 自己的桥接口获取 IP

BASH
sudo dhclient br0
点击展开查看更多

在常规 Linux 下,这样就能让 电脑和 NAS 都通过 DHCP 获取 IP,互相可达并访问互联网。


二、飞牛OS下的特殊情况

新系统记得sudo ovs-vsctl add-port enp37s0-ovs enp38s0,每次都忘!

遇到的问题

  • 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

BASH
sudo ip addr flush dev enp37s0
sudo ip addr flush dev enp38s0
点击展开查看更多

3. 让 internal 口继承物理 WAN 的 MAC

BASH
sudo ovs-vsctl set bridge enp37s0-ovs other-config:hwaddr=$(cat /sys/class/net/enp37s0/address)
点击展开查看更多

4. 给 internal 口获取 DHCP 地址

BASH
sudo dhclient enp37s0-ovs
点击展开查看更多

附:直接使用 ip 命令创建

这种方法不需要修改任何配置文件,立即生效,但重启系统后会消失。适合快速测试。

  1. 创建网桥设备
BASH
sudo ip link add name br0 type bridge
点击展开查看更多
  1. 将物理网卡加入网桥
BASH
sudo ip link set dev eth0 master br0
# 清除原配置
sudo ip addr flush dev eth0
点击展开查看更多
  1. 启动网桥和物理网卡
BASH
sudo ip link set dev eth0 up
sudo ip link set dev br0 up
点击展开查看更多
  1. 配置 IP 地址 你需要给网桥分配 IP,而不是给物理网卡分配。
BASH
# 临时分配一个 IP 测试连通性
sudo ip addr add 192.168.1.100/24 dev br0
点击展开查看更多

或者使用 DHCP 获取 IP:

BASH
sudo dhclient br0
点击展开查看更多

版权声明

作者: Cheyne Xie

链接: https://chaim.eu.org/posts/376035b9/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键