IPsec_VPN实现技术【转载】

GRE Tunnel

GRE Tunnel(General Routing Encapsulation
通用路由封装)是一种非常简单的VPN(Virtual Private Network
虚拟专用网络),其基本思路是:VPN网关把发往对方的数据包在网络边界重新进行封装,然后通过Internet将数据包发送到目标站点的对等VPN网
关,这个过程也就是把一个私网的数据包封装在一个公网的数据包中;对方收到数据包后剥离报头,复原出原来的数据包,然后向其私网内的目标主机传递出数据
包;这样私网的数据包就穿过了公网,到达了另一个私网。但是采用GRE Tunnel
VPN技术的一个重要问题是数据包在Internet上传输是不安全的。

实验

配置IP地址及路由:

R1(config)#ip route 0.0.0.0 0.0.0.0 s0/0
12.1.1.2 permanent
R2(config)#ip route 34.1.1.0 255.255.255.0
s0/1 23.1.1.3

R3(config)#ip route 12.1.1.0 255.255.255.0
s0/1 23.1.1.2

R4(config)#ip route 0.0.0.0 0.0.0.0 s0/0
34.1.1.3 permanent

配置GRE Tunnel:

R1(config)#int tunnel
0
       
//创建Tunnel接口0,编号只有本地有效

R1(config-if)#ip add 172.16.14.1
255.255.255.0
      //配置隧道接口的地址,显然该地址是私网地址

R1(config-if)#tunnel source
s0/0
       
//配置Tunnel的源接口
R1(config-if)#tunnel destination
34.1.1.4
       
//配置Tunnel的目的地址
R1(config-if)#tunnel mode gre
ip
       
//配置隧道为GRE模式,默认即为GRE

R4(config)#int tunnel
0

R4(config-if)#ip add 172.16.14.4
255.255.255.0

R4(config-if)#tunnel source
s0/0

R4(config-if)#tunnel destination 12.1.1.1

说明:

①Tunnel的源接口:也可以使用“tunnel source
12.1.1.1”命令配置,路由器将以此接口的地址作为源地址重

 
新封装VPN数据包;

②Tunnel的目地址:路由器将以此地址作为目的地址重新封装VPN数据包;

③隧道创建后,可以把隧道看成一条专线。

实验调试:

R1#show int tunnel
0       
//查看Tunnel 0接口的状态

配置路由协议:

R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no
auto-summary
R1(config-router)#network
172.16.0.0

R4(config)#router rip
R4(config-router)#version 2
R4(config-router)#no
auto-summary
R4(config-router)#network 172.16.0.0

实验调试:

R1#show ip route

R1#ping 172.16.4.1 source lo0

以上输出表明远程办公室已经学习到了企业总部内部网络的路由,下一跳为隧道另一端的地址。

配置NAT:

由于现在企业内部和远程办公室都无法与Internet通信,还需要配置NAT。

R1(config)#access-list 10 permit
172.16.1.0 0.0.0.255
R1(config)#ip nat inside source list 10 int
s0/0 overload
R1(config)#int lo0
R1(config-if)#ip nat inside
R1(config)#int
s0/0
R1(config-if)#ip nat
outside

R4(config)#access-list 10 permit
172.16.4.0 0.0.0.255
R4(config)#ip nat inside source list 10 int
s0/0 overload
R4(config)#int lo0
R4(config-if)#ip nat inside
R4(config)#int s0/0
R4(config-if)#ip nat outside
实验调试:

R1#ping 34.1.1.3 source
lo0       
//测试远程办公室和Internet的通信

R1#ping 172.16.4.1 source
lo0       
//再次测试远程办公室和公司总部的通信,一切正常

 

Site To
Site VPN/LAN To LAN VPN

Site To Site是指把一个局域网和另一个局域网连接在一起,本实验采用IPSec(Internet Protocol
Security 网际网路协定安全规格)VPN解决这个问题。IPSec VPN是针对IP通信保护的协议簇,IPSec
VPN的基础是数据机密性、数据完整性和身份验证。

数据机密性:一个常见的安全性考虑是防止窃听者窃取数据。VPN利用封装和加密机制来实现机密性,常见的算

  法有DES、3DES和AES。

数据完整性:数据完整性确保数据在源主机和目的主机之间传送时不被篡改。VPN通常使用哈希来确保数据完整

  性,常见的算法有MD5和SHA。

身份验证:身份验证确保消息来自真实来源,并传送到真实目的地。VPN利用用户标识确信与其建立通信的一方

  正是其所认为的那一方,常用的算法有预共享密码和数字证书。

两种主要的IPSec协议框架:

