简介
在传统的LAN-To-LAN ***中,我们必须为每个isakmp peer设置一个key,同时还需要指定peer的地址,在这种情况下,一旦多一个***邻居加入,那么就需要重复的配置,并且要求地址是固定的。而在当前IPv4的网络中,由于地址的缺乏,通过动态获取的公网IP已经普遍了,这种情况下,在传统的L2L中是建立不起***的。
引起这原因是isakmp 的peer中必须指定对端的地址,但是在cisco设备上加入了简化配置的方法,就像匹配静态路由一样 ip route 192.168.1.0 255.255.255.0 中包括192.168.1.1~192.168.1.254 的范围,isakmp peer也可以使用这样的方式 0.0.0.0 0.0.0.0 包括了所有的peer,这样无论多少个***邻居,都能匹配上这个peer。 第二个问题是 crypto map 中的peer,跟isakmp一样,需要为定义一个peer地址,但是必须为具体的地址,所以必须采用一个可以对应多个peer的方法才行,这就是cisco的 Dynamic map ,在dynamic map中不需要指定peer,它采用的是0.0.0.0表示任意地址,这样无论多少个peer,都可以对应上动态map。
我们把这种方法称为Dynamic LAN-To-LAN ,它能接受所有匹配Key的地址连接设备,我们通常称这一端为Hub端,对端为Spoke端。就想帧中继的Hub-and-spoke模型一样,Spoke都与Hub端连接,但彼此不知道Spoke端的存在。
Hub端采用Dynamic map方式,而Spoke端 与平常的LAN-To-LAN配置一模一样,这里只要求Hub端为固定IP,其余的分部可以是动态获取的。 Spoke端的配置除了ACL不一样以外,其余的都一样,所以可以复制粘贴来简化配置。
因为Hub端没有任何peer指定和感兴趣流量设置,不能主动发起连接,因为根本不知道发往谁,所以需要Spoke端先行发起流量来建立***连接。 但是,如果希望随时随地都可以通信的话,最后 会介绍另外一个思路。
Dynamic LAN-to -LAN *** 支持Router ,PIX 防火墙,ASA 防火墙
北京为Hub端,上海、长沙为Spoke端,是动态获取的IP ,所以,只能采用Dynamic Map来实现。每个场景的加密流量用loopback口来模拟。
1、crypto isakmp policy 10 采用预共享密钥认证,其余的用默认策略。
authentication pre-share key
2、crypto isakmp key 0 cisco address 0.0.0.0 0.0.0.0 设置key为cisco 地址为任意地址
3、crypto ipsec transform-set trans esp-des esp-md5-hmac 设置IPsec策略,mode为tunnel
4、crypto dynamic-map dyl2l 10 :设置一个动态map 名字为dyl2l 序列号为10
set transform-set trans 调用Ipsec策略
5、crypto map dyl2l 10 ipsec-isakmp dynamic dyl2l
这里为静态map调用动态map,因为接口下不能调用动态map
6、接口下调用 internet s1/0
crypto map dyl2l
这就是Dynamic 的配置了,是不是感觉比LAN-To-LAN简单很多,没有peer和感兴趣流量,因为Hub端不能作为主动发起方,所以不需要任何的感兴趣流量匹配设置。
上海与长沙场景的配置。
相同配置:
crypto isakmp policy 10
authentication pre-share
crypto isakmp key cisco address 12.1.1.1
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map dyl2l 10 ipsec-isakmp
set peer 12.1.1.1
set transform-set trans
match address 100
这里只需要改变不同场景的ACL就行了
上海的 : access-list 100 permit ip host 2.2.2.2 host 1.1.1.1
长沙: access-list 100 permit ip host 3.3.3.3 host 1.1.1.1
从spoke端发起流量,建立***开始,在Hub端 show crypto engine connections active 查看加解密情况
每个***邻居都有3对sa,加解密也很正常。
测试在PAT的情况下,会发生什么样的情况
ip access-list extended 101
10
ip nat inside source list 101 interface s1/0 overload
在各自的接口下调用,这里Inside为loopback口
查看状态,都是很正常的,再次测试流量来Ping,
发现在启用PAT情况下,所有***流量都显示为目标主机不可达,这是什么情况,show ip nat translatios 查看
有状态化表项,这就标明 ***的流量并没有走***隧道 而是走的PAT,转换了源地址。 说明接口下同时存在NAT和crypto map的时候,NAT优先,所以在流量到出接口后直接把源地址转换成12.1.1.1了,然后转发出去 交给Internet后 发现目标网络是3.3.3.3 的数据包,直接丢弃,这里3.3.3.3模拟私网网络。(私网网络是不允许在internet上转发的)。
解决办法:因为NAT优于***转发,所以需要在nat的列表中首先deny掉这些流量,然后在做转发。这里也就是为什么使用命名列表了,方便添加。
Hub端: ip access-list extended 101
deny ip host 1.1.1.1 host 2.2.2.2
deny ip host 1.1.1.1 host 3.3.3.3
permit ip any any
这里Hub端必须也deny才行,不然Spoke端发起流量能到达Hub端,但是Hub端返回的流量又走NAT转换了,撞击不了接口下的Map。
Spoke1端:ip access-list extended 101
deny ip host 2.2.2.2 host 1.1.1.1
permit ip any any
Spoke2端: ip access-list extended 101
deny ip host 3.3.3.3 host 1.1.1.1
permit ip any any
这时候完成,在测试流量。
流量正常通过了。
基于ASA/PIX防火墙的实现
因为ASA/PIX没有lookback的说法,所以用一个路由器来模拟内网,这里主要将防火墙的配置。 连接外网的为outside接口
防火墙的配置 跟IOS配置一模一样,只是isakmp默认为关闭状态,需要开启。
1、crypto isakmp enable outside 开启isakmp ,在防火墙上需要跟接口
2、crypto isakmp policy 10 这个为防火墙的默认策略,这里注意的是 IOS的默认策略是不同的,所以在配置IOS的时候要注意
authentication pre-share
encryption 3des
hash sha
group 2
lifetime 86400
show running-config isakap 查看默认策略
3、tunnel-group DefaultL2LGroup ipsec-attributes
pre-shared-key cisco
,这是ASA 7.0以后引入的隧道策略,如果你配置的为crypto isakmp key cisco address 0.0.0.0 netmask 0.0.0.0 它会自动转换成这个形式,在动态L2L下面 不需要使用,在这里DYnamic 必须使用default group的策略,0.0.0.0 不好使
如果需要查看策略的话,需要 show running-config tunnel-group 查看
4、crypto ipsec transform-set trans esp-des esp-md5-hmac 设置IPsec策略
5、crypto dynamic-map dyl2l 10 set transform-set trans :创建一个动态map直接调用,在防火墙中没有关于这条命令的子集,都是直接在后面跟参数。
6、crypto map dyl2l 10 ipsec-isakmp dynamic dyl2l 静态map调用动态的
7、 crypto map dyl2l interface outside 调用静态map到outside接口下
关于Spoke配置需要注意的地方
在isakmp policy 里面需要把认证为pre-shared-key 加密为3des group为2
!
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
crypto isakmp key cisco address 12.1.1.1
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map dyl2l 10 ipsec-isakmp
set peer 12.1.1.1
set transform-set trans
match address 100
!
两个Spoke的ACL不同
access-list 100 permit ip 2.2.2.0 0.0.0.255 192.168.1.0 0.0.0.255
access-list 100 permit ip 3.3.3.0 0.0.0.255 192.168.1.0 0.0.0.255
H3C的设备实现比较有点不同
R1模拟Hub端,R2做internet R3为Spoke R1与R3有个环回口, R3为动态获取地址
Hub端配置
1、ike peer 1
exchange-mode aggressive 必须设置野蛮模式,并且remote-address 不允许为0.0.0.0 和255.255.255.255
pre-shared-key H3C
IKE策略采用默认
2、ipsec proposal 1 创建一个proposal 采用默认策略
3、acl number 3000 在H3C里面实现,必须设置一个ACL,为any到any
rule 0 permit ip source any destination any
4、ipsec policy dyl2l 10 isakmp 调用这些策略
security acl 3000
ike-peer 1
proposal 1
5、接口调用 interface s0/2/0
ipsec policy dyl2l
Spoke端为平常配置
ike peer 1
exchange-mode aggressive
pre-shared-key H3C
remote-address 12.1.1.1
!
ipsec proposoal 1
!
acl number 3000
rule 0 permit ip source 3.3.3.3 0 destiantion 1.1.1.1 0
!
ipsec proposal 1
ipsec policy dyl2l 10 isakmap
security acl 3000
ike-peer 1
proposal 1
inter s0/2/0
ipsec policy dyl2l
测试流量 ping -a 3.3.3.3 1.1.1.1
这个是模拟器的原因,会丢包
display ipsec sa 会显示感兴趣流量,当Spoke端发起后,Hub端会自动匹配上。
Dynamic LAN-To-LAN 只适应于与小型企业的应用,如果流量比较多的话,而且企业出口一定是做NAT,那么写ACL非常繁琐,也非常不适合,后续还开出了许多的技术。
本文转载于公众号:网络之路博客