前言:
今日完成P340 Tiny软路由一台,特此发帖分析心得。以前用繁体字是尽量避免屏蔽,上个月被版主禁言30日,每日以泪洗面,面壁思过(折腾软路由),居然有所领悟。这次就不管那么多了,我都奔5的人了,想太多也不好我还年轻,我还能肝。望版主看我已经痛改前非,支持一下哈。
0. 硬件配置与ESXI
硬件详情见如下帖子
https://www.chiphell.com/thread-2408241-1-1.html
P340 Tiny大家已经很熟悉,因此这里无需多言。需要注意的是,P340这代开始才支持sriov,而之前的P330,M920x等均不支持。
首先整体网络配置如下图所示。eth0,eth1为x710-T2L的两个电口,eth2为板载Ii219-LM,USB0为内置WWAN模块之接口。

虚化环境为ESXI 7u3d,内部跑4个VM:
VM0:Untangle UTM是一个商业防火墙,提供IPS以及路由功能。此处分配8核心,16G内存,120G硬盘来保证性能。
VM1:Debian自建科学服务器,分配一个VF即可,里面跑TR。主要方便自己去内地上网。
VM2:BT下载专用。分配一个VF,直通了2TB的SATA SSD,下载完成自动搬运到NAS中。同时打开了SAMBA服务,便于电脑共享。
VM3:OpenWRT,直通WWAN口LTE模块,掉线后通过TG Bot发送短消息到我的手机。同时GPS时间通过NTPD来提供服务。
1. ESXI的配置要点
首先要安装intel提供的x710网卡驱动。可以在vmware网站上搜索下载,之后开启ssh上传安装。成功后重启。

其次P340的bios内开启sriov以及iommu的支持。之后在ESXI硬件配置内把x710一个网口直通用来作为WAN接光猫,另一个网口开SRIOV,配置8个VF即可。


开启sriov之后需要重启ESXI以便生效。之后把PF配置为接vSwitch作为LAN这端的交换机。其他VM添加网口选择此vSwitch,驱动选择sriov passthrough。这里需要注意的是,如果其他VM直接通过添加PCIE硬件的方式来添加VF接口,则不能互通。

同样的,再添加一个新的vSwitch作为openwrt与防火墙Untangle的wwan口交换机。这里由于LTE模块速度相对较低,用VMXNET3驱动即可。

2. Untangle防火墙的配置
此防火墙带深度包检测,IPS与IDS,特点是配置上手十分容易。界面易于使用。缺点是贵。年费50~150刀。它基于Debian,并无过度精简,自带编译工具链,可以自行添加驱动。同时也可以自行修改apt源,来安装二进制程序。具体详情可参考:https://www.untangle.com/untangle-ng-firewall/

这里具体安装过程我就省略了,因为它基于Debian,网站有ISO安装文件下载。需要注意的是,默认安装并无自带x710的i40e及iavf驱动,因此首次安装需要添加2个VMXNET3网卡并且完成安装。之后可打开ssh,下载编译安装intel提供的驱动。

之后关闭vm并在ESXI内重新分配网卡即可。以下是我已经安装好驱动的网卡信息


此处注意直通网卡需要打开保留内存选项

开启UEFI可以提高性能

网卡信息


之后登录防火墙,并且在config选项卡内重新配置网卡信息
可以看到有三个网卡,分配为WAN,WWAN和LAN

WAN口通过DHCP从光猫获得IP。此处可以手动添加第二个不同网段的虚拟IP,用来打开光猫的配置网页

DHCP静态分配

Untangle特点之一为功能通过app实现。需要开启的功能下载app即可

要实现断网自动切换需要用到两个apps:wan failover 以及wan balancer

Failover的实现通过周期性的ping一个目标网址实现。wan口与wwan口检测的频率时间可以不同。国内的朋友可以把google改成百毒。

Balancer可以分配两个网口流量的百分比,这里我把wwan设置为0,意味着只有wan断网之后,才会切换到wwan上面来。

Untangle的主动防御功能汇总可以在report中查看

同时也有系统各种统计信息

3. OpenWRT的配置
此处使用github公版,没有自己编译,以求稳定。版本号是22.02.2

网络配置如下所示,一个VMXNET3网卡接防火墙wwan口,USB0为内置LTE模块


驱动信息如下

这里要具体讲一下LTE模块如何连接到openwrt里。我采用直通USB控制器的方式实现。

在ssh登陆后可以看到USB设备。这里需要注意的是,我使用的LTE模块为SIM7600,它有许多种工作模式。需要通过AT命令改为9011才能进入USB网卡模式(默认应该为QMI,在openwrt中需要额外配置才可工作)

登录luci网页后也可查看状态。IP地址通过DHCP自动获得。

LTE模块开机自动启动,配置端口为/dev/ttyUSB2 可以通过minicom来打开并且输入配置命令。具体命令可参考AT手册。这里需要注意的是,我使用了有源GPS天线,供电需要模块开启并提供3.0v,命令为AT+CVAUXV=3050。另外,gps配置修改前必须关闭,之后再打开。GPS的运行可以开启AGPS来提高搜星速度。开启之后1分钟内可以用。最后,此模块内置温度传感器,可以查看温度。命令为AT+CPMUTEMP。

模块默认重启后不给天线供电,因此需要写一个启动脚本

之后安装并配置gpsd

搜星完毕后可查看很多信息,包括UTC时间

之后安装并配置ntpd

添加红框中三行

可通过命令观察到,首选时间源为GPS

第一章结束,谢谢观赏!
后记:关于DPDK,VPP,由于无法支持pppoe,内地的朋友们可能不太适合,因此我才做了这样一个all in one的方案。如果有相关需求,我可以再开新贴分享。