课堂部分

1. Windows IPSec配置
2. 抓包分析 IKE SA和IPSec SA建立过程

Windows配置IPSec

使用Win+R打开本地安全设置模块,在IP安全策略创建新IP安全策略


新建的IP安全策略名称自拟,勾选“激活默认响应规则”,使用“123456”(或其他)作为预共享密钥保护密钥交换,指派该策略。


指派

双击该指派的ipsec策略

修改新建策略的属性,添加安全规则。不指定隧道终结点,适用于所有网络连接,使用“123456”作为预共享密钥保护密钥交换。


添加IP筛选器列表,在新的筛选器列表添加新的筛选器,然后添加筛选器操作。在筛选器列表选择“所有IP通讯量”。

在筛选器操作界面选择“需要安全”,然后完成修改属性。

另一台xp同样的配置
ping通

  • “Negotiating IP Security”(正在协商 IP 安全性): 这证明你的 IPSec 策略已经被触发了。你的电脑意识到发往 192.168.130.136 的数据包需要加密,所以它暂停了发送,先去和对方“对暗号”(IKE 协商)。
  • “Request timed out” (或者丢了一个包): 统计信息里显示 Lost = 1,这是完全正常的。因为协商密钥需要几百毫秒甚至更久,第一个 Ping 包通常会因为超时而被丢弃,这恰恰证明了协商过程的存在。
  • “Reply from…”: 后面三个包都通了,说明协商成功!安全通道(SA)建立完毕,后续的数据包都在加密通道里传输了。

服务重启后,之前协商好的安全通道(SA)会立即消失。此时你再去 Ping 对方,系统就必须重新发起 IKE 协商,你就能再次在 CMD 中看到 “Negotiating IP Security” 的提示,或者在 Wireshark 中抓到 ISAKMP 的握手包(主模式/快速模式)。

1
2
net stop PolicyAgent
net start PolicyAgent

抓包分析 IKE SA和IPSec SA建立过程


IKE 第一阶段协商(身份验证):Wireshark 抓包显示,通信双方首先进行了 IKE 主模式(Main Mode)协商(Identity Protection),共 6 个包,用于建立 IKE SA 并验证彼此身份。

IKE 第二阶段协商(建立安全关联):主模式完成后,双方进行了快速模式(Quick Mode)协商,建立 IPSec SA,确定了用于加密后续数据流的具体参数。

数据加密传输(ESP):协商完成后,原本的 ICMP 数据包被封装在 ESP 协议中传输。打开 ESP 包详情可以看到,原始数据被隐藏,无法查看明文内容,证明 VPN 加密通道工作正常。


没有出现 ICMP 协议的字段(如 Type, Code 等),只有 ESP 的头部信息,直接证明了负载内容(Payload)是不可见的、被加密的。

课后部分

安装完Cisco Packet Tracer以游客身份登录

搭建网络环境

初始化配置路由器

设备 接口 IP 地址 子网掩码 说明
Router0 F0/0 (公网) 10.0.0.1 255.255.255.0 连接 Router1
F0/1 (内网) 192.168.1.1 255.255.255.0 PC0 的网关
Router1 F0/0 (公网) 10.0.0.2 255.255.255.0 连接 Router0
F0/1 (内网) 192.168.2.1 255.255.255.0 PC1 的网关

打开cisco模拟器,在模拟器窗口工具栏下选择file-new。在左下角设备栏选取路由器图标,将cisco2811路由器拖到工作区域。单击工作区域的路由器图标,选择CLI项,弹出界面,等待路由器启动后,在弹出的交互对话中,输入“n”回车,然后再按回车。

路由器之间用 交叉线 (Copper Cross-Over) 连接 FastEthernet 0/0 接口。

配置 Router0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Router> enable
Router# configure terminal
! 配置公网接口 F0/0
Router(config)# interface fastEthernet 0/0
Router(config-if)# ip address 10.0.0.1 255.255.255.0
Router(config-if)# no shutdown
Router(config-if)# exit
! 配置内网接口 F0/1
Router(config)# interface fastEthernet 0/1
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# no shutdown
Router(config-if)# exit
! 配置静态路由(让路由器知道怎么去公网)
Router(config)# ip route 0.0.0.0 0.0.0.0 fastEthernet 0/0
Router(config)# ip route 192.168.2.0 255.255.255.0 10.0.0.2

