3、多APN方案设计:多APN的应用场景、多APN的架构设计、多APN的流量隔离策略

好,咱们进入第三章。多APN方案设计,这可以说是CPE设备里最核心、也最考验功力的部分。很多朋友觉得多APN不就是配几个不同的接入点嘛,有什么难的?

嗯,真没那么简单。我在项目里见过太多因为APN规划不合理,导致业务卡顿、安全出问题的案例。说白了,多APN玩的就是流量隔离和路径选择。你想想看,一个CPE设备既要跑办公OA,又要跑视频监控,还得连物联网传感器,全挤在一个通道里,不出事才怪。

3.1 多APN的应用场景

先聊聊场景。我个人习惯把多APN的应用场景分成三类,这样设计时思路会清晰很多。

  • 场景一:企业办公与生产网隔离
    这是最常见的。我记得有个连锁零售客户,他们的POS收银系统和员工Wi-Fi走同一个APN。结果一到促销日,员工刷视频把带宽占满,POS机刷卡超时,门店直接瘫痪。后来我给他们设计了两个APN:一个专供POS和ERP,保证低延迟和高优先级;另一个给员工上网和访客Wi-Fi,带宽可以共享但绝不能抢占生产流量。
  • 场景二:专网与公网分离
    很多政企客户要求内部业务走专网APN(比如APN: gov.cn),而互联网访问走公网APN。这种场景下,CPE需要同时维持两条LTE/5G连接,一条到专网核心,一条到公网网关。我曾经在部署时踩过一个坑——专网APN的DNS解析不了公网域名,导致业务系统里的外部链接全部打不开。解决方案?嗯,后面会讲到策略路由。
  • 场景三:多运营商链路备份
    这个其实不算严格意义上的多APN,但经常一起用。比如主卡用移动APN,备卡用联通APN。当主链路断了,CPE自动切换到备卡。注意,这里每个运营商的APN参数(如用户名、密码、鉴权方式)可能完全不同,配置时要格外小心。

核心观点:多APN不是功能堆砌,而是为了满足「不同业务、不同安全等级、不同QoS需求」的流量隔离。设计前,先问清楚客户:哪些流量必须隔离?哪些可以共享?

3.2 多APN的架构设计

架构设计这块,我一般会画一张逻辑图。但这里咱们用文字描述清楚。

一个典型的多APN CPE架构,从上到下分为三层:

  1. 物理层与网络层
    这里指的是CPE的蜂窝模块。如果CPE支持多SIM卡(比如双卡双待或四卡),每个SIM卡可以独立配置一个APN。注意,每个APN对应一个独立的PDN连接(Packet Data Network),在CPE内部表现为一个独立的虚拟网络接口,比如 wwan0wwan1
  2. 策略路由层
    这是灵魂所在。CPE需要根据流量的特征(源IP、目的IP、端口、协议、DSCP标记等)将数据包路由到对应的APN接口。我常用的工具是 ip ruleiptablesmangle 表。举个例子:
# 为APN1(办公网)创建独立路由表
echo "100 apn1_table" >> /etc/iproute2/rt_tables
ip route add default via 10.0.1.1 dev wwan0 table apn1_table
ip rule add from 192.168.10.0/24 table apn1_table priority 1000

# 为APN2(监控网)创建独立路由表
echo "200 apn2_table" >> /etc/iproute2/rt_tables
ip route add default via 10.0.2.1 dev wwan1 table apn2_table
ip rule add from 192.168.20.0/24 table apn2_table priority 2000

这段配置的意思是:来自办公网段(192.168.10.0/24)的流量,强制走APN1的出口;来自监控网段(192.168.20.0/24)的流量,强制走APN2的出口。这样即使办公网断了,监控网也不会受影响。

  1. 应用层与NAT
    每个APN接口通常需要独立的NAT(网络地址转换)。因为运营商分配的IP可能是私网IP,需要做SNAT才能访问外部。我建议为每个APN接口配置独立的iptables MASQUERADE规则,避免NAT冲突。
iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wwan1 -j MASQUERADE

个人经验:我曾经在调试时发现,两个APN的NAT规则如果写在一起,会导致第二个APN的流量被错误地SNAT到第一个接口的IP上。所以,一定要分开写,并且用 -o 参数明确指定出口接口。

3.3 多APN的流量隔离策略

流量隔离,说白了就是「你的流量别跑到我的通道里来」。这里我总结了几种常用的策略,按隔离强度从低到高排列:

策略名称 隔离方式 适用场景 隔离强度
基于源IP的策略路由 根据数据包的源IP地址选择APN 不同网段对应不同业务 中等
基于DSCP标记的策略路由 根据IP头部的DSCP值选择APN 同一网段内区分优先级
基于应用层协议(L7)的过滤 使用DPI深度包检测识别应用 需要精确控制特定应用流量 最高
VLAN + 多APN绑定 将不同VLAN映射到不同APN 大型企业网络,交换机侧已做VLAN划分

我个人最推荐的是「基于源IP的策略路由 + DSCP标记」的组合拳。为什么?因为纯源IP策略虽然简单,但无法应对同一台设备上既有办公流量又有视频流量的情况。比如一个摄像头,它既上传视频流(需要高优先级),又发送心跳包(低优先级)。这时候,可以在摄像头侧或CPE入口处给视频流打上DSCP EF(加速转发)标记,然后策略路由根据DSCP值将其导入高优先级的APN通道。

避坑指南:我曾经在一个项目中,客户要求将视频监控流量走专网APN,其他流量走公网APN。我一开始用了基于目的IP的策略路由,结果发现监控平台的IP地址经常变,策略路由表维护起来非常痛苦。后来改成基于源IP(监控网段)的策略路由,一劳永逸。所以,能基于源IP就别基于目的IP,能基于网段就别基于单个IP。

另外,还有一个容易被忽略的点——DNS隔离。不同APN的DNS服务器可能不同。专网APN的DNS只能解析内部域名,公网APN的DNS只能解析公网域名。如果CPE只配置了一个DNS,那么走专网APN的流量去解析公网域名时,就会失败。解决方案是:为每个APN接口配置独立的DNS,并在策略路由中同时指定DNS请求的出口。

# 在CPE上运行dnsmasq,为不同APN分配不同DNS
# 对于来自办公网段的DNS请求,转发到专网DNS
# 对于来自监控网段的DNS请求,转发到公网DNS
# 配置示例(dnsmasq.conf):
server=/corp.local/10.0.1.1
server=//8.8.8.8

嗯,这里要注意,dnsmasq的配置需要结合策略路由一起使用,否则DNS请求可能走错出口。

最后,我想强调一点:多APN方案设计不是一锤子买卖。部署后一定要做流量监控和日志分析。我习惯在每个APN接口上开启NetFlow或sFlow,定期检查各通道的流量占比、延迟和丢包率。如果发现某个APN的流量异常(比如办公网APN突然出现大量P2P下载流量),那说明隔离策略可能被绕过了,需要及时调整。

总结一下:多APN方案的核心是「场景驱动、架构分层、策略隔离」。设计时先想清楚业务需求,再搭好策略路由的骨架,最后用NAT和DNS把细节补全。别怕配置复杂,一旦跑起来,你会发现多APN带来的稳定性和安全性,绝对值得你花这些功夫。