97国际

一机领航,向光而生 丨 97国际网络一机一网3.0秋季新品宣布会
预约直播
以AI为焦点,让资产可管可控,数据鲜活有用 丨 企业智能运维实践宣布会
预约直播
97国际·(中国区)集团官方网站
产品
< 返回主菜单
产品中心
产品
解决计划
< 返回主菜单
解决计划中心
行业
合作伙伴
返回主菜单
选择区域/语言
97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站

202697国际官网
用户体验调研

马上加入
97国际·(中国区)集团官方网站

您订阅的产品有更新,请实时查阅

审查详情

走近科学:带你解密“映射报文”失踪之谜 | 运维实战家

97国际·(中国区)集团官方网站 宣布时间:2020-06-02
97国际·(中国区)集团官方网站

各人好,我是 “老狼”,一经也算文艺青年一枚。无奈,一入IT深似海,只是一个转身,就完成了从文艺青年到IT狗的华美变身。

言归正传,今天要和各人分享的内容是关于一个端口映射问题真实案例,我们知道端口映射不乐成问题经常遇到,这次为了正经且系统带引各人学习映射问题排查,我将通过引入身边一个真实案例对话,层层深入剖析映射问题症结,希望能给各人提供一些启示伎帐助。

Ok,话未几说,我们最先吧。

一、什么场景会用到端口映射——情景

为了讲清问题,我们有须要提前相识一下什么场景会用到端口映射及几个基础看法。

首先是NAT(Network Address Translation)全称网络地址转换。详细看法先容建议百度。简朴来讲就是在持有私网地址的主机想和公网的地址通讯的时间需要使用到的公网和私网的地址交流的手艺。我们都知道IPv4路由是区分公网地址和私网地址的,私网地址在公网是没有路由的,那这个时间拥有私网地址的主机想要和公网的主机通讯,这个手艺是必不可少的。

 

其次是端口映射

 

图(1)

如上图所示,PC位于外网,某服务器(如web服务器)位于内网。但由于IP地址已经耗尽的问题,整个网络只分派了一个外网IP地址。出口路由器属于内网,用于毗连外网。PC要会见到内网的服务器,需要在出口路由器上开启NAPT(端口映射)功效,即针对web服务提供的端口举行端口映射。

端口映射着实就是一种内网服务器对外开放的一种网络地址转换,着实转换的原理就是当会见公网某个地址的某个端口的时间由NAT装备将目的地址转换为要会见的内网服务器的地址,并转发给内网服务器,期待内网服务器报文返回到对应的接口的时间再凭证之前的会话转换回之前的报文。

 

二、迷失的映射报文

话说前些天五一小假期,小王好容易借着疫情常态化的契机出去踏个青,晚上回来累的不可,早早的洗洗就睡了。效果三更一点多睡的正香的时间就被好机油(小李)的电话吵醒了,于是有了下面临话……

 

 图(2)

 

此时的小王睡意完全没了,你割接苦逼也就罢了,拉着我一起苦逼你就是犯法了。我这小暴性情啊。其时我就开喷了:咱俩谁跟谁啊,别客套。用的什么装备��?详细情形和我说下。

三、迷失的映射报文——还原现场

原来现场用一台EG做出口,对内就是焦点交流—汇聚—接入—服务器啦,中心还串了一台防火墙!不过清静战略全放通,直接用接口地址映射内网的服务器。

 

图(3)

好机油说这个映射设置一定是没问题,这种设置他配过许多遍,并且在内网测试过服务器营业,是正常的啊。内部的服务器也可以直接上公网,可是就是无法乐成通过公网地址会见到内部服务器。

 

就这啊,机油别怕,so  easy ,来吧,让我们一步一步work it out!

 

“从公网ping映射的公网地址通吗”

“可以通啊”

 “Ok,连通性扫除,服务器也没问题”

 

“修改映射的外网端口测试是否正常?”

“不可以!照旧没法会见”

“Ok,运营商封端口问题可以扫除!”

 

“焦点交流机利便流量统计或者镜像

抓包吗,看下有没有转换报文从防火

墙上焦点,看下问题究竟和防火墙有

没有关系?”

