【网络协议安全】IPSec+VPN实验
网络协议安全实验三,建立点对点IP隧道然后在隧道上使用IPSec
这个实验三跟揍了我两天一样,实验书是看不懂一点的,接口是总是放反的,IP和网关是永远忘记配的,问题根源是永远找不到的
但是可能是我最理解的一个,因为没法照搬书上的,果然书烂催人理解
顺便记一下字体设置

环境配置
参照
网络物理结构:

网络逻辑结构:

放置和连接
路由器需要添加接口。点击电源(关闭),然后选择NM-2FE2W,拖到左边的黑框里
The NM-2FE2W Module provides two Fast-Ethernet interfaces for use with copper media

然后再点一次电源(开机),就有了四个接口

然后连接

配路由器的ip和子网掩码
根据这个图来配
每个路由器的每个连了线的接口都要配一下IP,路由器的接口对应关系和书上不太一样,我这里是:
1 | Router0: |
建立点对点IP隧道
分配OSPF区域
命令解析
OSPF:Open Shortest Path First(开放式最短路径优先)
OSPF路由用于创建边缘路由器连接公共网络接口之间的传输路径
基本命令:
1 | router ospf 1 // 启用 OSPF 进程 |
router ospf 01这个1是OSPF进程号,只在本地有效,可以随便写。
192.168.1.0 是接口所在的网络地址,0.0.0.255 是通配符掩码(不是子网掩码)。这里的意思是匹配从 192.1.1.0 到 192.1.1.255 的所有IP地址。
area 0 是主干区域。
这个命令的作用是,让路由器检查自己的所有接口,如果满足匹配条件,就在该接口上启动OSPF进程,将这个接口划入OSPF区域。
分配区域
将公网的三台路由器所有接口,以及边缘路由器连接公网的接口,都分配到同一个OSPF区域area 1。其实就是在每个路由器上都执行一遍命令,覆盖到所有接触公网的接口就行了。

提示说得有一个up的接口才能运行OSPF进程。
查看接口状态
1 | show ip interface brief |

结果都是administratively down啊,怎么是默认关闭的!回去把接口都打开再回来
点这个port status后面的on(所以原来前面很多线红的是因为没打开啊…)

继续配。比如Router3:

按照这个步骤完成剩下所有路由器的配置。

检查
查看OSPF链路状态数据库,包含区域内所有路由器通告的链路状态信息
1 | show ip ospf database |
看不太懂但是反正1-6都在,应该是没问题

叫ai解析一下:
- Router Link States
列出所有在 Area 1 内产生 Type-1 LSA 的路由器(每台路由器一行)。
- Link ID = 产生该 LSA 的路由器 RID(通常是回环口地址)。
- ADV Router = 同样就是 RID。
- Age/Seq#/Checksum 用于新旧比对与校验。
- Link count = 这台路由器在 Area 1 里通告的链路数量(接口/邻居)。
说明:Area 1 当前有 6 台路由器,其中 192.1.5.1、192.1.6.x 三台各连了 3 条链路,其余只连 1 条。- Net Link States
列出 Area 1 内所有 Type-2 LSA(DR 产生的网络 LSA)。
- Link ID = DR 在该广播网段接口的 IP 地址(不是 RID)。
- ADV Router = 哪台路由器当 DR 就由谁通告(通常是 RID)。
说明:Area 1 里存在 6 个广播/NBMA 网段,已经选出 DR,且 DR 都在正常发布网络 LSA。
完成分配后,各路由器应该都是互相可达的
定义和配置IP隧道
命令解析
1 | interface tunnel 1 // 创建编号为1的IP隧道接口,进入该隧道接口的隧道接口配置模式。 |
source必须填本端路由器上的接口,destination填对端的可达地址
需要在隧道两端机器上都配置一遍
配置IP隧道
在三个边缘路由器(我这是012)上分别建两条隧道,通往另外两个
千万注意要看准接口…以及隧道两端给隧道的地址需要不一样,且在同一网段
在Router0:


这会发现Router2选错路由器了…回去重搞(设IP,加OSPF)

检查
查看本机的隧道网络(其实是全部反正包含了)
1 | show ip interface brief |

最后建立的隧道大概是这样:

RIP路由
RIP(Routing Information Protocol)
命令:
1 | Router(config)# router rip |
我们要让三个内网以及刚刚建好的隧道网络都用RIP连起来,那么这些网络的网段都要用network命令添加一遍
只能添加本路由器接口所在网段,所以要在三个边缘路由器都加一遍(盯着隧道网络那张图加)
比如说Router0:
1 | Router(config)#router rip |



检查:
查看通过RIP学习到的路由
1 | show ip route rip |

