部署默认路由:R4到R1,R1到R2,R3到R2,R5到R3(R1/3到R2的默认路由最好写地址。写接口可能会碰到各种奇怪的问题)
以R2作为Internet,配置环回口
R1和R3部署NAT(实验时我做了PAT)
crypto isakmp:加密isakmp
第一阶段:
( R1(config)#crypto isakmp ?)
R1(config)#crypto isakmp policy 1 //建立IKE协商策略集。1是序号
R1(config-isakmap)#authentication pre-share //用预共享密钥做认证手段
R1(config-isakmap)#encryption 3des //加密算法,有des,3des,aes可选
R1(config-isakmap)#hash sha //设置密钥验证所用的哈希算法,有md5和sha可选
R1(config-isakmap)#group 2 //非对称算法只支持diff算法。数字代表密钥长度(1,2,5),越长越安
全,加解密时间也越长。
R1(config-isakmap)#exit
R1(config)#crypto isakmp key 0 CSDN address 100.1.34.2
//有0和6可选。0是不加密存储,6是加密存储。写6的话,之后还要把加密后的密码写进来。CSDN是设置的密码。地址写对方的接口地址。注意R3配置时,key要写一样的
第二阶段:转换集
R1(config)#crypto ipsec transform-set l2ltrans esp-3des esp-sha-hmac
//transform-set后面跟用的VPN的名字,l2ltrans是标准命名,当然也可以改成别的;接下来是加密协议和调用的加密算法,这里用esp调用3des加密算法和sha的hmac哈希算法(数据要传输安全,也要保证完整)
R1(cfg-crypto-trans)#exit
//接下来写感兴趣流,或者说加解密的源目地址/网关。因为是单向的,所以要写两条对称的语句
R1(config)#ip access-list extended l2lacl
R1(config-ext-nacl)#permit ip 192.168.12.0 0.0.0.255 192.168.45.0 0.0.0.255
R1(config-ext-nacl)#exit
接下来做捆绑,然后调用到接口
R1(config)#crypto map l2lmap 1 ipsec-isakmp //l2lmap是我们自定义的名字;1是定义的进程序号;ipsec-isakmp是我们使用的协议
R1(config-crypto-map)#match address l2lacl //调用我们将要使用的ACL策略集
R1(config-crypto-map)#set peer 100.1.34.2 //定义要跟100.1.34.2之间的通信进行加密
R1(config-crypto-map)#set transform-set l2ltrans //注意名字对大小写和空格是敏感的
最后把map调用到接口
R1(config)#int f1/0
R1(config-if)#crypto map l2lmap
R3上的配置同理,注意key和调用的各种策略集要与之前的设置一致
show run | s crypto
因为建IPsec对资源消耗大,所以此时还没建,需要有数据包的收发。去ping一下试试吧
问题
因为中间写了NAT的原因,地址转换后会匹配不了中间的加密ACL...
解决方法是做Bypass(旁路)。在R1的NATACL中插入一条deny ip 192.168.12.0 0.0.0.255 192.168.45.0 0.0.0.255在permit ip 192.168.12.0 0.0.0.255 any之前,目的是让这个流量从f1/0出去时不会被做地址转换,之后就能去匹配到l2lacl了。R3上的配置同理
总之需要排错的时候活用debug crypto isakmp和debug crypto ipsec,以及阅读抓到的包的信息
---------------------
敏感过头了吧,为什么不能发布呢。。。又没教具体怎么翻