NAT场景案例分析

目录

问题现象一 NAT Server故障排错思路

问题现象二 NAT Server问题

问题现象三 NAT Server问题

问题现象四 LAN-LAN映射


问题现象一 NAT Server故障排错思路

NAT Server故障排查思路(出现配置端口映射后外网设备无法访问本地内网中的服务器的故障)

1、检查服务器内网用户是否能够直接访问该服务(测试服务器是否正常提供服务,以及服务器内网IP地址正确)

2、检查服务器到网络出口设备是否能够正常通信(ping、telnet、wget)

3、检测外网发出来的流量是否能够到达客户端出口设备(通过在出口设备的外网口抓包测试—如果没有收到外网来的流量,可能是服务器没有在运营商备案—即将80端口给拦截了;此种情况可以将AF上的端口映射换为其它端口再尝试一下;如果该端口过来了,那就是运营商将该地址的80端口封锁掉了,需要去找运营商)

4、检测外网的数据包到达出口设备后有无匹配出口设备的映射规则,(在出口设备的WAN 和 LAN口分别抓包,如果LAN口没有报文,则说明可能端口映射配置错误),(也可能安全策略给过滤了,可以开启出口设备上的拦截日志—开启出口设备上的拦截日志后,会直接开启数据直通,即数据即使被过滤策略匹配了,还是可以通过出口设备,此时可以通过策略将其放通)

5、由于AF去访问服务器可以通;外部访问到达AF也完成了转换,但是无法到达服务器(两者不同的地方就是数据包的源IP不一样);此时可以查看中间设备是否将该数据包拦截-即该报文匹配上了过滤策略(在中间的安全设备上开启拦截日志—直通开启,再次进行测试);最后发现被AC设备上的防火墙规则丢包

6、也有可能服务器本身上的防火墙规则拦截掉了(如果客户不想要外部的IP地址访问该服务器,可以在出口设备上将源IP为外部IP地址 转为 私网IP地址---即进行双向NAT转换)


问题现象二 NAT Server问题

在出口做了一条Nat Server,把外网的80端口映射给内网的Web服务器 80端口,配置完成后网站无法访问(但是当出口设备开启抓包之后,网站就可以从外网访问了)

首先要了解抓包工具的原理

抓包是利用了网口的混杂模式(开启了抓包就是开启了网口的混杂模式)

默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢掉

混杂模式指的是设备接收所有经过网卡的数据包(包括不是发给本机的包—即便数据包的MAC地址不是自己也会去处理);简单来讲混杂模式就是指网卡能接收所有通过它的数据流

因此排查出故障的原因可能如下

可能对端外网发过来的请求包的目的MAC不是出口设备的WAN口的MAC

造成现象的原因:有可能是前端运营商设备在80端口的数据上面做了MAC绑定(有可能现在的出口设备替换了之前的网络出口设备,但是运营商MAC绑定的是之前的网络出口设备,没有更改)

解决方法

1、去运营商更新MAC地址绑定表

2、出口设备后台打开WAN口的混杂模式(有风险)


问题现象三 NAT Server问题

在出口设备做NAT Server,将WAN口的8090端口映射给WEB服务器的80端口;但是现在网站无法访问(客户怀疑是端口映射不成功)

进行抓包测试(通过外网测试PC访问网站,在外网PC和用户出口设备上进行抓包)

PC抓包得到的结果

PC与服务端建立了TCP三次握手,说明端口映射是成功的

PC发送GET请求得不到响应(可能是服务器拒绝响应或者服务存在问题、也有可能是该报文被AF拦截、或公网拦截)

PC收到了AF发来的RST报文

用户出口设备上抓包得到的结果

内网服务器与PC建立TCP三次握手

内网服务器收到GET请求,并回应的HTTP响应,但是从抓PC的 包来看PC没有收到(有可能是公网设备将此数据包拦截)

此时客户端网络出口设备上又收到了PC发来的RST报文(但是PC端没有抓到PC发起来的RST报文,说明该报文不是PC产生的,可能是有人伪造的该数据包---通过TTL发现该RST报文发来的TTL与其它报文相差太大也可以确定该数据包不是PC发到的)

判断结果

因此可以判断是公网上存在的问题(可能是公网上的设备做了内容过滤,服务器发送的HTTP响应报文可能匹配到了设备上的安全策略,然后伪造报文向服务器发送RST)

如果还不确定问题,还可以在出口设备的WAN口直接连接一台设备来访问web服务器,发现是否能够访问内网服务器,如果访问成功,则就确定了是运营商公网问题


问题现象四 LAN-LAN映射

客户需要内网用户通过公网IP访问内网的服务器(这样可以保证内网和外网的访问方向一致、并对内隐藏内网服务器的IP地址)

需要实现当PC输入服务器域名或服务器的公网IP地址(202.X.X.X)时能够访问HTTP服务器

如果出口设备上只配置目的地址转化(来回数据包不一致)

1、PC发出的数据包

SIP: 172.172.10.10:8888              DIP:202.X.X.X:80

2、在AF上配置目的IP地址转换,映射到HTTP Server(将202.X.X.X:80转为172.172.10.100:80);当数据包到达AF后,进行目的地址转换

SIP: 172.172.10.10:8888              DIP: 172.172.10.100:80