“抓过了,有报文!”

“OK,基本可以扫除防火墙问题。”

 

“现场有没有多出口情形?”

“有啊。联通一个,电信一个,两个出口。”

 

哈哈,听到这里,小王放纵的笑了

“问题应该找到了,是不是往返路径纷歧致导致的?

有没有包管映射的回程数据流还从对应的接口回去��?”

 

“你兴奋的太早了老铁,接口下开启了reverse-path(源进源出)这个情形应该会往返一致吧?!”

哎呦我去,这自信的,突然闪了老子的腰。险些装逼失败,没关系,next,老纸要放大招了。

“来,帮我收个NAT 转换的流信息

瞅瞅吧。先来看看NAT这步究竟有没

有什么问题。

先开启下登录软件的纪录会话,然后cli敲:

1. show ip fpm modules | i FLOW-AUDIT

2.show ip fpm pri filter x(x为第一办法网络索引号)0 x.x.x.x(会见外网ip) 32 0.0.0.0 32

2.show ip fpm flow filter 0 x.x.x.x(会见外网ip) 32 0.0.0.0 32

3.同时在EG端和服务器划分抓包

“好的,马上收好发给你。”

 

 

 

四、迷失的映射报文——破迷

下面我们对网络这几个信息详细解读下,看看他们作用是什么:

首先先稍微诠释下,网络两个下令作用:

1.先show ip fpm modules | i FLOW-AUDIT—用来审查流量审计的营业号(左侧第一列,如本案例为10)

2.show ip fpm pri filter 10 0 x.x.x.x(会见外网ip) 32 0.0.0.0 32—用来网络数据包选路路径是否准确(如从WAN口接口到数据包后是否从准确LAN口转发,往返转发路径是否准确)

3.show ip fpm flow filter 0 x.x.x.x(会见外网ip) 32 0.0.0.0 32—用来网络数据包流表信息是否正常做了端口转换及转换后数据收发是否正常(一样平常若是准确转换的话在流信息会有转换纪录)

 

Ok,那么我们接下来看看现场网络回来信息:

  1. 首先我们可以看到:外网会见的终端ip(即218.106.154.158)会见映射接口ip(58.x.x.59)时间,数据包转发往返路径确实没问题,从WAN3口进,LAN-Te0/0出,回程数据流也没问题,如下图:

图(5)

  1. 外网触发会见时间,会见的目的地址(即WAN3口的ip),装备确实准确做了转换(看括号内里地址是内部服务器要映射地址),但这里数据收发确实也有点问题(看send和rec列,多次show效果数据未有显着上涨),如下:

图(6)

       以上两点测试可以得出:EG的端口映射设置没有问题,服务器页面没有问题,EG上数据转发没有问题,征象是有点希奇,继续看看报文:

1、在服务器端抓包,能看到正常的http GET报文到抵达服务器:

图(7)

不过服务器端收到get报文之后,有收到一个rst的重置毗连报文,导致http毗连终止。

2、在EG端抓包,也能看到报文正常抵达EG,并且正常转换之后转发给内网服务器:

图(8)

从这里看RST报文都是会见服务器的终端提倡来的,若是是正常的交互历程不会有rst的报文。

从抓包效果:嫌疑是中心运营商装备抑制行为导致回应RST异常报文。

 

五、迷失的映射报文——解密

为了证实确实是运营商所为,给小李一个交接,小王赶忙从翻开电脑在外地电脑终端会见抓了个包,效果发明电脑提倡GET报文之后,又收到一个由映射的外网服务器发来的一个RST报文!哈哈,果真问题出在这里,赶忙给小李诠释了整个历程,建议联系运营商协助排查!

小李持着嫌疑的态度,又做了一个操作:将电脑模拟运营商情形,设置成外网网关地址,充当外网线路举行会见,是可以正常会见,至此基本确认是运营商抑制行为所致。小李赶忙联系运营商替换了个外网地址后,一试果真好了,连连和小王致谢,说这次不但问题解决了,还理清了映射问题的排查思绪,最后还非要请小王吃烧烤呢。

 