验证报头(AH):仅提供完整性和身份验证功能,在不要求或不允许有机密性时使用。AH在原有的数据包头部和

 
数据之间加入AH字段,该字段里包含IP头和数据的完整性校验值。因此AH能为两个系统间传送的IP数据包提供

 
数据验证和数据完整性检查。它验证消息在传送过程中是否未被篡改,还验证来源。AH不提供数据包的数据机

 
密性(加密)检查。AH协议在单独使用时提供的保护较脆弱,因此需要将其与ESP协议配合使用,来提供数据加

  密和防篡改检测等安全功能。

封装安全负载(ESP):通过对IP数据包加密隐藏数据及源主机和目的主机的身份提供机密性、完整性和身份验

 
证。ESP可验证内部IP数据包和ESP报头的身份,从而提供数据来源验证和数据完整性检查。ESP有两种模式:传

  输模式和隧道模式。

  传输模式:不产生新的IP包头,但是在原有的IP包头和数据字段之间加入ESP头部,并且在尾部加了ESP尾和完

   
整性校验值,该模式提供端到端的安全。

 
隧道模式:用新的IP包头对原有的数据包进行了重新封装,添加了ESP头、ESP尾及完整性校验值,该模式提供

   
路由器到路由器的安全,计算机到路由器的数据安全并不能保证,该模式对用户是透明的,因此使用较多。

IPSec的工作方式:

协商阶段:互联VPN之前要进行协商,VPN的协商可分为两个阶段:
 
①密钥协商阶段:设备获取了相应的密钥(为了保证传输过程中传输的安全性会使用非对称密钥);

 
②IPsec阶段:数据要进加密的数据交换(通过协商后产生的非对称密钥获得加密的先决条件)。
数据传输阶段:采用对称加密算法完成数据的安全传输,对等体双方使用的相应加密手段与校验手段。

说明:对称加密算法安全性更高,第一阶段不使用对称加密算法的原因就是避免传输过程中被截获,而第二阶段

 
通过安全的密钥交换之后不怕被截获,即便被截获通过转换集复杂的加密算法被解密的可能性也是微乎其微。

实验

配置IP地址及路由:

R1(config)#ip route 0.0.0.0 0.0.0.0 s0/0
12.1.1.2 permanent
R2(config)#ip route 34.1.1.0 255.255.255.0
s0/1 23.1.1.3

R3(config)#ip route 12.1.1.0 255.255.255.0
s0/1 23.1.1.2

R4(config)#ip route 0.0.0.0 0.0.0.0 s0/0
34.1.1.3 permanent

配置Site To Site VPN:
R1(config)#crypto isakmp policy
10
       
//创建一个ISAKMP策略,编号为10
R1(config-isakmp)#encryption
aes
       
//配置ISAKMP采用AES加密算法
R1(config-isakmp)#authentication
pre-share
       
//配置ISAKMP采用预共享密码身份认证算法
R1(config-isakmp)#hash
sha
       
//配置ISAKMP采用SHA HASH算法
R1(config-isakmp)#group
5
       
//配置ISAKMP采用DH group 5密钥交换算法

R1(config-isakmp)#lifetime
86400
     //为了安全起见设置生存时间,即多长时间重认证,默认即为86400

R1(config)#crypto isakmp key cisco
address
34.1.1.4
   //配置对等体34.1.1.4的预共享密码为cisco

R1(config)#crypto ipsec
transform-set TRAN esp-aes esp-sha-hmac

                  //创建一个名为TRAN的IPSec交换集,交换集采用ESP封装,加密算法为AES,HASH算法为SHA

R3(cfg-crypto-trans)#mode
tunnel
       
//设置ESP的模式,默认即为Tunnel

R1(config)#ip access-list extended
VPN

R1(config-ext-nacl)#permit ip
172.16.1.0 0.0.0.255 172.16.4.0 0.0.0.255

  //定义一个ACL,只限定从远程办公室到企业总部的流量才通过VPN加密发送,其它流量(如到Internet)不加密

R1(config)#crypto map MAP 10
ipsec-isakmp
       
//创建名为MAP,编号为10的加密图
R1(config-crypto-map)#set peer
34.1.1.4
       
//指明VPN对等体为路由器R4
R1(config-crypto-map)#set
transform-set
TRAN
       
//指明采用前边已经定义的交换集
R1(config-crypto-map)#match address
VPN
       
//指明匹配名为VPN的ACL的定义的流量就是VPN流量
R1(config-crypto-map)#reverse-route
static
       
//指明要反向路由注入
R1(config)#int
s0/0

R1(config-if)#crypto map
MAP
       
//把名为MAP的加密图应用在接口上

R4(config)#crypto isakmp policy
10

R4(config-isakmp)#encryption
aes

