网络上关于vpn的原理的文章很多,这里就不再罗嗦了。
下面是我最近做vpn实验的小结:
(一)vpn access server的配置
实验网络拓扑:
pc(vpn client 4.01)---switch---router1720 (vpn access server)
pc配置:
ip:10.130.23.242/28
gw:10.130.23.246
1720接口ip:
f0:10.130.23.246/28
lo0:172.16.1.1/24
1720的ios为c1700-k93sy7-mz.122-8.T5.bin
步骤:
1、配置isakmp policy:
crypto isakmp policy 1
encr 3des
authen pre-share
group 2
2、配置vpn client地址池
cry isa client conf address-pool local pool192
ip local pool pool192 192.168.1.1 192.168.1.254
3、配置vpn client有关参数
cry isa client conf group vclient-group
####vclient-group就是在vpn client的连接配置中需要输入的group authentication name。
key vclient-key
####vclient-key就是在vpn client的连接配置中需要输入的group authentication password。
pool pool192 ####client的ip地址从这里选取
####以上两个参数必须配置,其他参数还包括domain、dns、wins等,根据情况进行配置。
4、配置ipsec transform-set
cry ipsec trans vclient-tfs esp-3des esp-sha-hmac
5、配置map模板
cry dynamic-map template-map 1
set transform-set vclient-tfs ####和第四步对应
6、配置vpnmap
cry map vpnmap 1 ipsec-isakmp dynamic template-map
#### 使用第?*脚渲玫?map 模板
cry map vpnmap isakmp author list vclient-group ####使用第三步配置的参数authorization
cry map vpnmap client conf address respond ####响应client分配地址的请求
7、配置静态路由
ip route 192.168.1.0 255.255.255.0 fastethernet0
说明几点:
(1)因为1720只有一个fastethernet口,所以用router1720上的lo0地址来模拟router内部网络。
(2)vpn client使用的ip pool地址不能与router内部网络ip地址重叠。
(3)10.130.23.0网段模拟公网地址,172.16.1.0网段用于1720内部地址,192.168.1.0网段用于vpn通道。
(4)没有找到设置vpn client获取的子网掩码的办法。看来是ios还不支持这个功能。
(5)关于split tunnel。配置方法:首先,设置access 133 permit ip 172.16.1.0 0.0.0.255 any,允许1720本地网络数据通过tunnel,然后在第三步骤中添加一个参数:acl 133。
1720的完整配置:
VPN1720#sh run
Building configuration...
Current configuration : 1321 bytes
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname VPN1720
!
enable secret 5 $1$aNmA$b0AqzlCr3MfM5XU0IAmED.
!
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
ip subnet-zero
!
!
no ip domain-lookup
!
ip audit notify log
ip audit po max-events 100
!
crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
crypto isakmp client configuration address-pool local pool192
!
crypto isakmp client configuration group vclient-group
key vclient-key
domain test.com
pool pool192
!
!
crypto ipsec transform-set vclient-tfs esp-3des esp-sha-hmac
!
crypto dynamic-map template-map 1
set transform-set vclient-tfs
!
!
crypto map vpnmap isakmp authorization list vclient-group
crypto map vpnmap client configuration address respond
crypto map vpnmap 1 ipsec-isakmp dynamic template-map
!
!
!
!
interface Loopback0
ip address 172.16.1.1 255.255.255.240
!
interface FastEthernet0
ip address 10.130.23.246 255.255.255.240
speed auto
crypto map vpnmap
!
interface Serial0
no ip address
shutdown
!
ip local pool pool192 192.168.1.1 192.168.1.254
ip classless
ip route 192.168.1.0 255.255.255.0 FastEthernet0
no ip http server
ip pim bidir-enable
!
!
!
!
line con 0
line aux 0
line vty 0 4
!
no scheduler allocate
end
VPN Client 4.01的配置:
新建一个connection entry,参数中name任意起一个,host填入vpn access server的f0地址10.130.23.246,
group auahentication中name填vclient-group,password填vclient-key.
测试:
(1)在pc上运行VPN client,连接vpn access server。
(2)ipconfig/all,查看获取到的ip地址与其他参数。
(3)在router,show cry isa sa,看连接是否成功。
(4)从router,ping client已经获取到的ip地址,通过。
(5)从client,ping router的lo0配置的地址172.16.1.1,通过。
(6)查看vpn client软件的status--statistics,可以看到加密与解密的数据量。
(7)1720上show cry ip sa, 也可以查看加密与解密的数据量。
常用调试睿?
show cry isakmp sa
show cry ipsec sa
clear cry sa
clear cry isakmp
debug cry isakmp #####这是最常用的debug命令,vpn连接的基本错误都可以用它来找到
debug cry ipsec
(二)easy vpn client的配置(network-extension mode)
实验网络拓扑:
router3662(vpn client)---switch---router1720 (vpn access server)
pc (vpn client 4.01)------|
3662接口ip:
f0/0:10.130.23.244/28
f0/1:172.16.2.1/24
1720接口ip:
f0:10.130.23.246/28
lo0:172.16.1.1/24
pc配置:
ip:10.130.23.242/28
gw:10.130.23.246
1720的ios为c1700-k93sy7-mz.122-8.T5.bin
3662的ios为c3660-jk9o3s-mz.123-1a.bin
步骤:
1、配置1720路由器,参照实验一,设置为vpn server。
2、配置3662路由器,设置vpn client参数
cry ip client ezvpn vclient ####定义crypto-ezvpn name
mode network-extension ####设置为网络扩展模式
group vclient-group key vclient-key ####设置登录vpn server的组名与组口令
peer 10.130.23.246 ####设置vpn server的ip地址,如果启用dns,则可以用hostname
connect auto ####设置为自动连接。如果设为手动,则必须使用cry ip client ezvpn connect vclient命令来启动vpn通道。
local-address F0/0 ####设置vpn通道本地地址,选用f0/0,可以保证vpn server找到它
3、定义加密数据入口,这里为f0/1
inter f0/1
cry ip client ezvpn vclient inside
4、定义加密数据出口,这里为连接vpn server的f0/0
inter f0/0
cry ip client ezvpn vclient outside
5、在1720上设置静态路由,地址范围为3662路由本地网络的地址
ip route 172.16.2.0 255.255.255.0 f0
6、设置ip dhcp服务 ####cisco推荐使用dhcp来进行本地网络ip的分配。此步骤可选。
service dhcp ####启动dhcp 服务
ip dhcp pool dhcppool ####定义dhcp pool name
network 172.16.2.0 /24 ####定义可分配的IP地址段
default-router 172.16.2.1 ####定义dhcp client的默认网关
lease 1 0 0 ####设置ip保留时间
import all ####如果配置了上级dhcp,server,则接受其所有参数
ip dhcp excluded-address 172.16.2.1 ####将router上的地址排除
测试:
(1)配置好3662上的vpn client后,自动进行vpn连接。可以通过debug cry isa、deb cry ip client ezvpn、deb cry ip等debug命令输出的信息查看过程与结果。
(2)在1720上扩展ping,source 10.130.23.246 destination 172.16.2.1,通过。查看show cry ip sa,可以发现数据没有进行加密。
(3)在1720上扩展ping,source 172.16.1.1 destination 172.16.2.1,通过。查看show cry ip sa,可以发现数据通过加密进行传输。
(4)在3660上扩展ping,source 172.16.2.1 destination 172.16.1.1,通过。查看show cry ip sa,可以发现数据通过加密进行传输。
(5)在3660上扩展ping,source 10.130.23.244 destination 172.16.1.1,不通。查看show cry ip sa,可以发现数据不通过加密。
(6)启动pc vpn client,ping 172.16.1.1,通过。在1720上查看show cry ip sa,可以看到数据通过加密进行传输。
(7)在pc vpn client,ping 172.16.2.1,通过。在1720和3662上查看show cry ip sa,可以看到数据通过加密进行传输。在1720上show cry isa sa,可以看到两个vpn连接。
(8)在3660上扩展ping,source 172.16.2.1 destination 192.168.1.10(pc vpn client获得的ip),通过。查看show cry ip sa,可以发现数据通过加密进行传输。
说明:
(1)不同平台,不同ios版本,easy vpn client的配置有所不同。特别是加密数据入出接口的配置,配置接口前后,用show cry ip client ezvpn来查看与验证。
(2)network-extension模式,vpn server和vpn client两端的内部网络之间可以通过ip地址互相访问。
(3)以上配置均没有启用split tunnel。设置split tunnel的方法:首先参考实验(一),设置acl 133和cry isa client conf group中的参数,完成后,可以实现测试(1)-(5)。要实现Pc vpn client和3662 vpn client 互通,即测试(6)-(8),还要在1720 的acl 133中添加两条,分别是access 133 permit ip 192.168.1.0 0.0.0.255 any、access 133 permit ip 172.16.2.0 0.0.0.255 any。
(4)修改1720配置后,需要复位vpn通道,才可以起作用。在pc端,是通过disconnect再connect来实现;在3662上,通过clear cry ip client ezvpn来复位。
常用调试命令:
show cry ip client ezvpn
clear cry ip client ezvpn
deb cry ip client ezvpn
show cry ip sa
deb cry isa
show cry isa sa
(三)easy vpn client的配置(client mode)
实验网络拓扑同实验(二)
实验步骤参考实验(二),其中第二步,将mode network-extension改为mode client。
测试:
(1)配置好3662上的vpn client后,自动进行vpn连接。可以通过debug cry isa、deb cry ip client ezvpn、deb cry ip等debug命令输出的信息查看过程与结果。
(2)在1720上扩展ping,source 10.130.23.246 destination 172.16.2.1,不通。
(3)在1720上扩展ping,source 172.16.1.1 destination 172.16.2.1,不通。这是因为3662端ip数据流是通过nat进行传输。
(4)在3660上扩展ping,source 172.16.2.1 destination 172.16.1.1,通过。查看show cry ip sa,可以发现数据通过加密进行传输。在1720上打开deb ip icmp,可以看到echo reply信息的dst地址为192.168.1.19(vpn client 从vpn server获取的ip地址)。
(5)在3660上扩展ping,source 10.130.23.244 destination 172.16.1.1,不通。
说明:
(1)client 模式,vpn client端内部网络采用nat方式与vpn server进行通信,vpn client端网络可以访问server端网络资源,server端网络不能访问client端内部网络资源。
(2)client与network-extension两种模式,show cry ip sa,可以看到local ident是不同的。
(3)client模式下,用show ip nat statistics,可以看到nat的配置与数据流量。
(4)关于split tunnel,client模式的easy vpn client,与pc的vpn client类似,配置split tunnel的方法也相同。
常用调试命令:
show cry ip client ezvpn
clear cry ip client ezvpn
deb cry ip client ezvpn
show cry ip sa
deb cry isa
show cry isa sa
show ip nat statistics
(四)site to site vpn的配置(采用pre-share)
实验网络拓扑:
router3662---switch---router1720
3662接口ip:
f0/0:10.130.23.244/28
f0/1:172.16.2.1/24
1720接口ip:
f0:10.130.23.246/28
lo0:172.16.1.1/24
1720的ios为c1700-k93sy7-mz.122-8.T5.bin
3662的ios为c3660-jk9o3s-mz.123-1a.bin
步骤:
以1720为例进行配置
(1)配置静态路由 ####在配置vpn之前,需要保证两方的网络可以互相访问。
ip route 172.16.2.0 255.255.255.0 10.130.23.244
(2)定义加密数据的acl
access 144 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255
(3)定义isakmp policy
cry isa policy 1
authentication pre-share ####采用pre-share key进行验证
####authentication参数必须配置,其他参数如group、hash、encr、lifetime等,如果进行配置,需要注意两个路由器上的对应参数配置必须相同。
(4)定义pre-share key
cry isa key pre-share-key address 10.130.23.244
####其中pre-share-key 为key,两个路由器上要一样
####其中10.130.23.244为peer路由器的ip地址。
(5)定义transform-set
cry ipsec transform-set vpn-tfs esp-3des esp-sha-hmac
####其中vpn-tfs为transform-set name,后面两项为加密传输的算法
mode transport/tunnel #####tunnel为默认值,此配置可选
(6)定义crypto map entry
cry map vpn-map 10 ipsec-isakmp
####其中vpn-map为map name,10 是entry 号码,ipsec-isakmp表示采用isakmp进行密钥管理
match address 144 ####定义进行加密传输的数据,与第二步对应
set peer 10.130.23.244 ####定义peer路由器的ip
set transform-set vpn-tfs ####与第?*蕉杂?br /> ####如果一个接口上要对应多个vpn peer,可以定义多个entry,每个entry对应一个peer
(7)将crypto map应用到接谏?br /> inter f0 #####vpn通道入口
cry map vpn-map
(8)同样方法配置3662路由器。
1720的完整配置:
VPN1720#sh run
Building configuration...
Current configuration : 1217 bytes
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname VPN1720
!
logging buffered 4096 debugging
no logging rate-limit
enable password CISCO
!
username vclient1 password 0 vclient1
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
ip subnet-zero
!
!
ip domain-name fjbf.com
!
ip audit notify log
ip audit po max-events 100
!
crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
crypto isakmp key pre-share-key address 10.130.23.244
!
!
crypto ipsec transform-set vpn-tfs esp-3des esp-sha-hmac
!
crypto map vpn-map 10 ipsec-isakmp
set peer 10.130.23.244
set transform-set vpn-tfs
match address 144
!
!
!
!
interface Loopback0
ip address 172.16.1.1 255.255.255.0
!
interface FastEthernet0
ip address 10.130.23.246 255.255.255.240
speed auto
crypto map vpn-map
!
interface Serial0
no ip address
encapsulation ppp
no keepalive
no fair-queue
!
ip classless
ip route 172.16.2.0 255.255.255.0 10.130.23.244
no ip http server
ip pim bidir-enable
!
!
access-list 144 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255
!
!
line con 0
exec-timeout 0 0
speed 115200
line aux 0
line vty 0 4
login
!
end
测试:
(1)未将map应用到接口之前,在1720,扩展ping,source 10.130.23.246 destination 172.16.2.1,通过。扩展ping,source 172.16.1.1 destination 172.16.2.1,通过。
(2)map应用到接口之后,在1720,扩展ping,source 10.130.23.246 destination 172.16.2.1,通过。查看show cry ip sa,可以看到数据没有通过vpn 通道进行传输,因为不符合acl 144。
(3)map应用到接口之后,在1720,扩展ping,source 172.16.1.1 destination 172.16.2.1,通过。查看show cry ip sa,可以看到数据通过vpn 通道进行传输。
(4)在3662上同样进行测试。
说明:
(1)采用pre-share方式加密数据,配置简单,数据传输效率较高,但是安全性不高。
(2)加密数据前后,通过ping大包的方式测试,可以发现这种利用软件进行数据加密的方式,延时较大。如果需要开展voip、ip 视讯会议等业务,建议选配vpn模块进行硬件加密。
常用调试命令:
show cry isa sa
show cry ip sa
show cry engine configuration
show cry engine connections active
show cry engine connections flow
deb cry isa
deb cry ip
(五)site to site vpn的配置(采用rsa-encrypted)
实验网络拓扑:
router3662---switch---router1720
3662接口ip:
f0/0:10.130.23.244/28
f0/1:172.16.2.1/24
1720接口ip:
f0:10.130.23.246/28
lo0:172.16.1.1/24
1720的ios为c1700-k93sy7-mz.122-8.T5.bin
3662的ios为c3660-jk9o3s-mz.123-1a.bin
步骤:
以1720为例进行配置
(1)配置静态路由 ####在配置vpn之前,需要保证两方的网络可以互相访问。
ip route 172.16.2.0 255.255.255.0 10.130.23.244
(2)定义加密数据的acl
access 144 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255
(3)生成rsa key
cry key generate rsa general-keys ####生成General Purpose rsa Key
或者 cry key generate rsa usage-keys ####分别生成rsa signing key和rsa encryption key
这里 统一用general purpose key
(4)复制peer router的public key到本地router中
(A)在3662上生成general purpose key
(B)在3662上show cry key mypubkey rsa,复制其中的General Purpose Key
(C)在1720上,cry key pubkey-chain rsa ####设置public key
addressed-key 10.130.23.244 ####设置关联10.130.23.244ip地址的key
key-string ####定义key串
粘贴从3662上复制的General Purpose Key
#####如果第三步生成了两种key,则这里复制粘贴的,应该是Encryption Key(三个key中的第二个)
(5)定义isakmp policy
cry isa policy 1
authentication rsa-encr ####采用rsa Encryption key进行验证
####authentication参数必须配置,其他参数如group、hash、encr、lifetime等,如果进行配置,需要注意两个路由器上的对应参数配置必须相同。
(6)定义transform-set
cry ipsec transform-set vpn-tfs esp-3des esp-sha-hmac
####其中vpn-tfs为transform-set name,后面两项为加密传输的算法
mode transport/tunnel #####tunnel为默认值,此配置可选
(7)定义crypto map entry
cry map vpn-map 10 ipsec-isakmp
####其中vpn-map为map name,10 是entry 号码,ipsec-isakmp表示采用isakmp进行密钥管理
match address 144 ####定义进行加密传输的数据,与第二步对应
set peer 10.130.23.244 ####定义peer路由器的ip
set transform-set vpn-tfs ####与第?*蕉杂?br /> ####如果一个接口上要对应多个vpn peer,可以定义多个entry,每个entry对应一个peer;同样,pubkey也要对应进行设置。
(7)将crypto map应用到接口上
inter f0 #####vpn通道入口
cry map vpn-map
(8)同样方法配置3662路由器。
1720完整配置:
VPN1720#sh run
Building configuration...
Current configuration : 1490 bytes
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname VPN1720
!
logging buffered 4096 debugging
no logging rate-limit
enable password CISCO
!
username vclient1 password 0 vclient1
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
ip subnet-zero
!
!
ip domain-name fjbf.com
!
ip audit notify log
ip audit po max-events 100
!
crypto isakmp policy 1
encr 3des
authentication rsa-encr
group 2
!
!
crypto ipsec transform-set vpn-tfs esp-3des esp-sha-hmac
!
crypto key pubkey-chain rsa
addressed-key 10.130.23.244
address 10.130.23.244
key-string
305C300D 06092A86 4886F70D 01010105 00034B00 30480241 00BF3672 CB4D69EF
D131C023 C93EA4C5 7E09FBDB 23E9F910 EF04344A 2A4D1956 4E49DADC 5FAAE102
DBEDE13D 7911B1AD 23545B13 8EBB4791 E527B259 F87E605F 2D020301 0001
quit
!
crypto map vpn-map 10 ipsec-isakmp
set peer 10.130.23.244
set transform-set vpn-tfs
match address 144
!
!
!
!
interface Loopback0
ip address 172.16.1.1 255.255.255.0
!
interface FastEthernet0
ip address 10.130.23.246 255.255.255.240
speed auto
crypto map vpn-map
!
interface Serial0
no ip address
encapsulation ppp
no keepalive
no fair-queue
!
ip classless
ip route 172.16.2.0 255.255.255.0 10.130.23.244
no ip http server
ip pim bidir-enable
!
!
access-list 144 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255
!
!
line con 0
exec-timeout 0 0
speed 115200
line aux 0
line vty 0 4
login
!
end
说明:
(1)采用rsa encrypted方式加密传输数据,默认key长度为512字节,最高可设为2048字节。安全性能较高。
(2)100M双工交换网络中,在双向同时ping 15000字节的大包进行测试时,1720的cpu使用率一度高达90%左右,3662的使用率约为25%,两台路由器内存使用率则变化不大。可见用 rsa encrypted方式加密,对低端路由器的cpu性能影响很大。
常用调试命令:
show cry ip sa
show cry isa sa
deb cry isa
deb cry ip
clear cry isa
clear cry sa