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
可以看到 Nas 设备的两个网口 enp1s0 和 enp2s0 都已经被添加到了 OVS 桥接中,分别对应 enp1s0-ovs 和 enp2s0-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-ovs 和 enp2s0-ovs 连接起来,从而实现桥接。这样,连接到 enp2s0 的设备就可以通过 enp1s0 访问外部网络。
完成后,可以使用以下指令查看桥接状态:
1
ovs-vsctl show
可以看到 enp1s0-ovs 和 enp2s0-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