R4(config-isakmp)#authentication
pre-share

R4(config-isakmp)#hash
sha

R4(config-isakmp)#group
5

R4(config)#crypto isakmp key cisco
address 12.1.1.1

R4(config)#crypto ipsec transform-set
TRAN esp-aes esp-sha-hmac

R4(config)#ip access-list extended
VPN

R4(config-ext-nacl)#permit ip
172.16.4.0 0.0.0.255 172.16.1.0 0.0.0.255

R4(config)#crypto map MAP 10
ipsec-isakmp

R4(config-crypto-map)#set peer
12.1.1.1

R4(config-crypto-map)#set
transform-set TRAN

R4(config-crypto-map)#match address
VPN

R4(config-crypto-map)#reverse-route
static

R4(config)#int
s0/0

R4(config-if)#crypto map
MAP

说明:

①创建ISAKMP(Internet Security
And Key Management Protocol
因特网安全协议与密钥管理协议)策略时,可

 
以创建多个ISAKMP策略,但是双方路由器将采用编号最小、参数一致的策略,因此双方至少要有一个策略是一

 
致的,否则协商失败。

②加密算法可以选择:DES、3DES和AES。

③身份认证算法可以选择:预共享密码和(如果有CA服务器时也可以选择)CA(电子证书)进行身份认证。

④HASH算法可以选择:SHA和MD5。

⑤密钥交换算法可以选择:group 1、group 2和group
5。

⑥配置预共享密码时,要确保双方配置的密码要一致,否则协商失败。

⑦配置交换集时,交换集名称只在本地有效,并且要确保双方路由器有一个参数一致的交换集,否则协商失败。

 
1>交换集的封装方式:ESP、AH和ESP+AH;

   
1)ESP封装提供的功能:机密性、完整性和身份认证;

   
2)AH封装提供的功能:完整性和身份认证,实际上AH使用的较少。

 
2>交换集的加密算法:DES、3DES和AES;

 
3>交换集的HASH算法:SHA和MD5。

⑧创建加密图时,名称和编号都只在本地有效,如果有多个编号,路由器将从小到大逐一匹配。

⑨反向路由注入就是在VPN设备上会根据“match address
VPN”命令生成静态路由,静态路由的条数和ACL条数

 
相对应,“static”参数指明即使VPN会话没有建立起来返向路由也要创建。

实验调试:

R1#show ip route

R1#ping 172.16.4.1 source lo0


以上输出表明路由器R1有172.16.4.0/24条路由了,下一跳为对方公网地址,并且能与对端局域网正常通信。

R1#show crypto engine connections
active       
//查看活动的VPN会话的基本情况

以上输出表明加密和解密是独立的会话,可以看到加密和解密了个5个数据包。

R1#show crypto isakmp
policy       
//显示系统中所有的ISAKMP策略情况

R1#show crypto ipsec
transform-set       
//显示系统中所有的IPSec交换机情况

R1#show crypto
map       
//显示系统中的加密图情况

R1#show crypto ipsec
sa       
//显示IPSec会话的情况

NAT配置:

由于现在远程办公室和企业内部都无法与Internet通信,还需要配置NAT。

R1(config)#access-list 100 deny ip
172.16.1.0 0.0.0.255 172.16.4.0 0.0.0.255

                                 //特别注意,要把远程办公室去往企业总部的IP数据包排除在进行NAT之外

R1(config)#access-list 100 permit ip
172.16.1.0 0.0.0.255 any
R1(config)#ip nat inside source list 100 int
s0/0 overload
R1(config)#int lo0
R1(config-if)#ip nat inside
R1(config)#int s0/0
R1(config-if)#ip nat outside

R4(config)#access-list 100 deny ip
172.16.4.0 0.0.0.255 172.16.1.0 0.0.0.255
R4(config)#access-list 100 permit ip
172.16.4.0 0.0.0.255 any
R4(config)#ip nat inside source list 100 int
s0/0 overload
R4(config)#int lo0
R4(config-if)#ip nat inside
R4(config)#int s0/0
R4(config-if)#ip nat outside

实验调试:

R1#ping 34.1.1.3 source
lo0        //测试远程办公室和Internet的通信

R1#ping 172.16.4.1 source
lo0       
//再次测试远程办公室和公司总部的通信,一切正常

 

时间: 2024-09-20 05:30:47

IPsec_VPN实现技术【转载】的相关文章

调试技术转载链接汇总

1.一篇很赞的ios视图bug调试案例,技术和方法都值得借鉴-  http://www.cocoachina.com/ios/20150330/11435.html 2.ios ui调试 http://www.cocoachina.com/ios/20141224/10748.html 3.ios中的crash日志捕获原理及实现详解 http://www.cnblogs.com/alario/archive/2012/03/28/2421574.html 4.ios应用崩溃日志分析 http:/

