一、问题

手头没有支持IPSec的路由器设备,但是想构建IPSec ×××环境,并截取IPSec数据进行协议的学习分析,怎么办?

二、解决思路

利用Dynamips模拟支持IPSec的路由器,将模拟出来的路由器接口绑定到Linux虚拟网卡上,并依托网桥技术使虚拟网卡能够与实际网卡进行通信。在上述基础环境构建完毕的基础上,配置IPSec ×××,然后在路由器接口(即虚拟网卡)上嗅探获取IPSec通信数据。

三、模拟环境构建

图一 模拟环境示意图

根据上面的解决思路,拟构建的模拟环境如上图所示。在R1和R2之间构建隧道模式的IPSec ×××,PC1和PC2之间的通信数据在进入R1、R2时自动被封装成IPSec数据,在流出R1、R2时自动解封成明文的IP数据包。要将上图的模拟环境落到实处,我们需要三台机器PC1、PC2、PC3(可以是三台虚拟机),其中PC3要求为Linux操作系统,有三张网卡,且支持网桥和TAP虚拟网卡,同时能够正常运行Dynamips,另外两台(对应上图的PC1、PC2)没有特殊要求,只要是PC机即可。

模拟环境中涉及了很多虚拟的东西,如路由器、网卡、网桥等,理解起来比较艰涩。为了方便理解,给出一个全景的逻辑视图。

图二 模拟环境逻辑视图

对图二的说明如下:

1、红色椭圆中的要素都运行在PC3(Linux)上

2、虚线是数据通信的逻辑效果,与图一一致

3、实线代表的是数据的实际流向。决定数据实际如此流向的是因为,tap虚拟网卡和eth真实网卡都是网络接口,具有一定的独立性,需要网桥进行桥接通信。但同时tap虚拟网卡是虚拟的,它不能脱离真实网卡而存在,所以在同一网桥下至少有一个真实网卡,以承载实际的数据通信功能。

四、具体配置实践

有了上面的理论基础,接下来就开始动手实践。先从最复杂的PC3(Linux)开始,然后再配置PC1、PC2。

1、PC3(Linux)配置

Dynamips、网桥(brctl)、三张网卡(建议用虚拟机,很方便)等先决条件请自行解决,然后按如下步骤进行

①配置网桥和虚拟网卡

brctl addbr br0

brctl addbr br1

brctl addbr br2

(说明:添加br0、br1、br2三个网桥)

ip l s dev br0 up

ip l s dev br1 up

ip l s dev br2 up

(说明:启动网桥)

tunctl -t tap0 -u root

tunctl -t tap1 -u root

tunctl -t tap2 -u root

tunctl -t tap3 -u root

(说明:添加虚拟网卡)

ip l s dev tap0 up

ip l s dev tap1 up

ip l s dev tap2 up

ip l s dev tap3 up

(说明:启动虚拟网卡)

brctl addif br0 tap0

brctl addif br0 eth0

brctl addif br1 tap1

brctl addif br1 tap3

brctl addif br1 eth1

brctl addif br2 tap2

brctl addif br2 eth2

(说明:把网卡和虚拟网卡添加到对应的网桥)

ifconfig eth0 0.0.0.0 promisc

ifconfig eth1 0.0.0.0 promisc

ifconfig eth2 0.0.0.0 promisc

(说明:把网卡设置成混杂模式)

②模拟路由器R1、R2

dynamips -P 2691 -s 0:0:tap:tap0 -s 0:1:tap:tap1 ../c2691-adventerprisek9-mz.124-25d.bin

dynamips -P 2691 -s 0:0:tap:tap2 -s 0:1:tap:tap3 ../c2691-adventerprisek9-mz.124-25d.bin

(说明:分别模拟运行了路由器R1、R2,R1的0/0接口和tap0绑定,其他类似)

对R1配置如下:

R1(config)#int fa0/0

R1(config-if)#ip add 192.168.2.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#int fa0/1

R1(config-if)#ip add 10.0.0.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.2

R1(config)#end

对R2配置如下:

R2(config)#int fa0/0

R2(config-if)#ip add 192.168.3.1 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#int fa0/1

R2(config-if)#ip add 10.0.0.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.3

R2(config)#end

③配置IPSec ×××

在R1上配置IKE(ISAKMP)策略:

R1(config)#crypto isakmp policy 1

R1(config-isakmp)#encryption 3des

R1(config-isakmp)#hash sha

R1(config-isakmp)#authentication pre-share