查看RIP路由数据库

检查路由表
(此时此人又发现边缘路由器接内网那边的接口没配置IP,回去配了)
路由表解析
刚配置完成(或者有修改)的话可能需要等上一段时间,等RIP更新完表项
路由项类型(路由来源代码)很多,这里只出现了三类(都是以该路由器为标准):
1 | C - connected: 通往或直接连接(包括隧道网络) |
查看路由表命令:
1 | Router#show ip route |
后来问了同门gui的查看方法:点右侧工具栏的放大镜(Inspec),点路由器,选择routing table

边缘路由器的路由表
直接相连(C)应该有四项,两个接口网段+两个隧道网段
O有五项,公网六个网段减去直接相连的一个
R有四项,内网两个(也是减去直接相连的之后)各一项+不直接相连的那个隧道网络有两项(因为可以走左边也可以走右边)
Router0:

Router1:

Router2:

中间路由器的路由表
三个接口所以三个C
O有四项,公网六个网段减去直接相连的三个,共三个网段,其中有个有两项,因为走哪边跳数都一样
Router3:

Router4:

Router5:

PC0 Ping Server2
排查问题
发包的时候提示:

看了下感觉是因为,没给server配IP()回去配了下。然后fail了,发现PC0也没配IP()
继续fail,发现是得给server和PC0配网关()跨网段传输必须要网关的
Config → Global → Gateway,输入所在网段的路由器接口 IP。比如说这个server,就得配成Router2的Fa0/0接口的IP

还是fail。从PC0往外一步步ping看看
Router0左右都没问题,到Router3左端就不通了。

ai说是Router3不知道该怎么回包,没有去往192.168.1.0的路由。也是,没在中间路由器上搞路由来着。那就不走中间,直接去边缘路由器吧,走隧道
到Router2左右都是通的

等一下怎么通了()

模拟操作&查看报文
也是顺利到达了

查看报文结构:选中一条,点右边的Info,弹出来窗口点inbound PDU details
看内网中报文,这里选switch到Router0的

看公网中的报文,这里选Router3到Router5的。
外层source是192.1.1.1,也就是Router0的公网接口ip;dest是192.1.3.1,Router2的公网接口ip。内层还是一样的

IPSec VPN
在点对点IP隧道的基础上实现安全通信,双向身份鉴别+保证数据的完整性和保密性
还是用之前那个隧道,Router0到Router2
配置安全策略
隧道两端完成安全策略配置过程,指定建立安全传输通道使用的加密算法3DES、报文摘要算法MD5、共享密钥鉴别机制和DH组号DH-2。
在隧道两端,也就是Router0和Router2,分别配置:
1 | Router(config)#crypto isakmp policy 1 // 定义编号和优先级为1的安全策略 |


配置IP Sec变换集
隧道两端通过变换集确定IPSec使用的安全协议以及相关算法
tunnel是变换集名字,esp-3des esp-md5-hmac是选择ESP作为安全协议后,指定的加密算法和HMAC算法。
1 | Router(config)#crypto ipsec transform-set tunnel esp-3des esp-md5-hmac |


配置分组过滤器
建一个编号101的ACL,允许GRE协议的,src=192.1.1.1,dest=192.1.3.1的报文通过,剩下的IP报文全部deny
注意一下源和目的不要写反了
1 | Router(config)#access-list 101 permit gre host 192.1.1.1 host 192.1.3.1 |


配置加密映射
将IP Sec变换集和分组过滤器绑定在一起
1 | Router(config)#crypto map tunnel 10 ipsec-isakmp // 创建ipsec-isakmp环境下的加密映射,名tunnel,序号10 |


作用加密映射
将刚刚定义的加密映射作用到某个接口上
比如Router0,去往Router2的接口是Fa0/1,那么就把刚刚定义的加密映射tunnel作用到接口Fa0/1
1 | Router(config)#interface FastEthernet0/1 |

同理,Router2这边接口应该是Fa0/1

检查
1 | # 检查ISAKMP SA |
问题很大。IKE阶段1还没建起来

检查两边的IKE策略
1 | Router#show crypto isakmp policy |
没问题,一模一样的


检查预共享密钥等等
1 | show run |

啥都对啊,我决定尝试指定IKE的对端IP了
…发现ACL的src和dst写反了…Router0的应该从192.1.1.1到192.1.3.1。删掉重写
1 | Router(config)# no access-list 101 |


然后重新挂接口。再检查,完全胜利

查看报文
再次打开模拟操作模式,从PC0往server2发包,成功。从Info查看报文信息,这回看outbound
内层IP分组,没啥好说的,src和dst都是原始的

外层IP分组

外层IP分组封装成ESP
