1. 华为防火墙GRE隧道实战背景
企业多分支机构互联一直是网络架构设计的难点。想象一下,公司总部在北京,研发中心在深圳,两地需要频繁传输设计图纸和代码库。如果直接走公网,数据就像裸奔一样危险;如果租用专线,成本又高得吓人。这时候GRE隧道技术就像给数据穿了件隐身衣,让两个局域网通过公网安全握手。
我在实际项目中帮一家连锁超市部署过这种方案。他们30多家门店需要实时同步库存数据,用华为USG6000系列防火墙配合GRE隧道,每月节省了70%的专线费用。**GRE(Generic Routing Encapsulation)**的本质就是在两个防火墙之间建立虚拟直连通道,把内部网络的IP包原样封装进公网IP包里传输,到达目的地再拆包还原。
为什么选择华为防火墙?三个硬核优势:
- IPSec加密套件:GRE隧道本身不加密,但华为防火墙可以叠加IPSec加密
- 状态检测引擎:能识别GRE隧道内的具体应用流量
- NAT穿越能力:特别适合企业通过普通宽带接入公网的场景
2. eNSP实验环境搭建
2.1 拓扑设计与设备选型
用eNSP模拟这个场景需要以下设备:
- 2台华为防火墙(我用的是USG5500镜像)
- 1台公网路由器(AR2200足够)
- 2台PC模拟内网终端
关键IP规划表:
| 设备 | 接口 | IP地址 | 说明 |
|---|---|---|---|
| FW1 | GE1/0/0 | 192.168.1.254/24 | 内网trust区域 |
| FW1 | GE1/0/1 | 200.1.1.1/24 | 公网untrust区域 |
| FW2 | GE1/0/0 | 200.1.2.2/24 | 公网untrust区域 |
| FW2 | GE1/0/1 | 192.168.2.254/24 | 内网trust区域 |
| R3 | GE0/0/0 | 200.1.2.3/24 | 公网核心路由 |
| R3 | GE0/0/1 | 200.1.1.3/24 | 公网核心路由 |
2.2 基础网络配置
先搞定底层连通性,这是后面所有配置的基础。在FW1上:
bash复制[FW1] interface GigabitEthernet1/0/0
[FW1-GigabitEthernet1/0/0] ip address 192.168.1.254 24
[FW1-GigabitEthernet1/0/0] quit
[FW1] interface GigabitEthernet1/0/1
[FW1-GigabitEthernet1/0/1] ip address 200.1.1.1 24
[FW1-GigabitEthernet1/0/1] quit
配置OSPF让公网路由可达:
bash复制[FW1] ospf 1
[FW1-ospf-1] area 0
[FW1-ospf-1-area-0.0.0.0] network 200.1.1.1 0.0.0.0
记得在R3上要配置双向路由:
bash复制[R3] ospf 1
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 200.1.1.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0] network 200.1.2.3 0.0.0.0
3. GRE隧道核心配置
3.1 隧道接口创建
在FW1上创建Tunnel接口时有个坑要注意:华为防火墙默认Tunnel接口是三层模式,不需要像路由器那样指定端口类型。
bash复制[FW1] interface Tunnel 0
[FW1-Tunnel0] ip address 1.1.1.1 24 # 这个地址只是隧道两端通信用
[FW1-Tunnel0] tunnel-protocol gre
[FW1-Tunnel0] source 200.1.1.1 # 本地公网接口IP
[FW1-Tunnel0] destination 200.1.2.2 # 对端公网IP
[FW1-Tunnel0] quit
3.2 安全区域划分
华为防火墙的安全区域是策略调度的核心。建议把Tunnel接口单独放在DMZ区:
bash复制[FW1] firewall zone dmz
[FW1-zone-dmz] add interface Tunnel 0
[FW1-zone-dmz] quit
[FW1] firewall zone trust
[FW1-zone-trust] add interface GigabitEthernet1/0/0
[FW1-zone-trust] quit
[FW1] firewall zone untrust
[FW1-zone-untrust] add interface GigabitEthernet1/0/1
3.3 静态路由指向
告诉防火墙哪些流量要走隧道:
bash复制[FW1] ip route-static 192.168.2.0 255.255.255.0 Tunnel 0
这个配置的深层逻辑是:当防火墙发现目的地址是192.168.2.0/24的流量时,会通过Tunnel0接口发出,触发GRE封装。
4. 安全策略精细控制
4.1 GRE流量放行策略
防火墙默认拒绝所有流量,必须显式放行GRE协议。这里有个关键点:GRE封装包是从untrust到local区域的:
bash复制[FW1] security-policy
[FW1-policy-security] rule name permit_gre
[FW1-policy-security-rule-permit_gre] source-zone untrust
[FW1-policy-security-rule-permit_gre] destination-zone local
[FW1-policy-security-rule-permit_gre] source-address 200.1.2.2 32
[FW1-policy-security-rule-permit_gre] destination-address 200.1.1.1 32
[FW1-policy-security-rule-permit_gre] service gre
[FW1-policy-security-rule-permit_gre] action permit
4.2 内网互通策略
隧道建立后还要允许业务流量穿过:
bash复制[FW1-policy-security] rule name trust_to_dmz
[FW1-policy-security-rule-trust_to_dmz] source-zone trust
[FW1-policy-security-rule-trust_to_dmz] destination-zone dmz
[FW1-policy-security-rule-trust_to_dmz] source-address 192.168.1.0 24
[FW1-policy-security-rule-trust_to_dmz] destination-address 192.168.2.0 24
[FW1-policy-security-rule-trust_to_dmz] service any # 实际生产环境要细化
[FW1-policy-security-rule-trust_to_dmz] action permit
5. 故障排查与优化
5.1 连通性测试
从PC1(192.168.1.1) ping PC2(192.168.2.1)时,建议按这个顺序排查:
- 检查本地防火墙接口状态:
display interface brief - 查看GRE隧道状态:
display interface Tunnel 0 - 验证路由表:
display routing-table - 检查安全策略命中:
display security-policy hit-count
5.2 性能优化技巧
在大型网络中可以考虑:
- 开启MTU调整:
[FW1-Tunnel0] mtu 1400 - 配置QoS策略保证关键业务:
bash复制
traffic classifier voip if-match dscp ef traffic behavior voip priority ef
6. 生产环境增强方案
基础GRE隧道存在被嗅探的风险,建议叠加IPSec加密:
bash复制[FW1] ipsec proposal GRE_IPSEC
[FW1-ipsec-proposal-GRE_IPSEC] esp encryption-algorithm aes-256
[FW1-ipsec-proposal-GRE_IPSEC] esp authentication-algorithm sha2-256
[FW1] ipsec policy GRE_POLICY 1 isakmp
[FW1-ipsec-policy-GRE_POLICY-1] ike-peer BRANCH
[FW1-ipsec-policy-GRE_POLICY-1] proposal GRE_IPSEC
[FW1] interface Tunnel 0
[FW1-Tunnel0] ipsec policy GRE_POLICY
我在金融客户现场实测过,AES-256加密后吞吐量会下降约15%,但延迟增加不超过5ms。对于大多数企业应用,这个代价完全值得。