强叔最近开始在“侃墙”系列连载VPN了,许多小伙伴们看后大呼不过瘾,希望强叔能加快更新速度。但强叔也不是三头六臂,也需要一笔一笔来写啊。为了满足小伙伴们对VPN的浓厚学习兴趣,强叔就先给大家带来一篇很实用的L2TP over IPSec的案例,算是让大家先预热下L2TP与IPSec的综合使用。而且本案例还可以指导各位小伙伴在出差时使用安卓或苹果手机通过VPN接入总部,进行安全、高效的移动办公。
——————————————————下面大家就一起来赏析此案例吧~ ——————————————————————
【组网需求】
如图下所示,公司通过USG5500(V3R1版本)连接Internet。公司希望出差员工能够使用手机(3G/4G)接入公司内部网络,实现安全、高效的移动办公。
【强叔规划】
USG5500 V3R1版本支持三种安全的远程接入方式:SSL VPN、EAP认证方式的IPSec VPN和L2TP over IPSec(仅仅L2TP是不安全的,加上IPSec就安全了)。由于一般手机不能很好地支持SSL VPN和EAP认证,所以本案例选择的是手机普遍支持的L2TP over IPSec。
L2TP over IPSec的主要配置思路如下:
1、 在USG上配置L2TP功能。这里的L2TP配置与普通的L2TP配置并无差别。
2、 在USG上配置IPSec功能。这里需要注意两点:一是在定义要保护的数据流时只需匹配1701端口(L2TP协议报文的端口)即可;二是由于手机是通过3G/4G方式接入Internet,IP地址不固定,所以需要在USG上配置模板方式的IPSec。
3、 在手机上配置L2TP over IPSec。需要注意的是手机上的VPN参数需要与USG上的保持一致。这点会在后面详细说明。
由于本案例L2TP over IPSec参数众多,而且要求服务器端(USG)与客户端(手机)的参数保持一致,因此我们在开始配置前很有必要将这些参数都规划好并列举出来。需要注意的是iPhone和Android的界面参数略有不同。
PS:以下参数均经过强叔实测,小伙伴们可以直接使用。
项目 | 数据 | 说明 | |
USG | L2TP |
| USG的iPhone帐户的“用户名”和“密码”需要与iPhone的“帐户”和“密码”保持一致。 USG的Android帐户的“用户名”和“密码”需要与Android手机连接VPN时的“用户名”和“密码”保持一致。 |
IKE安全提议 |
| - | |
IKE对等体 |
| USG的“预共享密钥认证字”需要与iPhone的“密钥”、 Android手机的“IPsec预共享密钥”保持一致。 | |
IPSec安全提议 |
| - | |
iPhone手机 | VPN |
| 服务器的地址是USG的建立IPSec隧道的接口IP地址。 |
Android手机 | VPN | 编辑VPN网络
连接到l2tp over ipsec
| 服务器的地址是USG的建立IPSec隧道的接口IP地址。 |
【配置步骤】
1、 配置USG的L2TP功能。
1)开启L2TP功能。
[USG] l2tp enable
2)配置本地用户名和密码,用于手机VPN拨号时认证。配置IP地址池,为手机分配内网IP地址。
[USG] aaa
[USG-aaa] local-user iphone password cipher abcd1234!
[USG-aaa] local-user android password cipher abcd2345!
[USG-aaa] ip pool 1 10.0.0.1 10.0.0.50
[USG-aaa] quit
【强叔点评】本案例中只举例创建了两个帐号,如果有多个用户则需要创建多个帐号。
本案例的地址池中的IP地址与现有公司内网IP地址不在同一网段。如果希望在同一网段,则需要配置L2TP虚拟转发功能和ARP代理功能。
3)配置虚拟接口模板,并将虚拟接口模板加入trust区域。
[USG] interface Virtual-Template 1
[USG-Virtual-Template1] ip address 1.1.1.1 24
[USG-Virtual-Template1] ppp authentication-mode chap
[USG-Virtual-Template1] remote address pool 1
[USG-Virtual-Template1] quit
[USG] firewall zone trust
[USG-zone-trust] add interface Virtual-Template 1
[USG-zone-trust] quit
【强叔点评】 虚拟接口模板的IP地址可以任意配置,只要不与已存在的IP地址冲突即可。
此处指定的地址池号必须是AAA视图下已有的地址池,否则USG无法为客户端分配IP地址。
4)创建并配置L2TP组。
[USG] l2tp-group 1
[USG-l2tp1] undo tunnel authentication
[USG-l2tp1] allow l2tp virtual-template 1
[USG-l2tp1] quit
【强叔点评】这里建议使用L2TP组1(l2tp-group 1),因为L2TP组1可以不指定隧道对端名称,即不需要知道手机的设备名称。
2、 配置USG的IPSec功能。
1)定义要保护的数据流。
[USG] acl 3100
[USG-acl-adv-3100] rule 5 permit udp source-port eq 1701
[USG-acl-adv-3100] quit
【强叔点评】IPSec需要保护L2TP封装后的报文,L2TP报文的端口号为1701。
2)配置IKE安全提议。
[USG] ike proposal 1
[USG-ike-proposal-1] encryption-algorithm aes-cbc
[USG-ike-proposal-1] dh group2
[USG-ike-proposal-1] quit
3)配置IKE对等体,预共享密钥为abc123。
[USG] ike peer b1
[USG-ike-peer-b1] ike-proposal 1
[USG-ike-peer-b1] pre-shared-key abc123
[USG-ike-peer-b1] quit
4)配置IPSec安全提议。
[USG] ipsec proposal a1
[USG-ipsec-proposal-a1] encapsulation-mode transport
[USG-ipsec-proposal-a1] esp authentication-algorithm sha1
[USG-ipsec-proposal-a1] esp encryption-algorithm aes
[USG-ipsec-proposal-a1] quit
5)配置IPSec安全策略模板。
[USG] ipsec policy-template temp 1
[USG-ipsec-policy-templet-temp-1] security acl 3100
[USG-ipsec-policy-templet-temp-1] proposal a1
[USG-ipsec-policy-templet-temp-1] ike-peer b1
[USG-ipsec-policy-templet-temp-1] quit
6)创建IPSec安全策略并引用安全策略模板。
[USG] ipsec policy d1 1 isakmp template temp
7)在接口上应用IPSec安全策略。
[USG] interface GigabitEthernet 0/0/1
[USG-GigabitEthernet0/0/1] ipsec policy d1
3、 在iPhone上配置VPN(本文以iPhone 4S的iOS 5.1版本为例)。
配置iPhone前,请确认iPhone能够正常访问Internet(通过3G或通过无线局域网)。
1)在iPhone上选择“设置 > 通用 > 网络 > VPN”。
2)单击“添加VPN配置”。
3)按照下图输入参数。
【强叔点评】
l iPhone的“服务器”需要与USG的公网IP地址保持一致。本例中即为USG的GigabitEthernet0/0/1接口的IP地址。
l iPhone的“帐户”和“密码”需要与USG的AAA视图下配置的本地用户的“用户名”和“密码”保持一致。
l iPhone的“密钥”需要与USG的“预共享密钥”保持一致。
4)单击“存储”。
5)选中配置的VPN后,启用VPN,如下图所示。
4、 在Android上配置VPN(本文以Android4.0版本为例)。
配置Android手机前,请确认Android手机能够正常访问Internet(通过3G或通过无线局域网)。
1)在Android手机上选择“设定 > 无线和网络 > 更多设定 > VPN”。
2)在弹出的对话框中单击“确定”。
3)选择“密码”,在文本框中输入密码后,单击“继续”。
【强叔点评】此密码为手机的屏幕锁定密码。如果您之前设定了屏幕锁定密码,则不会弹出对话框。
4)重新输入密码后,单击“继续”。
5)单击“添加VPN网络”。
6)参考下图输入参数。
【强叔点评】
l “服务器地址”需要与USG的公网接口IP地址保持一致。本例中即为USG的GigabitEthernet0/0/1接口的IP地址。
l “IPsec预密钥”需要与USG的“预共享密钥”保持一致。
7)单击“储存”。
8)单击以上配置的“l2tp over ipsec”。
9)参考下图输入参数。
【强叔点评】“用户名”和“密码”需要与USG的AAA视图下配置的L2TP的“用户名”和“密码”保持一致。
10)单击“连接”。
【强叔验证】
1、在USG上查看结果。
1)执行命令display l2tp tunnel,可看到隧道建立成功。
[USG] display l2tp tunnel
Total tunnel = 1
LocalTID RemoteTID RemoteAddress Port Sessions RemoteName
1 2 219.141.159.58 52032 1 LHW
2)执行命令display l2tp session,可看到会话连接建立成功。
[USG] display l2tp session
Total session = 1
LocalSID RemoteSID LocalTID
1 330 1
3)执行命令display ike sa,可看到IKE SA建立成功。
[USG] display ike sa
current ike sa number: 2
-----------------------------------------------------------------------------
conn-id peer flag phase vpn
-----------------------------------------------------------------------------
40004 219.141.159.58 RD v1:2 public
40003 219.141.159.58 RD v1:1 public
flag meaning
RD--READY ST--STAYALIVE RL--REPLACED FD--FADING
TO--TIMEOUT TD--DELETING NEG--NEGOTIATING D—DPD
4)执行命令display ipsec sa,可看到IPSec SA建立成功。
[USG] display ipsec sa
===============================
Interface: GigabitEthernet0/0/1
path MTU: 1500
===============================
-----------------------------
IPsec policy name: "d1"
sequence number: 1
mode: template
vpn: public
-----------------------------
connection id: 40004
rule number: 4294967295
encapsulation mode: transport
holding time: 0d 0h 1m 30s
tunnel local : 218.17.167.149 tunnel remote: 219.141.159.58
flow source: 218.17.167.149/255.255.255.255 17/1701
flow destination: 219.141.159.58/255.255.255.255 17/64528
[inbound ESP SAs]
spi: 2168422603 (0x813f80cb)
vpn: public said: 2 cpuid: 0x0000
proposal: ESP-ENCRYPT-AES ESP-AUTH-SHA1
sa remaining key duration (bytes/sec): 1887432278/3510
max received sequence-number: 51
udp encapsulation used for nat traversal: Y
[outbound ESP SAs]
spi: 73673897 (0x4642ca9)
vpn: public said: 3 cpuid: 0x0000
proposal: ESP-ENCRYPT-AES ESP-AUTH-SHA1
sa remaining key duration (bytes/sec): 1887435335/3510
max sent sequence-number: 29
udp encapsulation used for nat traversal: Y
2、在手机上查看结果。
l 在iPhone手机上查看结果
1)在iPhone上选择“设置 > 通用 > 网络 > VPN”,可以看到VPN的“状态”显示为“已连接”。
2)在iPhone上能够访问公司的内部网络。
l 在Android手机上查看结果
1)在Android手机上选择“设定 > 无线和网络 > 更多设定 > VPN”,可以看到“l2tp over ipsec”下显示“已连接”。
2)在Android手机上能够访问公司的内部网络。
【拍案惊奇】
1、此案例的惊奇之处在于既介绍了L2TP及IPSec的配置方法,又介绍了L2TP与IPSec如何配合使用。
2、此案例的另一惊奇之处在于介绍了 iPhone 和安卓两种手机的 L2TP over IPSec 配置方法。