3、HTTP Server收到后回复(此时就直接发送到PC,造成来回数据包不一致,PC不会处理)

       SIP: 172.172.10.100:80                DIP: 172.172.10.10:8888

如果出口设备上将源、目地址同时转换(先匹配目的地址映射,再匹配源地址映射),可以实现客户要求

1、PC发出的数据包

SIP: 172.172.10.10:8888              DIP:202.X.X.X:80

2、在AF上配置目的IP地址转换,映射到HTTP Server(将202.X.X.X:80转为172.172.10.100:80);在AF上配置源IP地址转换(将172.172.10.10:8888映射为172.172.10.1:8888);当数据包到达AF后,进行源、目的地址转换

SIP: 172.172.10.1:8888         DIP: 172.172.10.100:80

3、HTTP Server收到后回复(此时就直接发送到PC,造成来回数据包不一致,PC不会处理)

       SIP: 172.172.10.100:80                DIP: 172.172.10.1:8888

4、AF收到后根据源目地址转换的映射表,将数据包还原

SIP:202.X.X.X:80                  DIP: 172.172.10.10:8888

5、此时PC收到报文后,来回数据包一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/279090.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 数据库 关于库的基本操作

库的操作 如果想到 mysql 客户端当中数据 系统当中的命令的话,直接输入的话,会被认为是 mysql 当中的命令。 所以,在mysql 当中执行系统当中的命令的话,要在系统命令之前带上 ststem ,表示系统命令: 但是…

瞳孔检测眼动追踪python实现(基于dlib)

效果展示: 原图:(图片来自 b站up 借我300去洗牙) dlib实现的特征点检测 瞳孔检测结果 完整代码: # encoding:utf-8import dlib import numpy as np import cv2def rect_to_bb(rect): # 获得人脸矩形的坐标信息x …

IDEA——还在手动new对象set值嘛,GenerateAllSetter插件帮你解决!!!

IDEA插件 一、GenerateAllSetter插件介绍二、如何下载安装三、如何使用 总结 最近项目上有些测试需要有很多属性,而且大部分的属性都是要设置值的,一个一个手动set设值很繁琐,就想着有没有能解决这个问题的办法,就发现了一个非常好…

轻量封装WebGPU渲染系统示例<49>- 多种灯光多材质(源码)

实现方式: 1. 全局的灯光和阴影。 2. 球体和矩形平面使用了相同的材质对象。 3. 通过材质自动关联和组装对应的渲染材质功能节点。 4. 共享uniform或storage的buffer对象。 5. 共享shader module对象。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/b…

牛客后端开发面试题1

滴滴2022 1.redis过期策略 定时删除,定期删除,惰性删除 定时删除:设定一个过期时间,时间到了就把它删掉,对cpu不太友好,但是对内存友好 定期删除:每隔一个周期删除一次,对cpu和内存…

Codeforces Round 914 (Div. 2) A~E

A.Forked!(思维) 题意: 给出骑士的跳跃能力 ( x , y ) (x, y) (x,y) 以及国王和皇后的位置,问有多少个位置可以让骑士可以直接攻击到国王和皇后。 分析: 棋盘非常大 ( 1 0 8 1 0 8 ) (10^{8} \times 10^{8}) (1…

国产Apple Find My「查找」认证芯片-伦茨科技ST17H6x芯片

深圳市伦茨科技有限公司(以下简称“伦茨科技”)发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家,该平台提供可通过Apple Find My认证的Apple查找(Find My)功能集成解决方案。…

Unity 使用AddTorque方法给刚体施加力矩详解

给刚体施加力,除了使用AddForce方法,我们还可以使用AddTorque方法。该方法是通过施加力矩给刚体以力。AddTorque方法从形式上跟AddForce差不多,它也有4个重载方法: 1、AddTorque(Vector3 torque);使用Vector3类型参数…

Python基础学习—Pandas数据分析实战剖析【文末送书-09】

文章目录 一.Pandas数据分析1.1 Pandas的主要应用包括:1.2 Pandas核心数据结构1.3 安装和导入Pandas 二.Pandas数据分析实战:用Python进行数据分析1. 数据集介绍2. 数据加载与初步观察3. 数据清洗4. 数据分析4.1 销售趋势分析4.2 热门商品分析 三.Pandas…

在官网免费创建一个云mongoDB数据库

MongoDB的设计目标是提供高性能、高可用性、可扩展性和易用性。它采用了文档存储模型,将数据以类似JSON的BSON(Binary JSON)格式存储,并且支持动态模式,允许应用程序更灵活地存储和查询数据。MongoDB还支持水平扩展&am…

.net 洋葱模型

洋葱架构 内层部分比外层更抽象(内层接口,外层实现)。外层的代码只能调用内层的代码,内层的代码可以通过依赖注入的形式来间接调用外层的代码 简单的例子,引用依赖图 demo 接口类库 EmailInfo using System; using System.Collections.…

算法-----全排列

目录 前言 代码 思路 我的其他博客 前言 全排列是一种组合数学的概念,它表示将一组元素按照一定顺序进行排列的所有可能情况。在计算机编程中,通常使用递归来实现全排列。以下是使用Java语言实现全排列的详细解释: 代码 public class Pe…