点击 Router1,做对应的配置 :

1
2
3
4
5
6
7
8
9
10
11
12
13
Router> enable
Router# configure terminal
Router(config)# interface fastEthernet 0/0
Router(config-if)# ip address 10.0.0.2 255.255.255.0
Router(config-if)# no shutdown
Router(config-if)# exit
Router(config)# interface fastEthernet 0/1
Router(config-if)# ip address 192.168.2.1 255.255.255.0
Router(config-if)# no shutdown
Router(config-if)# exit
! 默认路由指向公网出口
Router(config)# ip route 0.0.0.0 0.0.0.0 fastEthernet 0/0
Router(config)# ip route 192.168.1.0 255.255.255.0 10.0.0.1

配置PC

第一组:Switch0 下(连接 Router0)
这一组属于 192.168.1.0/24 网段,默认网关是 Router0 的内网接口地址 192.168.1.1

设备名称 IP Address (IP地址) Subnet Mask (子网掩码) Default Gateway (默认网关)
PC0 192.168.1.10 255.255.255.0 192.168.1.1
PC1 192.168.1.20 255.255.255.0 192.168.1.1
PC2 192.168.1.30 255.255.255.0 192.168.1.1

第二组:Switch1 下(连接 Router1)
这一组属于 192.168.2.0/24 网段,默认网关是 Router1 的内网接口地址 192.168.2.1

设备名称 IP Address (IP地址) Subnet Mask (子网掩码) Default Gateway (默认网关)
PC3 192.168.2.10 255.255.255.0 192.168.2.1
PC4 192.168.2.20 255.255.255.0 192.168.2.1
PC5 192.168.2.30 255.255.255.0 192.168.2.1
在 Packet Tracer 中,双击 PC 图标 -> 选择 Desktop 选项卡 -> 点击 IP Configuration,确认勾选 Static(静态),然后填入上述对应数值即可 。



剩下几个类似

连接

路由器连路由器 (Router0 <—> Router1)

  • Router0 的 FastEthernet0/0 连接到 Router1 的 FastEthernet0/0。

路由器连交换机 (Router <—> Switch)

  • Router0 的 FastEthernet0/1 连接到 Switch0 的任意端口
  • Router1 的 FastEthernet0/1 连接到 Switch1 的任意端口

交换机连电脑 (Switch <—> PC)

  • Switch0 的剩余端口(如 F0/2, F0/3…)分别连接到 PC0, PC1, PC2 的 FastEthernet0。
  • Switch1 的剩余端口分别连接到 PC3, PC4, PC5 的 FastEthernet0。

测试网络互通性

测试 PC0 到 Router0 (自己的网关)

  • 双击 PC0 -> Desktop -> Command Prompt
  • 输入命令:ping 192.168.1.1 (Router0 内网口)
  • 输入命令:ping 10.0.0.1 (Router0 公网口)
  • 结果都是通的

测试 PC0 到 Router1 (公网对端)

  • ping 10.0.0.2 (Router1 公网口)

测试 PC0 到 Router1 连接的主机 (对方内网)

  • ping 192.168.2.1 (Router1 内网口)
  • ping 192.168.2.10 (PC3)

配置IPSec VPN

网络基础环境已经全通,这一步的作用是告诉路由器:“如果有数据包是从 192.168.1.0 网段发往 192.168.2.0 网段的,不要直接转发,而是用 IPSec 协议把它加密封装起来,再发给对面的路由器。”

配置 Router0
点击 Router0,进入 CLI 模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Router> enable
Router# configure terminal

! --- 1. 定义 IKE 策略 (第一阶段协商参数) ---
Router(config)# crypto isakmp policy 10
Router(config-isakmp)# authentication pre-share ! 使用预共享密钥认证
Router(config-isakmp)# hash md5 ! 哈希算法使用 MD5
Router(config-isakmp)# encryption des ! 加密算法使用 DES
Router(config-isakmp)# group 2 ! DH 组使用 Group 2
Router(config-isakmp)# lifetime 86400 ! 密钥生存时间
Router(config-isakmp)# exit

