去年底接到一份整改通知,测评机构来行里做复测,一眼盯上了机房角落那台承担核心业务的老服务器。它虽然用VLAN把几个网络域分得清清楚楚,可物理网口只有一个,电口插着一条线缆让多个业务共用,整改结论写得很直接:虚拟隔离不等于物理隔离,限期整改。恰逢那批设备也进了信创替换名单,银行网络安全升级和国产化改造就这样撞在了同一个窗口期。我们能做的就是重新设计一套四光口物理隔离架构,把生产网、办公网从物理层彻底分开,顺便把整个改造过程走顺。这篇文章就记录我们行这次升级的完整经历——架构为什么这么设计、信创环境下遇到过哪些适配问题、割接怎么做到不慌不乱。
1. 整改通知背后的逻辑:虚拟隔离为什么过不了关,物理层到底切了什么
1.1 一次测评测出的"虚拟隔离"痛点
以前总觉得只要VLAN划分清楚,网络就是隔离的。那台老服务器上跑着办公终端、监控采集、部分管理应用,我把它按VLAN隔成三个段,VLAN间用ACL控制,自认为天衣无缝。测评老师的意见很朴素:你从一个物理网口出来的流量,在网卡内部和同一根网线上是有交叉路径的,VLAN只是数据链路层的逻辑标签,一旦网卡驱动异常、流量突增或配置误操作,隔离边界就可能被击穿。
这个说法让我重新审视"隔离"二字的含义。等保里强调的物理隔离,核心不只是逻辑上不能互通,更是物理链路上不允许共享传输介质。同一根光纤、同一个网口、同一块网卡,都算共享。只有把生产网和办公网的信号分别走到独立的光口、独立的光纤、独立的交换机端口上,才叫真正的物理隔离。
1.2 隔离不仅是安全,更是故障域的切割
做网络时间长了会发现,物理隔离带来的好处远不止合规。有一次办公网某个楼层交换机的广播风暴,因为当时那台服务器混接办公网,风暴直接从网口灌进服务器,导致这台机器上所有业务全部卡死,生产网的应用也受了牵连。如果是纯物理隔离架构,办公网的风暴最多影响办公网自己的链路,生产网光口是独立的,网卡内部到生产业务的路径完全不受干扰。
这其实是在切割故障域。两个网域共享一个物理网口,意味着故障也会共享。一个网口承载的流量异常,比如突发广播、未知单播、环路流量,都会挤占另一个网域的带宽资源。割开之后,每个业务域独享一个光口、一条光纤链路,故障半径一下子就小了。
1.3 信创替换给了架构重构的窗口期
整改期限和信创替换节点重叠,反而成了好事。如果单独为整改采购新设备,流程长、预算还要单独打申请;但设备本来就该更换,新采购的国产化整机里直接规划好四光口布局,相当于一次变更同时解决了合规整改和设备换代两个问题。
我们当时的计划是:新到的国产化服务器统一配置四光口网卡,不再额外购买电口扩展卡。银行网络安全升级的核心动作就落在这块网卡上——两个光口分配给生产网,两个光口分配给办公网,每个网络域内部再互相做冗余。信创环境下的驱动、光模块兼容问题,后面慢慢磨出来的经验,实操价值比方案本身还要大。
2. 四光口架构的设计推演:每个网口都应该有自己明确的任务
2.1 光口 vs 电口:不只是换个接口形式
有人问为什么不继续用电口,加两块四口电口网卡不也一样能隔离吗?从隔离角度确实可以,但电口有两个绕不开的短板。第一是传输距离,机房到楼层交换机的距离超过90米,六类网线的极限就摆在那边,光口随便就是几公里,骨子里更适合银行这种跨楼层、跨楼宇的网络布局。第二是抗干扰和防泄露,光信号不产生电磁辐射也不会感应外界电磁干扰,对金融机房这种高敏感环境,天然更适合承载敏感业务流量。
还有一个常被忽略的点:电口需要用屏蔽/非屏蔽双绞线,线缆在机柜里盘绕、走线架上的捆扎,时间久了很容易被踩、被拉扯,一个水晶头接触不良就会导致链路闪断。光纤有专门的光缆槽道和熔接盒,物理防护等级和施工规范性都更高。既然要搞物理隔离,不如把传输介质这条腿也换成更踏实的。
2.2 四个光口的分配策略:主备与网络域的取舍
四光口怎么分配,我在设计阶段反复权衡过两种方案。第一种是2+2模式:生产网两个光口做为主备,办公网两个光口做为主备。这种方案的好处是两个网络域完全对称,任意一条光纤断了,另一条立刻顶上,故障切换不会影响任何业务。第二种是3+1模式:生产网占三个光口,办公网占一个,适合生产网流量大、单链路带宽需求高的场景,但办公网一旦那个光口出问题就单点故障了。
我们最后选了2+2。原因很简单:银行的核心诉求是业务连续性,生产网链路必须有冗余,办公网虽然不是实时交易,但内部系统、OA、邮件同样不能断,两个域都不能接受单点光口。四口网卡里每两个光口绑定为一个bond,生产网两个口做active-backup,办公网两个口也做active-backup,平时主口跑流量,备份口同步链路状态但不承载业务。手动主备切换比动态聚合省心,交换机那头不需要配LACP,排障也直观。
2.3 配套选型:网卡、光模块和隔离交换机的联动关系
设计到这个层面,选型就不是只看网卡了。网卡本身要注意几点:必须是PCIe接口,最好支持RSS多队列,保证多核CPU能分散处理网卡中断;光口要支持热插拔的SFP+或SFP模块,方便后期维护;网卡的芯片方案要在国产操作系统内核里能找到驱动,或者厂商能提供适配的驱动包。
光模块的选型同样关键,千万不要随意采购。我遇到过不同品牌光模块在国产交换机和网卡之间出现协商失败的情况,后面细说。规划阶段就把模块品牌、型号、传输距离统一列成兼容矩阵,省得后期排查到崩溃。交换机侧,生产网和办公网各连一台独立的隔离交换机,两台交换机之间不互联、不配VLAN Trunk,从服务器网口出来的信号只在各自的交换机域里走,物理隔离的链路才算彻底闭环。
3. 信创环境适配实录:从加载驱动到光模块识别,坑都是一步步踩平的
3.1 驱动加载:离线rpm、编译模块与固件版本
新服务器到了之后,第一个下马威来自操作系统。国产化整机预装的是基于Linux内核的国产OS,版本迭代快,内核从4.19到5.10都有。而那款四光口网卡官方只提供了针对特定内核版本的驱动包,系统内核一更新,驱动模块就加载不上了。机房不能随便联外网,我们只能拿着驱动rpm包在离线环境里装,折腾了大半天。
我的建议是,新设备到货后第一件事,不要把业务系统往上搬,先在一个独立分区或同型号备用机上做驱动验证。确认lspci能看到网卡、ethtool -i能识别驱动版本、modinfo能正常显示模块信息,再进入后续配置。如果厂商驱动只支持某个固定内核版本,就把系统内核锁版本,不随意升级,避免驱动模块和内核不匹配导致网卡消失。
还有一个坑是固件版本。网卡的板载固件如果太旧,即使驱动加载成功,光口也可能无法协商到预期的速率。建议到网卡厂商官网把固件升级到支持列表里的最新版本,升级过程要注意不能断电,否则网卡直接变砖。我们是把所有网卡固件统一升级后,才明显减少了光口的异常掉线。
3.2 光模块兼容矩阵:换一张网卡不如换一个模块
信创环境里最玄学的问题就是光模块兼容性。我们的四光口网卡和交换机分别来自不同生态,网卡的SFP+接口对模块的DDM数字诊断信息支持得不好。最开始几根光纤插上去,交换机端口能起来,但系统日志里反复报模块信息读取失败,端口忽up忽down。查了几天,最后发现问题不在网卡硬件,而在光模块内部的EEPROM存储格式和网卡的读取逻辑不兼容。
摸索出来的解法很简单:成套采购与网卡官方兼容列表里标注的模块型号,不要贪便宜买通用第三方模块。兼容列表没有的型号,即使参数一模一样,也可能在协商、DDM上报、告警阈值这些细节上有偏差。我们后来把生产网和办公网的光模块全部换成兼容列表中的型号,端口瞬间稳定下来,误码率也降到了正常水平。这件事让我长记性:物理层的东西,兼容性是第一位,参数是第二位。
3.3 性能实测:万兆光口在国产平台上的实际吞吐
架构跑通之后,我们做了两轮性能验证。第一轮用iperf3打流,双光口bond主备模式下,单条万兆链路TCP吞吐测到9.4Gbps,CPU占用率在30%左右。第二轮模拟生产业务流量,在隔离的两个网络域分别起测试机打流,两边互不干扰,验证了物理隔离确实能保证故障域和带宽域相互独立。
这里提醒一句,国产OS下有些网卡驱动默认关闭了硬件校验和卸载、多队列功能,吞吐会明显偏低。建议装完驱动后检查ethtool的offload参数,把tx-checksum-ipv4、rx-checksum-ipv4、tcp-segmentation-offload这些开启;多队列方面,把网卡的combined队列数量调到CPU核数对齐,均衡负载会好很多。我们调整前后,小包转发性能提升了接近一倍。
4. 割接实施复盘:准备越充分,切换越像一次普通变更
4.1 割接前的物资与回退方案:把意外当成常态来准备
割接提前两周开始准备。首先是光缆路径规划:从机柜到隔离交换机,我们预放了两根备用光缆,一根走机柜顶部走线架,一根走地板下桥架,目的就是万一正式光缆被意外拉断,还有物理备份通路。每根光缆两端都贴了对应标签,光口编号、业务域、对端交换机的信息全部写清楚,避免半夜割接时还要对着灯光辨认。
回退方案是割接前必须定死的。我们的原则是:所有配置改动用脚本生成并备份,原配置文件和回滚命令直接放在带外管理机里。一旦割接后30分钟内验证不通过,立刻执行回滚命令,把网卡配置和路由表恢复原状。因为物理链路已经放好,回退时只要把服务器网卡配回旧状态、光缆暂时不启用即可,业务侧冲击能降到最低。
4.2 四口bond配置与网络策略的联动细节
割接当天,实际配置比想象中繁琐。四口网卡中生产网两个口配置成一个bond主备,办公网两个口配置成另一个bond主备。用的还是ifcfg文件方式配置BOND_OPTS,mode设为active-backup,miimon设为100毫秒。两个bond接口分别对应不同VLAN和不同网段,IP、网关、路由策略逐一核对,避免路由重叠导致流量走到错误的网络域。
网络策略和防火墙策略也要同步调整。原来混用物理网口时,防火墙策略是在VLAN间做ACL;割接后,生产网和办公网变成完全独立的物理通道,防火墙和隔离交换机的端口策略要按新拓扑重撸一遍。我们用了一整天在测试环境里模拟割接,把所有流量路径从服务器网口到交换机口逐一验证,确认没有出现跨域路由泄漏,才敢在正式窗口里操作。
4.3 验证清单:从链路层到应用层的完整体检
正式割接选在凌晨业务低峰期,整个切换窗口只用了不到20分钟,但验证花了将近两个小时。验证清单我按层级列了四层:
第一层链路层,查看各个光口Link状态,确认生产网和办公网的主备口都亮起来,ethtool里速率协商正确。第二层网络层,ping网关、ping对端、确认路由表和ARP表都正常,分域测了几条业务网段互通。第三层应用层,让业务同事登录核心系统,跑通几个关键交易流程,确认从办公网访问生产网管理通道依然受控。第四层冗余演练,手动把生产网的主用光口拔了,确认流量秒切到备用光口,业务应用的数据包没有明显丢包。
这里有个小心得:拔光口做演练时,要在交换机侧也同步观察端口状态变化,确认链路down和up的告警都正常上报。如果只盯着服务器侧看,可能漏掉交换机端口协商过程中的状态抖动。完整链路都健康,割接才算真正成功。
5. 上线之后的运维复盘:光口网络的维护习惯要重新养
5.1 光口网络最常见的三类故障
物理隔离架构上线后的维护,和原来电口直连的思路完全不一样。最容易出问题的第一类是光口脏污。光纤跳线被拔插过几次后,插芯端面容易附着灰尘,轻微污染会导致光链路误码、端口反复重启。我们后来给每根光纤都配了防尘帽,巡检时至少看一眼跳线插头的状态,发现异常就用光纤清洁笔处理。第二类是光纤过度弯曲,机房走线空间局促,部分跳线弯曲半径小于规范值,光信号衰减明显上升。第三类是光模块老化,模块的工作温度在夏天机房里很容易接近上限,一旦温度告警频繁出现,就要提前更换,不能等到链路崩溃。
5.2 链路告警的排查顺序与工具
光口网络的故障排查,我自己总结了一个顺序:先看服务器侧ethtool端口状态和光模块DDM信息,再看交换机侧的告警日志,最后才去排查光纤链路本身。绝大多数情况下,服务器侧和交换机侧的状态能直接告诉我们问题在哪一端。如果端口能够协商但频繁报误码,优先用光功率计测试收发光值,正常收光一般在-15dBm到-19dBm之间,低于-23dBm基本就该查光纤接头和弯曲点了。
工具方面,除了命令行工具,我们还把光模块的DDM信息纳入了监控系统,定时采集温度、电压、收发光功率并画曲线。这个做法对光模块老化趋势的判断特别有用,有几个模块的发光功率缓慢下降,曲线一出来就提前换了,避免了后期业务中断。
5.3 我们后来做的三项改进
架构稳定运行后,我们又陆续做了三件事,虽然不起眼,但价值不小。第一是把所有光口、光纤、交换机端口的对应关系做成一份动态更新的台账,任何一次跳线变更都在第二天更新文档,避免三个月后没人说得清某根光纤接的是哪个交换机口。第二是在四光口网卡上配置独立的管理网络光口,不对公网暴露,管理员在办公网侧通过带外管理跳板做设备运维,切割了管理面和数据面的风险。第三是把这次割接的整套脚本、验证清单、回退方案沉淀成标准操作手册,后续再有国产化设备替换,直接按这个模板执行,大大缩短了变更准备时间。
光口物理隔离架构这东西,看着简单,就是把四个光口分别规划好,真正落地时涉及的驱动适配、模块兼容、割接验证、后期维护,哪一个环节没做到位都会给业务带来风险。我们这次能在信创窗口期里平稳完成银行网络安全升级,靠的不是某个灵光一现的方案,而是一步步把物理层的细节磨透。把那台老服务器的单电口混跑问题彻底解决的那一刻,我心里只有一句话:物理层的钱和功夫,真的一分都不能省。