六、案例履历总结

       对此类故障的排查除了关注设置,替换端口及确认现场网络情形以外,很主要是要先弄清晰数据转发路径,多思索数据的走向,可能遇到的问题,须要时间团结抓包定位剖析,一步步排查,从基本的最先,不放过一个可能的缘故原由。

       通用排查思绪如下:

七、背后手艺原理

1、流表:

-  EG/NPE装备底层的一张表,存储装备吸收以及转发的数据流信息。流表可以纪录数据流的源目的地址、源目的端口、发送和吸收的字节数、是否做了NAT、NAT前后IP、端口的转变等信息。

-  流表是EG/NPE装备中很是主要的一张表,数据处置惩罚时优先使用到这张表中已有的数据流信息,同时所有的数据转发的基本信息都会存储到这张表中。

 

下令:

show ip fpm flow filter 0(协议,0体现恣意) SrcAddr(源ip) 掩码 DstAddr (目的ip) 掩码(推荐用此种方法审查)

show ip fpm flow | include x.x.x.x(过滤的ip地址) -- 10.x/11.x通用(不推荐,流表太大可能会导致CPU高)

举例说明各个字段寄义:

        • Pr(协议):如6是TCP,17是UDP;
        • SrcAddr(源地址):提倡数据包的地址,括号内的地址为NAT后的地址;
        • DstAddr(目的地址):数据包的目的地址,括号内的地址为nat后的地址
        • SrcPort(源端口):提倡数据包的源端口信息,括号内为nat后的端口
        • DstPort(目的端口):提倡数据包的目的端口信息,括号内为nat后的端口
        • Vrf:EG只有一个VRF数据都是在VRF0,可以不看;
        • SendBytes(发送):以内网用户来看就是内网用户从内网发送到EG装备的数据包总的巨细,字节为单位;
        • RecvBytes(吸收):以内网用户来看就是EG装备上收到外网发到这个内网IP的数据包的总的巨细,字节为单位;
        • St(流目今状态):流的状态要对应于目今的协议。差别协议寄义纷歧样,举例说明如下:

如协议号:17   udp流

CLOSED                  0               毗连处于关闭状态

STARTED                 1               毗连提倡状态

CONNECTED               2               对方响应之后的状态

ESTABLISHED             3               在对方响应之后毗连提倡方又有发送报文

如协议号:1    icmp流

CLOSED                 0                毗连处于关闭状态

STARTED                1                毗连提倡状态

CONNECTED              2                对方响应之后的状态

        • srcif(源接口号):代表数据从谁人接口收到,show interface可以看到接口的编号对应谁人接口如下,举例:

流表中srcif对应9,如show interface可以看到9代表TenGigabitEthernet 0/0,10.x无此功效, 接口显示“fff”代表装备自己发送的数据,或者是装备吸收并处置惩罚的数据或者是某个偏向上面未收到报文的初始值;

        • ================= TenGigabitEthernet 0/0 ========================
        •   Index(dec):9 (hex):9
        • dstif(目的接口号):代表数据从谁人接口转发;
        • ctrl_flag(流控制字段):无现实意义研发调试使用
        • 说明:接口显示“fff”代表装备自己发送的数据,或者是装备吸收并处置惩罚的数据,举例说明:

上面红色方框内的流设为流1和流2:

 流1:装备自己发送给114.114.114.114的DNS剖析报文,因装备自己自动发送这个报文,装备以为源端口是自己,显示为“fff”

流2:10.112(实验室APM装备)向EG发送SNMP报文,因装备吸收此报文并直接处置惩罚,装备直接就处置惩罚这个数据,不需要再通过任何接口转发,目的端口显示为“fff” 

关于流表上最前面两条流,属于组播数据,接口显示为“fff”也是体现本吸收或发送,如源接口是6、目的接口是fff,体现是数据从编号6接口收到,装备外地吸收;

 

 

  1. 私有空间:

- 除流表之外,EG/NPE底层还开发了部分空间,用于存储数据流处置惩罚历程中除流表外更详细的一些信息,如应用识别情形、流控匹配情形等。这部分空间现实上保存,但关于用户而言是透明的,因此被称为装备的私有空间。私有空间在装备中被分成若干块,每块纪录差别的数据处置惩罚内容,并通过私有空间ID举行区分;