R1(config-isakmp)#group 2

R1(config-isakmp)#exit

说明:定义了ISAKMP policy 1,加密方式为3des,hash算法为sha,认证方式为Pre-Shared Keys (PSK),密钥算法(Diffie-Hellman)为group 2。

在R1上定义认证标识:

R1(config)#crypto isakmp key 0 cisco123 address 10.0.0.2

说明:因为之前定义的认证方式为Pre-Shared Keys (PSK),所以需要定义认证密码,这里定义与peer 10.0.0.2的认证密码为cisco123,并且双方密码必须一致,否则无法建立IKE SA,其中0表示密码在running-config中显示为明文。

在R1上配置IPsec transform:

R1(config)#crypto ipsec transform-set ccie ah-sha-hmac esp-3des esp-sha-hmac

R1(cfg-crypto-trans)#exit

说明:配置了transform-set为ccie,认证协议使用ah,其实esp也有认证功能,可以去掉ah,单独使用esp。其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算,默认的IPsec mode为tunnel。

在R1上定义感兴趣流量:

R1(config)#access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255

说明:这里需要被IPsec保护传输的流量为.2网段至.3网段的流量,即192.168.2.0/24发往192.168.3.0/24的流量,切记不可使用any来表示地址。

在R1上创建crypto map:

R1(config)#crypto map l2l 1 ipsec-isakmp

R1(config-crypto-map)#set peer 10.0.0.2

R1(config-crypto-map)#set transform-set ccie

R1(config-crypto-map)#match address 100

R1(config-crypto-map)#exit

说明:在R1上配置crypto map为l2l,序号为1,即第1组策略,其中指定加密数据发往的对端为10.0.0.2,即和10.0.0.2建立IPsec隧道,调用的IPsec transform为ccie,并且指定ACL 100中的流量为被保护的流量。

在R1上将crypto map应用于接口:

R1(config)#int f0/1

R1(config-if)#crypto map l2l

R1(config-if)#exit

R1(config)#

说明:将crypto map应用在去往192.168.3.0/24的接口F0/0上。

使用相同方式配置R3的LAN-to-LAN ×××:

R2(config)#crypto isakmp policy 1

R2(config-isakmp)#encryption 3des

R2(config-isakmp)#hash sha

R2(config-isakmp)#authentication pre-share

R2(config-isakmp)#group 2

R2(config-isakmp)#exit

R2(config)#crypto isakmp key 0 cisco123 address 10.0.0.1

R2(config)#crypto ipsec transform-set ccie ah-sha-hmac esp-3des esp-sha-hmac

R2(cfg-crypto-trans)#exit

R2(config)#access-list 100 permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255

R2(config)#crypto map l2l 1 ipsec-isakmp

R2(config-crypto-map)#set peer 10.0.0.1

R2(config-crypto-map)#set transform-set ccie

R2(config-crypto-map)#match address 100

R2(config-crypto-map)#exit

R2(config)#

R2(config)#int f0/1

R2(config-if)#crypto map l2l

R2(config-if)#

*Mar  1 00:32:58.907: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

R2(config-if)#

说明:R2与R1的IKE和IPsec策略必须保持一致。

2、配置PC1和PC2

假设PC1和PC2都是Windows操作系统,设置其IP分别为192.168.2.22、192.168.3.33,然后分别添加一条路由

route add 192.168.3.0 mask 255.255.255.0 192.168.2.1

route add 192.168.2.0 mask 255.255.255.0 192.168.3.1

五、测试

在PC3(Linux)上运行wireshark抓取tap1接口的数据,在PC1上也运行wireshark抓取网卡的数据,然后在PC2上ping PC1。PC3(Linux)和PC1上wireshark的抓取截图分别如图三、和图四。

图三 PC3(Linux)上wireshark截图

图四 PC1上wireshark截图

图三中,抓取的是tap1虚拟网卡的数据,tap1对应R1的fa0/1接口,是IPSec ×××隧道的其中一个端点,其对应的数据应该是IPSec密数据,图三的结果印证了这一点。

图四中,抓取的是PC1上的数据,PC1上的数据已经离开IPSec ×××隧道,得到的应该是明文数据,图四的结果也印证了这一点。

好了,打完收工。

转载于:https://blog.51cto.com/watertoeast/1701333

