企业多分支机构互联一直是网络架构设计的难点。想象一下,公司总部在北京,研发中心在深圳,两地需要频繁传输设计图纸和代码库。如果直接走公网,数据就像裸奔一样危险;如果租用专线,成本又高得吓人。这时候GRE隧道技术就像给数据穿了件隐身衣,让两个局域网通过公网安全握手。
我在实际项目中帮一家连锁超市部署过这种方案。他们30多家门店需要实时同步库存数据,用华为USG6000系列防火墙配合GRE隧道,每月节省了70%的专线费用。**GRE(Generic Routing Encapsulation)**的本质就是在两个防火墙之间建立虚拟直连通道,把内部网络的IP包原样封装进公网IP包里传输,到达目的地再拆包还原。
为什么选择华为防火墙?三个硬核优势:
用eNSP模拟这个场景需要以下设备:
关键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 | 公网核心路由 |
先搞定底层连通性,这是后面所有配置的基础。在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
在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
华为防火墙的安全区域是策略调度的核心。建议把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
告诉防火墙哪些流量要走隧道:
bash复制[FW1] ip route-static 192.168.2.0 255.255.255.0 Tunnel 0
这个配置的深层逻辑是:当防火墙发现目的地址是192.168.2.0/24的流量时,会通过Tunnel0接口发出,触发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
隧道建立后还要允许业务流量穿过:
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
从PC1(192.168.1.1) ping PC2(192.168.2.1)时,建议按这个顺序排查:
display interface briefdisplay interface Tunnel 0display routing-tabledisplay security-policy hit-count在大型网络中可以考虑:
[FW1-Tunnel0] mtu 1400bash复制traffic classifier voip
if-match dscp ef
traffic behavior voip
priority ef
基础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。对于大多数企业应用,这个代价完全值得。