组网需求
如图1-1所示总部和分支网关分别通过NGFW和AR设备接入Internet现企业需要在NGFW和AR之间建立IPSec隧道实现分支和总部内网互通。
图1-1 NGFW以策略方式与AR建立IPSec隧道
配置项 | NGFW | AR | |
设备信息 | l 设备型号USG6330 l 软件版本V100R001C30 | l 设备型号AR2220 l 软件版本V200R005C20 | |
IPSec策略建立方式 | 策略方式 | 策略方式 | |
IPSec安全提议 | 封装模式 | 隧道模式 | 隧道模式 |
安全协议 | ESP | ESP | |
ESP协议验证算法 | SHA2-256 | SHA2-256 | |
ESP协议加密算法 | AES-128 | AES-128 | |
DH Group | GROUP2 | GROUP2 | |
IKE对等体 | 协商模式 | 主模式 | 主模式 |
加密算法 | AES-128 | AES-128 | |
认证算法 | SHA2-256 | SHA2-256 | |
预共享密钥 | Key123 | Key123 | |
身份类型 | IP地址 | IP地址 | |
版本 | V1 | V1 |
操作步骤
步骤 1 配置NGFW。
1. 配置接口IP地址并将接口加入安全区域。
[NGFW] interface GigabitEthernet 1/0/1
[NGFW-GigabitEthernet1/0/1] ip address 10.1.1.1 24
[NGFW-GigabitEthernet1/0/1] quit
[NGFW] interface GigabitEthernet 1/0/2
[NGFW-GigabitEthernet1/0/2] ip address 1.1.3.1 24
[NGFW-GigabitEthernet1/0/2] quit
[NGFW] firewall zone trust
[NGFW-zone-trust] add interface GigabitEthernet 1/0/1
[NGFW-zone-trust] quit
[NGFW] firewall zone untrust
[NGFW-zone-untrust] add interface GigabitEthernet 1/0/2
[NGFW-zone-untrust] quit
2. 配置NGFW到Internet的缺省路由假设下一跳为1.1.3.2。
[NGFW] ip route-static 0.0.0.0 0.0.0.0 1.1.3.2
3. 配置域间安全策略。
a. 配置Trust域与Untrust域的安全策略允许IPSec封装前和解封装后的原始报文能通过NGFW。
[NGFW] security-policy
[NGFW-policy-security] rule name 1
[NGFW-policy-security-rule-1] source-zone untrust
[NGFW-policy-security-rule-1] destination-zone trust
[NGFW-policy-security-rule-1] source-address 10.1.3.0 24
[NGFW-policy-security-rule-1] destination-address 10.1.1.0 24
[NGFW-policy-security-rule-1] action permit
[NGFW-policy-security-rule-1] quit
[NGFW-policy-security] rule name 2
[NGFW-policy-security-rule-2] source-zone trust
[NGFW-policy-security-rule-2] destination-zone untrust
[NGFW-policy-security-rule-2] source-address 10.1.1.0 24
[NGFW-policy-security-rule-2] destination-address 10.1.3.0 24
[NGFW-policy-security-rule-2] action permit
[NGFW-policy-security-rule-2] quit
b. 配置Local域与Untrust域的安全策略允许IKE协商报文能正常通过NGFW。
[NGFW-policy-security] rule name 3
[NGFW-policy-security-rule-3] source-zone local
[NGFW-policy-security-rule-3] destination-zone untrust
[NGFW-policy-security-rule-3] source-address 1.1.3.1 32
[NGFW-policy-security-rule-3] destination-address 1.1.5.1 32
[NGFW-policy-security-rule-3] action permit
[NGFW-policy-security-rule-3] quit
[NGFW-policy-security] rule name 4
[NGFW-policy-security-rule-4] source-zone untrust
[NGFW-policy-security-rule-4] destination-zone local
[NGFW-policy-security-rule-4] source-address 1.1.5.1 32
[NGFW-policy-security-rule-4] destination-address 1.1.3.1 32
[NGFW-policy-security-rule-4] action permit
[NGFW-policy-security-rule-4] quit
4. 配置IPSec策略。
a. 配置访问控制列表定义需要保护的数据流。
[NGFW] acl 3000
[NGFW-acl-adv-3000] rule permit ip source 10.1.1.0 0.0.0.255 destination 10.1.3.0 0.0.0.255
[NGFW-acl-adv-3000] quit
b. 配置IPSec安全提议。
[NGFW] ipsec proposal tran1
[NGFW-ipsec-proposal-tran1] transform esp
[NGFW-ipsec-proposal-tran1] encapsulation-mode tunnel
[NGFW-ipsec-proposal-tran1] esp authentication-algorithm sha2-256
[NGFW-ipsec-proposal-tran1] esp encryption-algorithm aes-128
[NGFW-ipsec-proposal-tran1] quit
c. 创建IKE安全提议。
[NGFW] ike proposal 1
[NGFW-ike-proposal-1] encryption-algorithm aes-128
[NGFW-ike-proposal-1] authentication-algorithm sha2-256
[NGFW-ike-proposal-1] dh group2
[NGFW-ike-proposal-1] quit
d. 配置IKE对等体。
[NGFW] ike peer ar
[NGFW-ike-peer-ar] undo version 2
[NGFW-ike-peer-ar] exchange-mode main
[NGFW-ike-peer-ar] ike-proposal 1
[NGFW-ike-peer-ar] pre-shared-key Key123
[NGFW-ike-peer-ar] remote-address 1.1.5.1
[NGFW-ike-peer-ar] quit
e. 配置isakmp方式的IPSec策略。
[NGFW] ipsec policy map1 1 isakmp
[NGFW-ipsec-policy-isakmp-map1-1] ike-peer ar
[NGFW-ipsec-policy-isakmp-map1-1] proposal tran1
[NGFW-ipsec-policy-isakmp-map1-1] security acl 3000
[NGFW-ipsec-policy-isakmp-map1-1] quit
f. 在接口GigabitEthernet 1/0/2上应用IPSec策略。
[NGFW] interface GigabitEthernet 1/0/2
[NGFW-GigabitEthernet1/0/2] ipsec policy map1
[NGFW-GigabitEthernet1/0/2] quit
步骤 2 配置AR设备。
1. 配置AR接口的IP地址。
<Huawei> system-view
[Huawei] sysname AR
[AR] interface GigabitEthernet 0/0/1
[AR-GigabitEthernet0/0/1] ip address 10.1.3.1 24
[AR-GigabitEthernet0/0/1] quit
[AR] interface GigabitEthernet 0/0/2
[AR-GigabitEthernet0/0/2] ip address 1.1.5.1 24
[AR-GigabitEthernet0/0/2] quit
2. 配置AR连接到Internet的缺省路由假设下一跳地址为1.1.5.2。
[AR] ip route-static 0.0.0.0 0.0.0.0 1.1.5.2
3. 配置IPSec策略。
a. 配置访问控制列表定义需要保护的数据流。
[AR] acl 3000
[AR-acl-adv-3000] rule permit ip source 10.1.3.0 0.0.0.255 destination 10.1.1.0 0.0.0.255
[AR-acl-adv-3000] quit
b. 配置IPSec安全提议。
[AR] ipsec proposal tran1
[AR-ipsec-proposal-tran1] transform esp
[AR-ipsec-proposal-tran1] encapsulation-mode tunnel
[AR-ipsec-proposal-tran1] esp authentication-algorithm sha2-256
[AR-ipsec-proposal-tran1] esp encryption-algorithm aes-128
[AR-ipsec-proposal-tran1] quit
c. 创建IKE安全提议。
[AR] ike proposal 1
[AR-ike-proposal-1] encryption-algorithm aes-cbc-128
[AR-ike-proposal-1] authentication-algorithm sha2-256
[AR-ike-proposal-1] dh group2
[AR-ike-proposal-1] quit
d. 配置IKE对等体。
[AR] ike peer ngfw v1 /*参数v1表示IKE使用v1版本进行IKE协商。/
[AR-ike-peer-ngfw] exchange-mode main
[AR-ike-peer-ngfw] ike-proposal 1
[AR-ike-peer-ngfw] pre-shared-key cipher Key123
[AR-ike-peer-ngfw] remote-address 1.1.3.1
[AR-ike-peer-ngfw] quit
e. 配置isakmp方式的IPSec策略。
[AR] ipsec policy map1 1 isakmp
[AR-ipsec-policy-isakmp-map1-1] ike-peer ngfw
[AR-ipsec-policy-isakmp-map1-1] proposal tran1
[AR-ipsec-policy-isakmp-map1-1] security acl 3000
[AR-ipsec-policy-isakmp-map1-1] quit
f. 在接口GigabitEthernet 0/0/2上应用IPSec策略。
[AR] interface GigabitEthernet 0/0/2
[AR-GigabitEthernet0/0/2] ipsec policy map1
[AR-GigabitEthernet0/0/2] quit
----结束
结果验证
1. 配置完成后使用分支下的用户Ping总部下的用户。
2. 正常情况下分支访问总部的数据流将会触发两台网关之间建立IPSec隧道。此处在NGFW上查看IKE SA的建立情况可以看到IKE SA已经建立成功。
<NGFW> display ike sa
15:53:30 2015/12/26
current ike sa number: 2
--------------------------------------------------------------------------------
------------------
conn-id peer flag phase vpn
--------------------------------------------------------------------------------
------------------
179 1.1.5.1 RD|ST|A v1:2 public
178 1.1.5.1 RD|ST|D|A v1:1 public
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING TO--TIMEOUT
TD--DELETING NEG--NEGOTIATING D--DPD M--ACTIVE S--STANDBY
A--ALONE
3. 使用display ipsec sa命令查看IPSec的建立情况可以看到IPSec SA也已建立成功。
<NGFW> display ipsec sa
15:53:53 2015/12/26
===============================
Interface: GigabitEthernet1/0/2
path MTU: 1500
===============================
-----------------------------
IPsec policy name: "map1"
sequence number: 1
mode: isakmp
vpn: public
-----------------------------
connection id: 179
rule number: 5
encapsulation mode: tunnel
holding time: 0d 0h 1m 53s
tunnel local : 1.1.3.1 tunnel remote: 1.1.5.1
flow source: 10.1.1.0/255.255.255.0 0/0
flow destination: 10.1.3.0/255.255.255.0 0/0
[inbound ESP SAs]
spi: 112877185 (0x6ba5e81)
vpn: public said: 36 cpuid: 0x0000
proposal: ESP-ENCRYPT-AES ESP-AUTH-SHA2-256
sa remaining key duration (kilobytes/sec): 1843199/3487
max received sequence-number: 17
udp encapsulation used for nat traversal: N
[outbound ESP SAs]
spi: 1572321462 (0x5db7b8b6)
vpn: public said: 37 cpuid: 0x0000
proposal: ESP-ENCRYPT-AES ESP-AUTH-SHA2-256
sa remaining key duration (kilobytes/sec): 1843199/3487
max sent sequence-number: 18
udp encapsulation used for nat traversal: N
虽然隧道建立成功了但是我们如何判断业务流量是经过IPSec隧道传输呢这个验证办法有多种这里强叔介绍其中两种办法供大家参考。
l 方法1查看display ipsec sa命令回显信息中max sent sequence-number字段的值。这个字段原本是为防重放功能设计的设备的IPSec隧道每发出一个报文这里的sequence-number就相应加1。这样一来我们就可以利用该字段值的变化来判断流量是否经过这条IPSec隧道传输了。例如分支用户向总部用户发送了5个ICMP报文如果这5个ICMP报文是经过这条IPSec隧道传输的那么对应这条隧道的IPSec SA中sequence-number的值将会增加5。反之如果这里sequence-number的值没有增长或者增长数目不对则说明这些报文没有经过这条IPSec隧道传输或者是这条IPSec隧道有异常。
l 方法2查看display ipsec statistics的统计信息。通过此命令中input/output security packets字段值的变化也可以查看报文是否经过IPSec隧道传输。例如下面input/output security packets字段表明IPSec隧道发出去了3个报文也收到了3个报文。
<NGFW> display ipsec statistics
15:54:21 2015/12/26
the security packet statistics:
input/output security packets: 3/3
input/output security bytes: 252/252
input/output dropped security packets: 0/0
the encrypt packet statistics
send sae:3, recv sae:3, send err:0
local cpu:3, other cpu:0, recv other cpu:0
intact packet:2, first slice:0, after slice:0
the decrypt packet statistics
send sae:3, recv sae:3, send err:0
local cpu:0, other cpu:0, recv other cpu:0
reass first slice:0, after slice:0, len err:0
....
触发建立IPSec隧道的首个业务报文不会进入隧道封装会被丢弃掉。这是因为首包发出时隧道还未建立无法进行转发。例如分支用户向总部用户发送了10个ICMP报文实际使用display ipsec statistics命令查看时统计信息中可能显示只有9个报文这属于正常情况。
这两种方法虽然都可以查看隧道中报文的变化但是第一种方法可以观察到指定隧道的报文变化而第二种方法是全局性的统计信息观察的是整个设备的IPSec隧道报文变化。如果设备同时存在多条隧道则第二种方法就不太适用了所以推荐使用第一种办法查看。
IPSec隧道故障定位办法
对于初次搭建IPSec隧道的小伙伴来讲如果能一次性搭建成功那就是万事大吉。然而现实并非如此由于IPSec的配置参数和步骤较多遇到配置完成但隧道建立不起来的情况也是常有的事。那如何定位故障的发生位置呢这里强叔就给大家介绍一下使用Debugging命令快速定位问题的办法。
1. 打开Debugging开关。
<NGFW> terminal monitor
15:43:17 2015/12/26
Info: Current terminal monitor is on
<NGFW> terminal debugging
15:43:20 2015/12/26
Info: Current terminal debugging is on
<NGFW> debugging ike error
15:43:27 2015/12/26
这里需要注意开启IKE调测开关的时候选择ike表示针对v1版本的隧道协商进行调测选择ikev2表示针对ikev2的隧道协商进行调测。我们需要根据实际隧道中配置的IKE版本来选取这里的参数。另外这里调测开关选择error就可以了可以先不使用all参数这样做的目的是防止设备打印IPSec调测信息较多产生干扰信息。
2. 使用Ping命令触发隧道协商观察设备的调测信息。例如设备提示如下信息则表明问题发生在IKE协商的第一阶段且原因是IKE的安全提议不匹配。这个时候就需要比对两台网关上的IKE提议确保安全提议一致才行。
2015-12-26 15:47:03 NGFW %IKE/4/WARNING(l): phase1: proposal mismatch, please check ike proposal configuration.
3. 使用Ping命令触发隧道协商观察设备的调测信息。如果设备提示如下信息则表明问题发生在IPSec协商的第二阶段且原因是ACL不匹配。这个时候就需要比对两台网关上的ACL正确的配置是这里两台网关上的ACL必须是镜像配置才行。
2015-12-26 15:49:59 NGFW %IKE/4/WARNING(l): phase2: security acl mismatch.