用Dynamips构建能够与真实机器通信的IPSec ***环境相关推荐

  1. 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云

    点击上方"LiveVideoStack"关注我们 近日,LiveVideoStack很荣幸地采访到了即构科技RTC后台技术总监--肖潇.在访谈中我们了解到即构科技在构建全球实时音视 ...

  2. 【苹果推信】苹果推imessage群发开发真实机器调试的测试证书

    它能够成立以创建关系,以下所述,以是 在一切和使得相干设置装备摆设中的配置中,起首要做的是翻开撑持办事的AppID; 3,推送证书(分成两种范例的开辟和公布,类型是APNSDevelopmentis, ...

  3. 瑞萨linux编译环境,瑞萨RZ/A2M Linux4.19系统构建与驱动移植纪实之一:BSP环境搭建...

    瑞萨RZ/A2M Linux4.19系统构建与驱动移植纪实之一:BSP环境搭建 我的系统信息 下载RZ/A Linux-4.19 BSP 编译安装带有SSL模块的Python 2.7 我的系统信息 下 ...

  4. 酷!一键构建我自己的PHP框架的开发环境

    前言 这几天用docker给我自己的PHP框架构建了一个自动化的开发环境.这是一件很爽的事情,我的目标就是仅仅只需执行一个init命令: 项目自己就创建好了,并且初始化完毕 git初始化完毕,并自动第 ...

  5. 构建VisualStudio2019+OpenCV4.3的C++ windows编译环境

    一.引言 最近在读源代码研究CLAHE的算法,但好久没学习C++了,发现部分代码难以理解,因此最后下决心装一个C++编译器.下载OpenCV源码,这样碰到疑难问题就可以实际测试了.构建过程遇到了些问题 ...

  6. 电力通信机房动力环境监控系统

    科技的迅速发展使机房如雨后春笋般遍地开花,不同的行业使用的机房类型也各不相同,我们先了解一下电力通信机房动力环境监控系统是如何保证电力通信机房稳定.高效的持续工作的. 电力通信机房动力环境监控系统主要 ...

  7. 进程间通信(5) 命名管道2 不同机器通信

    不同机器的通信我一直没解决,现记录下来,以后再看,也欢迎指点! 看资料说是先connectipc一下. 结果我connectIpc错误. 执行cmd命令"net use \192.168.2 ...

  8. 从零开始学习docker(八)多台机器通信

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 在上一节中,我们介绍了在同一个机器里面同一个docker里面不同的容器如何进行通信的.这一节我们介绍如何在不同的 ...

  9. NLP-阅读理解-2015:MRC模型-指导机器去阅读并理解【开篇之作】【完形填空任务】【第一次构建大批量有监督机器阅读理解训练语料】【三种模型结构:LSTM、Attention、Impatient】

    <原始论文:Teaching Machines to Read and Comprehend> 作者想要研究的问题是什么?一一在当下神经网络迅速发展的时代,如何针对机器阅读理解提出一个网络 ...

最新文章

  1. weather_在Weather App中使用Android Location API –搜索城市
  2. 河南单招哪所学校主学计算机,河南单招学校王牌专业 2021年河南单招王牌专业...
  3. 用JS实现一个定时间段的跳转
  4. python中扑克牌类设计_Python中的计数 Counter类
  5. 灯亮怎么办_车辆隔音效果不好怎么办?
  6. 括号配对问题----栈模拟
  7. linux umask命令
  8. 编程算法基础-一刀切法
  9. 2018java面试集合
  10. 安川机器人仿真软件安装
  11. Verilog语法之generate语句
  12. Geometric application of BSTs
  13. ZOHO企业邮箱教程(试用30/15天)
  14. core修改模型属性中的默认单位
  15. 超百万人用它生成3D头像,这项技术刚刚中选了SIGGRAPH Asia 2022
  16. Linux系统重装时保留重要分区
  17. MT6765 datasheet手册,MT6765参考设计,MT6765芯片资料
  18. 头歌华氏度和摄氏度的换算
  19. BootStrap4工具类之阴影效果
  20. 14. 异步加载Js的方式有哪些?

热门文章

  1. 入手评测 联想小新Pro 16怎么样?
  2. target is not existed: .page-component__scroll .el-scrollbar__wrap
  3. 电压放大器的作用原理是什么
  4. .Net 根据年份计算周次和起止日期
  5. 大数据和云计算发展前景怎样?
  6. 进行ui设计培训学费是多少
  7. FPGA数字信号处理(十一)ASK解调技术
  8. selenium抓取斗鱼直播平台数据
  9. 初识frameset
  10. Linux服务器CPU100%问题