- 在EG/NPE 10.x平台上,因产品限制,私有空间ID和现实存储的数据内容不是逐一对应,需要凭证版本举行区分;在EG 11.x平台上,所有私有空间ID是牢靠的。

下令:

  • Show ip fpm mudule(确定选路效果对应的私有空间ID,差别型号可能纷歧样,以详细show效果为准)
  • show ip fp pri filter x(私有空间ID,可通过show ip fpm module审查,如1体现审查数据流选路方法,10体现数据转发路径,13体现流控匹配等等) 0(协议,0体现恣意) SrcAddr(源ip) 掩码 DstAddr (目的ip) 掩码

示例1:审查数据选路方法

      • 下令:
        • show ip fp pri 1  | include x.x.x.x(过滤的ip地址)或show ip fpm pri filter 1 0(0代表恣意协议) x.x.x.x(x.x.x.x这里代表源ip) 32(掩码32代表主机ip) y.y.y.y(y.y.y.y这里代表目的ip) 32(掩码32代表主机ip)   -- 10.x/11.x通用,审查选路方法
      • 需要关注的字段寄义如下:

        • Ref_ip/rpl体现数据通过什么选路方法走的,如ref_ip代表通俗路由选路,rpl代表源进源出, pbr代表战略路由,mllb体现多链路负载平衡,dns_proxy代表正向dns代理,app_route代表应用路由等,unknown说明未匹配选路,一样平常到外地或被扬弃;
        • ref_ip(7)/rpl(1) :前面是正向流代表出偏向,后面是反向流代表入偏向 , 括号内里数字体现对应代码,只是体现顺序罢了,这里7体现选路出去的路径,1则体现到内网的路径,如1:ref/4:rpl/5:dns/6:app_route
        • 25/3747,前面是数据流出偏向接口索引id(出接口),后面是数据流入偏向接口索引id(入接口),可通过下令show ip ref adj或show ip ref route确定现实流收支接口,如上图所示,该流出接口为Te0/1,入接口为Gi0/0。

示例2:确定选路转发路径匹配情形(11.x)

      • 下令:
  • show ip fpm module找到对应的索引id和name(左边前两列,如本例10为数据转发路径),然后通过下令show ip fpm priv xx(module id)| include x.x.x.x(过滤详细ip)或show ip fpm pri filter 10 0(0代表恣意协议) x.x.x.x(x.x.x.x这里代表源ip) 32(掩码32代表主机ip) y.y.y.y(y.y.y.y这里代表目的ip) 32(掩码32代表主机ip)

说明:需要注重的是这里的module id是动态的,以现实show效果为准。

      • 各需要关注的字段寄义如下:

        • Ori:srcif-dif(源-目的接口号):代表原始数据流从源接口(Gi0/3)收到,往目的接口(Gi0/4)转发出去;
        • Rep:srcif-dif(源-目的接口号):代表回程数据流从源接口(Gi0/4)收到,往目的接口(Gi0/3)转发出去;
        • Up_if:出接口

 

写在最后

现在遇到的外网无法会见映射服务器的故障,基本上这一套“组合拳”下来,大部分的映射问题都可以解决啦。伴着好机油的致谢和烧烤到手,原来这一波分享就竣事了,可是最后照旧友情馈赠下史上故障排查“杀手锏”:

 

关注97国际
关注97国际官网微信
随时相识公司最新动态
97国际·(中国区)集团官方网站

返回顶部

收起
97国际·(中国区)集团官方网站 文档AI助手
97国际·(中国区)集团官方网站 文档评价
资料内容是否对您有资助?
您对目今页面的知足度怎样?
不咋滴
很是好
您知足的缘故原由是(多�。�?
您对文档是否尚有其它的问题或建议?
为尽快解决问题,请您留下联系方法以便回复
邮箱
手机号
谢谢您的反�。�
97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站
97国际·(中国区)集团官方网站
请选择服务项目
关闭咨询页
售前咨询 售前咨询
售前咨询
售后服务 售后服务
售后服务
意见反响 意见反响
意见反响
更多联系方法
网站地图