1. 项目背景与需求分析
最近接手了一个比较特殊的组网需求:客户现场只有1条ISP外线,却部署了2台防火墙设备,而且整个网络环境中没有接入交换机。这种架构在传统企业网络中确实不太常见,但仔细分析后发现其实反映了当前很多中小企业在网络升级过程中的典型困境。
客户原有的网络拓扑非常简单 - 光猫直接连着一台老式路由器提供基础上网功能。随着业务发展,他们先后采购了两台不同品牌的防火墙(一台华为USG6000系列和一台深信服设备)试图提升安全性,但由于缺乏专业网络工程师的规划,设备只是简单堆砌在那里。现在面临的核心矛盾是:
- 外线资源有限(只有1条宽带)
- 安全设备冗余(2台防火墙形成资源浪费)
- 缺少关键的二层交换设备
这种架构下如果直接连线,要么会出现单点故障,要么会导致网络环路。经过现场勘查,我们确定了几个必须满足的硬性需求:
- 确保两条防火墙都能发挥作用,不出现设备闲置
- 外网接入不能存在单点故障
- 内网各区域间的访问控制必须通过防火墙策略实现
- 未来可能需要扩展无线网络和IP电话系统
2. 解决方案设计思路
针对这种特殊场景,我设计了基于"单臂路由+策略路由"的混合组网方案。这个方案的核心在于利用现有设备实现以下目标:
2.1 网络拓扑规划
[ISP]----[光猫]----[防火墙A]----[核心设备]----[终端] \_[防火墙B]_/这里的关键创新点是:
- 将两台防火墙并行部署在光猫下游,形成双网关架构
- 使用一台多网口服务器临时充当核心交换设备(客户暂不愿采购专业交换机)
- 通过VLAN划分逻辑隔离不同业务区域
2.2 地址规划方案
| 网络区域 | VLAN ID | IP网段 | 网关分配 |
|---|---|---|---|
| 外网接入 | - | 运营商分配 | 光猫192.168.1.1 |
| 防火墙互联 | 10 | 10.0.10.0/30 | 防火墙A:10.0.10.1 |
| 内网业务 | 20 | 192.168.20.0/24 | 防火墙B:192.168.20.1 |
| 管理网络 | 30 | 192.168.30.0/24 | 防火墙A:192.168.30.1 |
这种设计实现了:
- 两台防火墙都有独立的管理通道
- 业务流量可以灵活导向任意防火墙
- 未来扩展只需新增VLAN即可
3. 具体实施步骤
3.1 物理连接部署
光猫配置:
- 关闭光猫自带的DHCP服务
- 将LAN1口设置为桥接模式
- 在LAN2和LAN3口分别连接两台防火墙的WAN口
防火墙基础配置:
# 华为USG6000基础配置示例 sysname FW_A interface GigabitEthernet1/0/1 # 连接光猫 ip address dhcp-alloc service-manage ping permit # interface GigabitEthernet1/0/2 # 连接核心设备 ip address 10.0.10.1 255.255.255.252 # firewall zone untrust add interface GigabitEthernet1/0/1 firewall zone trust add interface GigabitEthernet1/0/2- 临时核心设备配置: 使用安装了pfSense的服务器作为核心设备,关键配置:
- 创建三个VLAN接口(10,20,30)
- 启用DHCP服务为各VLAN分配地址
- 配置策略路由规则
3.2 策略路由实现
核心策略路由配置要点:
基于源地址的流量导向:
- 财务部IP段(192.168.20.100-150)→ 防火墙A
- 其他部门IP段 → 防火墙B
基于应用类型的流量导向:
- HTTP/HTTPS流量 → 防火墙A(部署了WAF功能)
- 其他协议流量 → 防火墙B
在pfSense上的具体实现:
# 创建防火墙别名 cli: add alias name Finance_IPs type network descr "财务部IP范围" \ address 192.168.20.100-192.168.20.150 # 配置策略路由 Web界面:Firewall → Policy Routing → Add Interface: VLAN20 Source: Finance_IPs Gateway: 10.0.10.1 (防火墙A)3.3 高可用性设计
虽然客户没有专业交换机,但我们仍通过以下方式提升可靠性:
网关健康检测: 在pfSense上配置对两个防火墙网关的持续ping检测:
System → Routing → Gateway Groups → Add Name: FW_Group Trigger Level: Packet Loss Members: - 10.0.10.1 (权重10) - 10.0.10.2 (权重5)链路故障切换: 当主用防火墙不可达时,自动将所有流量切换到备用防火墙,切换时间控制在3秒以内。
4. 关键问题与解决方案
4.1 无交换机环境下的ARP问题
在没有专业交换机的环境中,我们遇到了严重的ARP广播风暴问题。解决方案:
- 在pfSense上启用ARP代理功能
- 调整各接口的ARP响应阈值
- 添加静态ARP条目减少广播
# 静态ARP配置示例 arp -s 192.168.20.1 00:11:22:33:44:55 temp4.2 防火墙策略同步难题
由于是异构防火墙环境,策略无法自动同步。我们的解决方法:
- 使用Ansible编写策略同步脚本
- 每周自动对比两台设备的策略差异
- 关键策略采用"主备"模式而非"负载均衡"
# ansible策略同步脚本片段 - name: Sync ACL policies hosts: firewalls tasks: - name: Ensure base policies exist fortimgr_acl: name: "Allow_HTTP_Outbound" action: accept srcintf: "port1" dstintf: "port2" srcaddr: "Finance_Net" dstaddr: "all" service: "HTTP,HTTPS" log: "enable" state: present4.3 性能瓶颈突破
在测试阶段发现当流量超过80Mbps时延迟明显增加。通过以下优化解决:
- 启用防火墙的FastPath功能
- 调整MTU值避免分片
- 关闭不必要的深度包检测功能
5. 运维管理建议
5.1 监控方案
在没有专业网管系统的情况下,我们采用以下监控组合:
- 带宽监控:使用ntopng实现流量分析
- 设备健康:Zabbix基础监控模板
- 日志集中:将两台防火墙日志统一发送到Syslog服务器
5.2 配置备份策略
为防止配置丢失,建议实施以下备份方案:
# 华为防火墙自动备份脚本 #!/bin/bash DATE=$(date +%Y%m%d) /usr/bin/expect << EOF spawn ssh admin@192.168.30.1 expect "password:" send "P@ssw0rd\r" expect ">" send "save backup.cfg\r" expect ">" send "ftp 192.168.30.100\r" expect "Name" send "backupuser\r" expect "Password:" send "B@ckup123\r" expect "ftp>" send "put backup.cfg FW_A_${DATE}.cfg\r" expect "ftp>" send "bye\r" expect ">" send "quit\r" EOF5.3 未来扩展建议
虽然当前方案解决了基本需求,但从长远考虑建议:
- 增加一台二层交换机解决广播域问题
- 考虑采用VXLAN技术实现逻辑组网
- 部署SD-WAN控制器统一管理多线路
这个项目给我的最大启示是:在网络设计中,设备限制往往不是最大的障碍,真正的挑战是如何在有限条件下构建出既满足当前需求又具备扩展性的架构。通过这次实践,我发现即使是看似不合理的设备组合,只要充分理解各设备特性和网络协议本质,总能找到创造性的解决方案。