我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么进行Linux IPsec的分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么进行Linux IPsec的分析

今天就跟大家聊聊有关怎么进行Linux IPsec的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

这里主要讲述通过复盘排查IPSec故障的整体过程,揭示分析故障的方法,以及通过该故障学习相关知识。

由于业务需要,我们在海外的某些节点上搭建了VPN,方便海外节点之间的数据交互,某天我们在两个新节点之间搭建了一条新的VPN,上线之后Ping、traceroute测试无异常,观察已经有流量通过,监控指标等一切正常。但是过了半个小时后,业务反馈两个新节点之间网络不通,发现问题后紧急上线回退了配置。然后事后线下回测,发现通过重启IPsec 进程,能重现时通时不通的现象。

接下来重现复盘一下当时的配置和场景,以及解释该问题的根因。

环境简述

怎么进行Linux IPsec的分析

如上所示,A/B两个节点通过IPsec打通,A侧的网段为10.0.0.0/24,B侧的网段为10.0.1.0/24与10.0.2.0/24。A侧将去往10.0.1.0/24与10.0.2.0/24网段的数据包丢向节点B的IPSec Server,反之亦然。

一侧的配置如下:

conn Tunnel1

    authby=secret

    auto=start

    left=%defaultroute

    leftid=1.1.1.1(本侧公网IP)

    right=2.2.2.2(对侧公网IP)

    type=tunnel

    ikelifetime=8h

    keylife=1h

    phase2alg=aes128-sha1;modp1024

    ike=aes128-sha1;modp1024

    auth=esp

    keyingtries=%forever

    keyexchange=ike

     leftsubnets={10.0.1.0/24,10.0.2.0/24}

     rightsubnet=10.0.0.0/24

     dpddelay=10

    dpdtimeout=30

    dpdaction=restart_by_peer

异常表现与原因

异常的表象为节点A的后端服务集群无法与节点B后端的服务正常通信,但是查看IPSec服务的状态时,IPSec的状态是正常的,甚至能抓包看到数据在IPSec Tunnel中通信,但是当节点A与B通信异常的时候,IPSec Server不正常向后端转发加密的数据包。然后查看/proc/net/xfrm_stat文件发现有一个XfrmInTmplMismatch错误计数一直处于上升状态,经查这个报错的原因为No matching template for states不匹配。简述就是IPSec的SA与SP不相匹配,然后在通过ip xfrm monitor 命令发现节点A与B之间通信的SPI不一致。

怎么进行Linux IPsec的分析

图1

怎么进行Linux IPsec的分析

图2

首先看图2,请求发起时走的Tunnel的SPI为0x198e7538,属于reqid 16385号 Tunnel,回包时走的Tunnel 的SPI为0x9ce44e77,属于reqid 16389号Tunnel。由于两条Tunnel的IKE不同,因此出现了XfrmInTmplMismatch上升的错误,解决方案很简单,将配置文件中的leftsubnets={10.0.1.0/24,10.0.2.0/24}改为leftsubnet=0.0.0.0/0,这样就能避免来回路径不一致的问题(PS.因为只有一条路了:))

根因分析

解决方案已经有了,但是做人总得深入了解一下,为啥当有两条IPSec Tunnel时,路由会发生错误。由于上述看到是因为来回路径不同导致的问题,因此看源码找一下SPI的生成规则:

https://github.com/xelerance/Openswan/blob/master/programs/pluto/kernel.h

怎么进行Linux IPsec的分析

https://github.com/xelerance/Openswan/blob/master/programs/pluto/kernel.c

中有一个函数是get_ipsec_spi ,他的作用为生成唯一的SPI号,然后我们一下它是如何生成SPI号的:

怎么进行Linux IPsec的分析

根据以上,我们就能发现,生成SPI的时候并不会考虑对端的子网掩码。

综上,就是本次排查IPSec故障的所有步骤。

看完上述内容,你们对怎么进行Linux IPsec的分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么进行Linux IPsec的分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么进行Linux IPsec的分析

今天就跟大家聊聊有关怎么进行Linux IPsec的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这里主要讲述通过复盘排查IPSec故障的整体过程,揭示分析故障的方法,以及通过该
2023-06-05

怎么进行Linux内核Crash分析

今天就跟大家聊聊有关怎么进行Linux内核Crash分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打
2023-06-16

怎么进行JDBC的分析

这期内容当中小编将会给大家带来有关怎么进行JDBC的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInt
2023-06-17

怎么进行static的分析

这期内容当中小编将会给大家带来有关怎么进行static的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。static 总结 static Fields static Meth
2023-06-02

怎样进行Linux网络配置的分析

本篇文章给大家分享的是有关怎样进行Linux网络配置的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。进入Linux界面后,右击选择open terminal:会出现命令行窗
2023-06-06

怎么进行Linux系统内核架构分析

这期内容当中小编将会给大家带来有关怎么进行Linux系统内核架构分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Linux系统中内核是一个非常重要的一部分,那么Linux内核具体是什么样子呢?下面本篇文
2023-06-28

如何进行Linux的性能分析

今天就跟大家聊聊有关如何进行Linux的性能分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。当你登陆一台 Linux 服务器之后,因为一个问题要做性能分析时:你会在第 1 分钟内做
2023-06-16

如何进行Linux命令行分析

如何进行Linux命令行分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、命令行真的好吗程序员的使命维基百科的解释:命令行界面(英语:command-line inte
2023-06-28

怎样进行Node.js的分析

这篇文章给大家介绍怎样进行Node.js的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、关于 Node.js1.Node.js 是什么Node.js® is a JavaScript runtime built
2023-06-04

怎么进行Spark example的运行过程分析

这篇文章将为大家详细讲解有关怎么进行Spark example的运行过程分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。pom.xml2023-06-03

怎么进行ActionInvoker源码分析

本篇内容介绍了“怎么进行ActionInvoker源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!throw new RenderTe
2023-06-17

怎么使用Mongodb进行分析

要使用Mongodb进行分析,需要按照以下步骤进行操作:1. 安装Mongodb数据库:首先,需要安装Mongodb数据库,并将其设置为运行状态。可以从Mongodb官方网站下载适合您操作系统的安装程序,并按照官方文档中的说明进行安装。2.
2023-08-23

怎么进行Java SPI机制的分析

这篇文章将为大家详细讲解有关怎么进行Java SPI机制的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么需要SPI?思考一个场景,我们封装了一套服务,别人通过引入我们写好的包,就可
2023-06-22

怎么进行Linux内核XFRM权限提升漏洞的分析

怎么进行Linux内核XFRM权限提升漏洞的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。0x00 背景介绍2017年11月24日, OSS社区披露了一个由独立安全研究员M
2023-06-19

如何进行Linux系统syslog分析

如何进行Linux系统syslog分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、日志系统之syslogsyslog是Linux系统中默认的日志守护进程,RHEL5上
2023-06-28

怎么进行FileZilla源代码分析

怎么进行FileZilla源代码分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。FileZilla是一种快速、可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色
2023-06-16

怎么用Python进行数据分析

这篇文章主要讲解了“怎么用Python进行数据分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python进行数据分析”吧!评论情感倾向先调用百度AI来分析微博和b站的评论情感倾向。
2023-06-01

怎么进行Mediapartners-Google漫游器的分析

怎么进行Mediapartners-Google漫游器的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。看了下日志,发现有几条类似这样的:2010-07-27 16:03:3
2023-06-12

编程热搜

目录