网络技术转载链接汇总

1.科普帖,ssh vs ssl http://blog.csdn.net/ocean1010/article/details/6950924 2.ios下获取本机ip地址,支持ipv6  http://wiki.gonzofamily.com/a/Retrieve_local_IPv4/IPv6_on_Wifi/Cellular 3.协议分析网 http://www.cnpaf.net/ 4.charles 模拟慢网速等 http://www.cnblogs.com/cos2004/archi

实现 asp 的服务器无刷新推技术

服务器|刷新|无刷新 关于推送技术-----------------------------转载请注明出处:一鹤.NET_WWW.1HE.NET Client PULL(客户端拉技术)通常,聊天室通过不断刷新来显示服务器的最新信息,即所谓的Client PULL(客户端拉技术)Client PULL必须不停的建立连接,刷新信息,断开连接,这样效率很低,而且速度很慢.(如果加快速度,频繁的建立断开连接刷新页面都会增加服务器与客户端的资源消耗) Server Push(服务器推技术)推技术就是建立一

ORACLE 博客文章目录(2015-05-27更新)

从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理.归纳分类,方便自己和大家查看.翻阅.  ORACLE数据类型 ORACLE基本数据类型总结 ORACLE VARCHAR2最大长度问题 ORACLE数据库汉字占几个字节问题 ORACLE NUMBER类型Scale为0引发的问题   PL/SQL语法学习   PLSQL 调试触发器 PL/SQL重

[转载]技术发展瓶颈的突破

在知乎看到一个问题,相当有代表意义,即技术人员本身的技术发展瓶颈的突破问题. 具体问题如下,通常情况下,技术人员在某一领域工作3-5年后,会成为团队内或者公司里的核心技术骨干,这个时候他们也会面临几个问题: 技术学习的困惑:当达到一个瓶颈时,可以学习的参考系越来越少,首先是因为高端技术人才呈现倒金字塔形态,身边缺少能引领你的人生导师:其次,业内的技术交流,大多数在做科普以及刷存在感,到达一定阶段后对个人提升作用越来越小(甚至用一天时间参加技术大会效果还不如用一天的时间在咖啡馆看书学习):再次,国

[转载] 陈皓——程序员技术练级攻略

          PS:原文出自酷壳上的陈皓对程序员从入门到精通的攻略,让你感受一下真正的大神吧!又是阿里人,他的文章真心不错,希望对你也有用.原文地址:http://coolshell.cn/articles/4990.html           陈皓酷壳博客地址:    http://coolshell.cn/haoel                陈皓CSDN博客地址: http://blog.csdn.net/haoel 个人简介 15年软件开发相关工作经验,8年以上项目和团队管理

PHP-Push技术实现刷新功能 转载

刷新 Server push 前一段时间炒得很热的"推"技术,不过网上大部分都是cgi的资料,偶尔看到一个法国的网站上有这么个介绍,可惜法语看不懂,只能从他的程序中看懂点东西,现整理个例子出来大家学习一下.可以用于聊天室的数据传输.网站上的新闻更新.等等各类更新频繁的页面. 以前做刷新主要通过页面上加标签. < META HTTP-EQUIV=REFRESH CONTENT="time;URL=url" > 或者使用javascript的timeout+

三种Web开发主流技术的评价之JSP(转载)

js|web|评价|主流 JSP:Java Server Page JSP又是什么原因出现的呢?Java在推向开发人员时出现了重重困难,首先是Java缺少主流系统的广泛支持,而在所有的平台和技术上都缺少可以直接参照的应用方式.这时java就走向了在各个应用层上的积极进取,在自己擅长的与不擅长的领域都走出了坚定的脚步.其中最让Web技术人员兴奋的就是Java Servlet的出现和JSP的渐渐成熟,这一步步都让Java正式的走向了Web开发技术的舞台.Java利用了它的跨平台技术,使java的应用

简单的页面缓冲技术(一)(转载中文用户)

页面|中文 前言 其实说它为技术,也许不能说是真正的技术.这只不过是我自已想出来的页面处理的方法,当然与别人的想法可能是一致的.不过我还是想给它一个好听的名字.那么我这里所指的页面缓冲是什么呢?就是指将动态生成的页面保存起来,供下一次的使用.这样下一次访问它可能就不需要动态生成了.就象提供了一个cache 一样.在我的网站上,也许你的网站也是如此,使用了象模板之类的技术,这样用户所看到的页面就是动态生成的.但是一个页面对于你是这样,对于别人可能还是这样,即在一段时间内是不会变化的,如果将上次生成