! --- 2. 设置预共享密钥 ---
! 密钥为 "bupt",对端公网 IP 为 10.0.0.2
Router(config)# crypto isakmp key bupt address 10.0.0.2

! --- 3. 定义感兴趣流 (ACL) ---
! 告诉路由器哪些流量需要走 VPN (源 1.0 -> 目的 2.0)
Router(config)# access-list 110 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

! --- 4. 定义 IPSec 变换集 (第二阶段加密方式) ---
! 名字叫 "mine",使用 ESP-DES 加密和 ESP-MD5 认证
Router(config)# crypto ipsec transform-set mine esp-des esp-md5-hmac
Router(cfg-crypto-trans)# exit

! --- 5. 创建 Crypto Map (将以上策略捆绑) ---
Router(config)# crypto map mymap 101 ipsec-isakmp
Router(config-crypto-map)# match address 110 ! 匹配刚才定义的 ACL
Router(config-crypto-map)# set peer 10.0.0.2 ! 指定隧道对端是 10.0.0.2
Router(config-crypto-map)# set transform-set mine ! 使用刚才定义的加密集
Router(config-crypto-map)# set pfs group2 ! 启用完美向前保密
Router(config-crypto-map)# set security-association lifetime seconds 86400
Router(config-crypto-map)# exit

! --- 6. 将 Map 应用到公网接口 ---
Router(config)# interface fastEthernet 0/0
Router(config-if)# crypto map mymap
! (此时控制台可能会提示 ISAKMP is ON)
Router(config-if)# exit

点击 Router1,进入 CLI 模式。注意:配置与 Router0 几乎镜像,但 IP 地址和 ACL 方向要反过来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Router> enable
Router# configure terminal

! --- 1. 定义 IKE 策略 (必须与 Router0 一致) ---
Router(config)# crypto isakmp policy 10
Router(config-isakmp)# authentication pre-share
Router(config-isakmp)# hash md5
Router(config-isakmp)# encryption des
Router(config-isakmp)# group 2
Router(config-isakmp)# lifetime 86400
Router(config-isakmp)# exit

! --- 2. 设置预共享密钥 (必须与 Router0 一致) ---
! 注意:对端地址是 10.0.0.1
Router(config)# crypto isakmp key bupt address 10.0.0.1

! --- 3. 定义感兴趣流 (ACL) ---
! 注意:源是 2.0,目的是 1.0 (与 Router0 相反)
Router(config)# access-list 110 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

! --- 4. 定义 IPSec 变换集 (必须与 Router0 一致) ---
Router(config)# crypto ipsec transform-set mine esp-des esp-md5-hmac
Router(cfg-crypto-trans)# exit

! --- 5. 创建 Crypto Map ---
Router(config)# crypto map mymap 101 ipsec-isakmp
Router(config-crypto-map)# match address 110
Router(config-crypto-map)# set peer 10.0.0.1 ! 对端是 Router0
Router(config-crypto-map)# set transform-set mine
Router(config-crypto-map)# set pfs group2
Router(config-crypto-map)# set security-association lifetime seconds 86400
Router(config-crypto-map)# exit

! --- 6. 将 Map 应用到公网接口 ---
Router(config)# interface fastEthernet 0/0
Router(config-if)# crypto map mymap
Router(config-if)# exit

验证配置结果


打开 PC0 的 Desktop -> Command Prompt,输入 ping 192.168.2.10

捕获数据: 点击模拟面板上的 Auto Capture / Play 按钮,观察数据包的传输动画 。

当数据包到达 Router0(或者离开 Router0)时,点击那个信封图标(数据包),打开 PDU Information 窗口。

  • In Layers (入站 - 左侧):
    • Layer 3: 源 IP 是 192.168.1.10,目的 IP 是 192.168.2.10
    • 说明: 这是 PC0 发出的原始 ICMP 请求,地址都是内网私有地址
  • Out Layers (出站 - 右侧):
    • Layer 3: 源 IP 变成了 10.0.0.1,目的 IP 变成了 10.0.0.2
    • 说明: 路由器为数据包加上了新的公网 IP 头部(隧道头),原始的内网 IP 信息已被隐藏在内部。