IPSec典型配置
声明:这是我在模拟器中做的实验,实际中以具体组网需求为准。
一.采用手工方式建立保护IPV4报文的IPSec隧道
1.组网图
2.组网需求
在RTA和RTC之间建立一条IPsec隧道,对Host 1所在的子网(10.138.1.0/16)与PC1所在的子网(10.139.1.2/16)之间的数据流进行安全保护。具体要求如下:
-
封装形式为隧道模式
-
安全协议采用ESP协议
-
加密算法采用128比特的AES,认证算法采用SHA1
-
手工方式建立IPSec SA
-
验证配置
3.配置步骤
RTA配置:
//IP地址在组网图上面已经标注,这里关于各接口的IP地址的配置就不写了
<H3C> sys
[H3C]sys RTA
//创建一条ACL,定义要保护10.138.0.0/16 与 10.139.0.0/16网络之间的IPV4数据
[RTA]acl advanced 3001
[RTA-acl-ipv4-adv-3001]rule permit ip source 10.138.0.0 0.0.255.255 destination 10.139.0.0 0.0.255.255
//这里需要配置HOST1到PC1的静态路由,就不写配置了,后面将路由表贴出来
//创建安全提议tran1,这里需要注意创建安全提议的命令,书上写的是ipsec proposal tran1 实际中是下面的命令
[RTA]ipsec transform-set tran1
//配置安全协议为隧道模式
[RTA-ipsec-transform-set-tran1]encapsulation-mode tunnel
//配置采用安全协议为esp
[RTA-ipsec-transform-set-tran1]protocol esp
//配置esp协议采用的加密算法为采用128bit的aes,认证算法为sha1
[RTA-ipsec-transform-set-tran1]esp encryption-algorithm aes-cbc-128
[RTA-ipsec-transform-set-tran1]esp authentication-algorithm sha1
//创建一条手工方式IPSec安全策略,名称为 map1,序列号为 10
[RTA]ipsec policy map1 10 manual
//指定引用ACL 3001
[RTA-ipsec-policy-manual-map1-10]security acl 3001
//指定引用安全提议tran1
[RTA-ipsec-policy-manual-map1-10]transform-set tran1
//指定IPSec隧道对端IP地址为 200.1.1.1
[RTA-ipsec-policy-manual-map1-10]remote-address 200.1.1.1
//配置esp出方向SPI为12345,入方向SPI为54321
//SPI,一个32比特的值,用于区分相同IPSec协议、相同目的地的不同SA
//安全联盟(SA)是发送者和接收者两个IPSec通信实体之间经过协商建立的一个提供安全服务的单向逻辑“连接”,
//是与给定的一个网络连接或一组网络连接相关联的安全信息参数的集合。SA可以为AH协议创建,也可以为ESP协议创
//建。
[RTA-ipsec-policy-manual-map1-10]sa spi outbound esp 12345
[RTA-ipsec-policy-manual-map1-10]sa spi inbound esp 54321
//配置esp协议 出方向SA密钥为明文字符串abcdefg,入方向SA密钥为明文字符串gfedcba
[RTA-ipsec-policy-manual-map1-10]sa string-key outbound esp simple abcdefg
[RTA-ipsec-policy-manual-map1-10]sa string-key inbound esp simple gfedcba
//在接口s1/0上应用IPSec安全策略map1
[RTA-ipsec-policy-manual-map1-10]int s1/0
[RTA-Serial1/0]ipsec apply policy map1
RTC配置:
<H3C>sys
[H3C]sys RTC
//配置一条ACL定义要保护网络10.139.0.0/16到10.138.0.0/16之间的IPV4数据
[RTC]acl advanced 3001
[RTC-acl-ipv4-adv-3001]rule permit ip source 10.139.0.0 0.0.255.255 destination 10.138.0.0 0.0.255.255
//这里应当配置一条10.139.0.0/16到10.138.0.0/16网络的静态路由
[RTC]ip route-static 10.138.0.0 255.255.0.0 200.1.1.1
//创建安全提议tran1
[RTC]ipsec transform-set tran1
//配置安全协议对IP报文封装形式为隧道模式
[RTC-ipsec-transform-set-tran1]encapsulation-mode tunnel
//配置采用的安全协议为ESP
[RTC-ipsec-transform-set-tran1]protocol esp
//配置ESP协议采用加密算法为128比特的AES,认证算法为SHA1
[RTC-ipsec-transform-set-tran1]esp encryption-algorithm aes-cbc-128
[RTC-ipsec-transform-set-tran1]esp authentication-algorithm sha1
//创建一条手工方式的安全策略,名称为use1,序列号为10
[RTC]ipsec policy use1 10 manual
//指定引用ACL3001
[RTC-ipsec-policy-manual-use1-10]security acl 3001
//指定引用的IPSec安全提议为tran1
[RTC-ipsec-policy-manual-use1-10]transform-set tran1
//指定对端IP地址为100.1.1.1
[RTC-ipsec-policy-manual-use1-10]remote-address 100.1.1.1
//配置ESP协议出方向SPI为54321,入方向SPI为12345
[RTC-ipsec-policy-manual-use1-10]sa spi outbound esp 54321
[RTC-ipsec-policy-manual-use1-10]sa spi inbound esp 12345
//配置esp协议 入方向SA密钥为明文字符串abcdefg,出方向SA密钥为明文字符串gfedcba
[RTC-ipsec-policy-manual-use1-10]sa string-key inbound esp simple abcdefg
[RTC-ipsec-policy-manual-use1-10]sa string-key outbound esp simple gfedcba
//在接口s1/0上引用IPSec安全策略use1
[RTC-Serial1/0]ipsec apply policy use1
验证配置:
RTA路由表:
RTC路由表:
HOST1 Ping PC1结果:
RTA上手工创建的IPSec SA:
IPsec处理的报文的统计信息:
应当说明的一点是,在RTA以及RTC s1/0端口均抓不到IPSec报文,不知道是我方法的问题还是我还没有学到的原理问题,这里先将疑问写到这里,有空研究研究。
二、采用IKE方式建立保护IPv4报文的IPSec隧道
1.组网图
2.组网需求
在RTA与RTB之间建立一条IPSec隧道,对Host1所在子网(10.138.0.0/16)与Host2所在子网(10.139.0.0/16)之间的数据流进行保护,具体有如下要求:
- 封装形式为隧道模式
- 安全协议采用ESP协议
- 加密算法采用128比特的AES,认证算法采用SHA1
- IKE协商方式建立IPSec SA
- 验证配置
3.配置步骤
//各个设备各个接口的IP地址在图中已经标明,这里就不在写出来
RTA配置:
<H3C>sys
[H3C]sys RTA
//配置一条ACL,定义要保护10.138.0.0/16子网到10.139.0.0/16子网之间的数据流
[RTA]acl advanced 3101
[RTA-acl-ipv4-adv-3101]rule permit ip source 10.138.0.0 0.0.255.255 destination 10.139.0.0 0.0.255.255
[RTA-acl-ipv4-adv-3101]quit
//配置到达Host2子网的静态路由
[RTA]ip route-static 10.139.0.0 255.255.0.0 100.1.1.2
//创建IPSec安全提议tran_a
[RTA]ipsec transform-set tran_a
//配置安全协议对IP报文的封装为隧道模式
[RTA-ipsec-transform-set-tran_a]encapsulation-mode tunnel
//配置采用安全协议为ESP
[RTA-ipsec-transform-set-tran_a]protocol esp
//配置加密算法为128比特的AES,认证算法为SHA1
[RTA-ipsec-transform-set-tran_a]esp encryption-algorithm aes-cbc-128
[RTA-ipsec-transform-set-tran_a]esp authentication-algorithm sha1
[RTA-ipsec-transform-set-tran_a]quit
//创建并配置 ike keychain,名称为keychain_a
//ike keychain命令用来创建并进入一个IKE keychain视图,该视图用于配置IKE对等体的密钥信息。
//undo ike keychain命令用来删除指定的IKE keychain以及IKE对等体的密钥信息。
//注:这里配置的ike keychain 相当于参考资料路由与交换技术第一卷(下)配置IPSec时的配置IPSec对等体(IPSec peer)步骤
[RTA]ike keychain keychain_a
//配置对端(IP:200.1.1.1/24)使用的预共享密钥为明文qjgjybjxcygwgr
[RTA-ike-keychain-keychain_a]pre-shared-key address 200.1.1.1 255.255.255.0 key simple qjgjybjxcygwgr
[RTA-ike-keychain-keychain_a]quit
//创建并配置ike profile,名称为profile_a
//ike profile命令用来创建一个IKE profile,并进入IKE profile视图。
//undo ike profile命令用来删除指定的 IKE profile。
//match local address命令用来限制 IKE profile的使用范围,即IKE profile只能用于指定地址或指定接口的地址上的IKE协商。
//undo match local address命令用来取消对IKE profile使用范围的限制。
[RTA]ike profile profile_a
[RTA-ike-profile-profile_a]keychain keychian_a
[RTA-ike-profile-profile_a]match remote identity address 200.1.1.1 255.255.255.0
[RTA-ike-profile-profile_a]quit
//创建一条IKE协商方式的IPSec安全策略,名称为map1,序列号为10
[RTA]ipsec policy map1 10 isakmp
//指定引用ACL 3001
[RTA-ipsec-policy-isakmp-map1-10]security acl 3001
//指定IPSec本端地址为100.1.1.1,对端地址为200.1.1.1
[RTA-ipsec-policy-isakmp-map1-10]local-address 100.1.1.1
[RTA-ipsec-policy-isakmp-map1-10]remote-address 200.1.1.1
//指定安全策略map1引用profile 为profile_a
[RTA-ipsec-policy-isakmp-map1-10]ike-profile profile_a
[RTA-ipsec-policy-isakmp-map1-10]quit
//在接口s1/0上应用安全策略map1
[RTA-Serial1/0]ip address 100.1.1.1 255.255.255.0
[RTA-Serial1/0]ipsec apply policy map1
[RTA-Serial1/0]quit
RTB配置:
<H3C>sys
[H3C]sys RTB
//配置一条ACL,定义保护10.139.0.0/16子网到10.138.0.0/16子网之间的数据流
[RTB]acl advanced 3001
[RTB-acl-ipv4-adv-3001]rule permit ip source 10.139.0.0 0.0.255.255 destination 10.138.0.0 0.0.255.255
//配置到达Host1所在子网的静态路由
[RTB]ip route-static 10.138.0.0 255.255.0.0 200.1.1.1
//创建IPSec安全提议tran_a
[RTB]ipsec transform-set tran_a
//配置安全协议对IP报文的封装形式为隧道模式
[RTB-ipsec-transform-set-tran_b]encapsulation-mode tunnel
//配置安全协议为ESP
[RTB-ipsec-transform-set-tran_b]protocol esp
//配置安全协议采用加密算法为128比特的AES,认证算法为SHA1
[RTB-ipsec-transform-set-tran_b]esp encryption-algorithm aes-cbc-128
[RTB-ipsec-transform-set-tran_b]esp authentication-algorithm sha1
//创建并配置IKE keychain,名称为keychain_a
[RTB]ike keychain keychain_a
[RTB-ike-keychain-keychain_b]pre-shared-key address 100.1.1.1 255.255.255.0 key simple qjgjybjxcygwgr
//创建并配置IKE profile,名称为profile_a
[RTB]ike profile profile_a
[RTB-ike-profile-profile_b]keychain keychain_a
[RTB-ike-profile-profile_b]match remote identity address 100.1.1.1 255.255.255.0
//创建一条IKE协商方式的安全策略,名称为use1,序列号为10
[RTB]ipsec policy use1 10 isakmp
//指定安全策略引用ACL 3001
[RTB-ipsec-policy-isakmp-use1-10]security acl 3001
//指定引用安全的安全提议为tran_a
[RTB-ipsec-policy-isakmp-use1-10]transform-set tran_a
//指定IPSec隧道本端地址为200.1.1.1,对端地址为100.1.1.1
[RTB-ipsec-policy-isakmp-use1-10]local-address 200.1.1.1
[RTB-ipsec-policy-isakmp-use1-10]remote-address 100.1.1.1
//指定引用profile为profile_a
[RTB-ipsec-policy-isakmp-use1-10]ike-profile profile_a
[RTB-ipsec-policy-isakmp-use1-10]quit
//在接口s1/0应用IPSec安全策略use1
[RTB-Serial1/0]ip address 200.1.1.1 255.255.255.0
[RTB-Serial1/0]ipsec apply policy use1
[RTB-Serial1/0]quit
4.验证配置
RTA与RTB之间没有报文通过时使用命令display ipsec sa是没有任何输出的
ps:在配置成功之前我发现子网10.138.0.0/16与子网10.139.0.0/16之间无法正常通信,使用命令display ipsec statustics命令查询发现是因为找不到IPSec SA而引起的丢包,
于是在使用display ipsec policy显示IPSec安全策略信息发现RTB的安全策略配置信息有误,修改一下,使用RTB ping -a 10.139.1.1 10.138.1.1 有输出信息,至此配置成功。
RTA协商生成的IPSec SA
RTB协商生成的IPSec SA
三、配置IPSec反向路由注入
组网图:
组网需求:
企业分支通过IPSec VPN访问企业总部
- 总部网关RTA与分支RTB、RTC之间建立IPSec隧道,对总部网络1.1.1.0/24与分支网络2.2.2.0/24和3.3.3.0/24之间的数据进行保护
- 使用IKE协商方式建立IPSec SA,采用ESP协议,加密算法为DES,认证算法为SHA1
- IKE协商采用预共享密钥认证方式、3DES加密算法、SHA1认证算法
- 在RTA上开启IPSec反向路由注入功能,实现总部到分部之间的静态路由随IPSec SA的建立而动态生成
配置步骤
各设备各个接口的IP地址如图所示,下面就不写了。
RTA配置:
//创建并配置安全提议,名称为tran_a,采用ESP安全协议,加密算法为DES,认证算法为SHA1
<H3C>sys
[H3C]sys RTA
[RTA]ipsec transform-set tran_a
[RTA-ipsec-transform-set-tran_a]encapsulation-mode tunnel
[RTA-ipsec-transform-set-tran_a]protocol esp
[RTA-ipsec-transform-set-tran_a]esp encryption-algorithm des
[RTA-ipsec-transform-set-tran_a]esp authentication-algorithm sha1
[RTA-ipsec-transform-set-tran_a]quit
//配置IPSec安全策略模板,名称为temp_a 顺序号为1
//ipsec { ipv6-policy-template | policy-template } template-name seq-number
//undo ipsec { ipv6-policy-template | policy-template } template-name [ seq-number ]
[RTA]ipsec policy-template temp_a 1
[RTA-ipsec-policy-template-temp_a-1]transform-set tran_a
//配置IPSec反向路由注入功能
//reverse-route dynamic命令用来开启IPsec反向路由注入功能 undo reverse-route dynamic命令用来关闭IPsec反向路由注入功能
//reverse-route preference命令用来设置IPsec反向路由注入功能生成的静态路由的优先级 undo reverse-route preference命令用来恢复缺省情况
//reverse-route tag命令用来设置IPsec反向路由注入功能生成的静态路由的Tag值,该值用于标识静态路由,以便在路由策略中根据Tag值对路由进行灵活的控制 undo reverse-route tag命
令用来恢复缺省情况。
[RTA-ipsec-policy-template-temp_a-1]reverse-route dynamic
[RTA-ipsec-policy-template-temp_a-1]reverse-route preference 100
[RTA-ipsec-policy-template-temp_a-1]reverse-route tag 1000
[RTA-ipsec-policy-template-temp_a-1]quit
//创建并配置IKE协商方式的安全策略,名称为map_a,基于安全策略模板temp_a
[RTA]ipsec policy map_a 10 isakmp template temp_a
//创建并配置IPSec安全提议1,指定使用预共享密钥认证方式、加密算法为3DES、认证算法为SHA1
[RTA-ike-proposal-1]encryption-algorithm 3des-cbc
[RTA-ike-proposal-1]authentication-algorithm sha
[RTA-ike-proposal-1]authentication-method pre-share
[RTA-ike-proposal-1]quit
//配置IKE keychain,名称为keychain_a,指定对端IP为2.2.2.2与3.3.2.2,预共享密钥为明文201507079
[RTA]ike keychain keychain_a
[RTA-ike-keychain-keychain_a]pre-shared-key address 2.2.2.2 key simple 201507079
[RTA-ike-keychain-keychain_a]pre-shared-key address 3.3.2.2 key simple 201507079
//在接口s1/0引用安全策略map_a
[RTA]int s1/0
[RTA-Serial1/0]ipsec apply policy map_a
[RTA-Serial1/0]quit
RTB配置:
<H3C>sys
[H3C]sys RTB
//创建并配置IPSec安全提议,名称为tran_a,IP报文封装形式为隧道模式,安全协议为ESP,加密算法为DES,认证算法为sha1
[RTB]ipsec transform-set tran_a
[RTB-ipsec-transform-set-tran_a]encapsulation-mode tunnel
[RTB-ipsec-transform-set-tran_a]protocol esp
[RTB-ipsec-transform-set-tran_a]esp encryption-algorithm des
[RTB-ipsec-transform-set-tran_a]esp authentication-algorithm sha1
//配置ACL,定义要保护2.2.3.0/24与1.1.2.0/24之间的数据流
[RTB]acl advanced 3001
[RTB-acl-ipv4-adv-3001]rule permit ip source 2.2.3.0 0.0.0.255 destination 1.1.1.0 0.0.0.255
[RTB-acl-ipv4-adv-3001]quit
//创建并配置IPSec安全策略,名称为map_a,引用安全提议tran_a,引用ACL3001,并制定IPSec隧道的对端地址为1.1.2.1
[RTB]ipsec policy map_a 10 isakmp
[RTB-ipsec-policy-isakmp-map_a-10]transform-set tran_a
[RTB-ipsec-policy-isakmp-map_a-10]security acl 3001
[RTB-ipsec-policy-isakmp-map_a-10]remote-address 1.1.2.1
[RTB-ipsec-policy-isakmp-map_a-10]quit
//创建并配置IKE提议1,认证方式为预共享密钥,加密算法为3DES,认证算法为SHA1
[RTB]ike proposal 1
[RTB-ike-proposal-1]encryption-algorithm 3des-cbc
[RTB-ike-proposal-1]authentication-algorithm sha
[RTB-ike-proposal-1]authentication-method pre-share
[RTB-ike-proposal-1]quit
//创建并配置IKE keychain,名称为keychain_a,对端IP地址为1.1.2.1,预共享密钥为明文201507079
[RTB]ike keychain keychain_a
[RTB-ike-keychain-keychain_a]pre-shared-key address 1.1.2.1 key simple 201507079
[RTB-ike-keychain-keychain_a]quit
//在接口s1/0上应用IPSec安全策略map_a
[RTA]int s1/0
[RTA-Serial1/0]ipsec apply policy map_a
[RTA-Serial1/0]quit
RTC配置:
与RTB配置大同小异
验证配置:
这里我虽然将RTC配置完成,但是与RTA之间的IPSec 隧道却未建立成功,这里先留下疑问(日后再来解决此问题)
在RTA使用命令display ip routing-table verbose可以看到IPSec反向路由注入生成的静态路由,如下图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库