文章

FnOS 配置多网口桥接,实现Nas设备做交换机

FnOS 配置多网口桥接,实现Nas设备做交换机

前言

最近入手了一台 FnOS 的 Nas,型号是 飞牛 x 零刻 ME Mini,这款路由器有两个2.5G网口,且预装了 FnOS。

由于我的光猫和路由器在客厅(照顾到全屋WiFi信号),而我的 NAS 设备在客厅电脑旁(方便数据线连接电脑),我希望能让 Nas 设备通过有线 Lan 口连接到路由器,因为后续可能在 Nas 设备上搭建一些服务,甚至做软路由等。但是客厅到电脑桌距离比较远,拉网线进来只能明线打钉子,影响美观,就不太想再拉根网线进来接入PC了。

于是想到,可以让Nas的另外一个网口当做交换机使用,相当于 PC 连接到 Nas 上的一个网口,Nas 连接到路由器的另一个网口,这样就能实现 PC 通过 Nas 间接连接到路由器了。

网络检查

1. 开启ssh

先开启 Nas 的 ssh 功能,使用 ssh 登录到 Nas 设备上(设置界面可以直接打开,账号密码就是 Nas 的登录密码)。

2. 检查 OVS 桥接信息

首先因为个人使用的需求,目前 Nas 设备的两个网口均开启了 OVS 桥接,通过以下指令检查一下OVS信息:

1
ovs-vsctl show

alt text

可以看到 Nas 设备的两个网口 enp1s0enp2s0 都已经被添加到了 OVS 桥接中,分别对应 enp1s0-ovsenp2s0-ovs

我们要确认一下哪个网口连接到路由器,哪个网口连接到 PC。可以直接在 FnOS 路由器的设置界面查看连接的设备 IP 地址,确认哪个 IP 是 Nas 设备的哪个网口,对应的网口名称就是上面的其中之一。

我这里是 enp1s0 连接到路由器,enp2s0 连接到 PC。所以此次操作 enp2s0 桥接到 enp1s0 上。

此时 enp1s0 相当于 WAN 口,enp2s0 相当于 LAN 口。

3. 检查网口状态

使用以下指令检查网口状态:

1
ip addr show enp2s0-ovs

如果网口状态是 DOWN,示例如下:

1
3: enp2s0-ovs: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 

则需要将网口状态改为 UP,使用以下指令:

1
ip link set enp2s0-ovs up

同时还要确认enp2s0网口没有被分配IP地址,可以使用以下指令查看:

1
ip addr show enp2s0

如果有IP地址,示例如下:

1
2
3
4
5
6
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet xx.xx.xx.xx/xx brd xx.xx.xx.xx scope global dynamic enp2s0
       valid_lft 86399sec preferred_lft 86399sec
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
         valid_lft forever preferred_lft forever

需要将其删除,使用以下指令:

1
ip addr flush dev enp2s0

至此,网口状态检测工作已经完成。

桥接配置

使用以下指令将 enp2s0-ovs 桥接到 enp1s0-ovs 上(输入后不会有任何输出):

1
2
ovs-vsctl add-port enp1s0-ovs patch-to-enp2s0 -- set interface patch-to-enp2s0 type=patch options:peer=patch-to-enp1s0
ovs-vsctl add-port enp2s0-ovs patch-to-enp1s0 -- set interface patch-to-enp1s0 type=patch options:peer=patch-to-enp2s0

原理:通过创建两个虚拟的 patch 接口,将 enp1s0-ovsenp2s0-ovs 连接起来,从而实现桥接。这样,连接到 enp2s0 的设备就可以通过 enp1s0 访问外部网络。

完成后,可以使用以下指令查看桥接状态:

1
ovs-vsctl show

alt text

可以看到 enp1s0-ovsenp2s0-ovs 之间已经通过 patch 接口连接起来了。这样一来,连接到 enp2s0 的设备就可以通过 enp1s0 访问外部网络了。

测试验证

连接到 Nas 设备 enp2s0 网口的 PC,查看其 IP 地址,确认是否能获取到路由器分配的 IP 地址。如果能获取到,则说明桥接成功。

如果无法获取到 IP 地址,可以尝试手动设置 PC 的 IP 地址,网关和 DNS 设置为路由器的 IP 地址,然后测试能否访问外网。

关闭桥接

如果需要关闭桥接,可以使用以下指令删除 patch 接口:

1
2
ovs-vsctl del-port enp1s0-ovs patch-to-enp2s0
ovs-vsctl del-port enp2s0-ovs patch-to-enp1s0
本文由作者按照 CC BY 4.0 进行授权