NAT场景案例分析

2023-12-17

目录

问题现象一 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收到报文后,来回数据包一致

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NAT场景案例分析 的相关文章

  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 当用户按下打印时运行脚本,并且在脚本结束之前不开始假脱机(linux,cups)

    我需要做的是结合用户按下打印来执行 python 程序 脚本 并且在该程序退出之前不要让打印作业假脱机 原因是打印驱动程序不是开源的 我需要更改用户设置 在本例中是部门 ID 和密码 通常是每个用户 但因为这是一个信息亭 具有相同帐户的不同
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • C - 为什么我无法映射较小(256UL 或更小)的内存?

    请告诉我 为什么我的简单应用程序无法映射较小的内存 而且 为什么有这样一个特定的边界 257UL define MAP SIZE 256UL or below fail define MAP SIZE 257UL ok include
  • 这种 bash 文件名提取技术有何用途?

    我有一部分 bash 脚本正在获取不带扩展名的文件名 但我试图了解这里到底发生了什么 是做什么用的 有人可以详细说明 bash 在幕后做了什么吗 如何在一般基础上使用该技术 bin bash for src in tif do txt sr
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 在 debian wheezy amd64 上安装 ia32-libs

    我正在使用 Debian 7 喘息 amd64 uname a Linux tzwm debian 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 我想安装ia32 libs在我的

随机推荐

  • React脚手架搭建

    React脚手架 脚手架 可以快速构建项目的基本架构 脚手架安装命令 可全局安装脚手架 创建项目 来到当前目录下 create react app 项目名 不要大写字母 运行项目 进到项目里 在项目目录下 执行 npm start 启动完项
  • 62_Spring整合SpringMVC

    Spring整合SpringMVC Configuration ComponentScan basePackages com wnx springmvc useDefaultFilters false includeFilters Comp
  • 中国知网职称论文查重官网入口 papergpt

    大家好 今天来聊聊中国知网职称论文查重官网入口 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 中国知网职称论文查重官网入口 背景介绍 作为中国最大的学术文献数据库 中国知网 CNKI 提供
  • 揭秘光耦合器继电器:了解技术奇迹

    光耦合器继电器 是现代电子产品的关键部件 在确保电路安全和效率方面发挥着关键作用 了解它们的功能和意义对于工程师和爱好者理解它们的应用至关重要 本文旨在揭开光耦合器继电器技术方面的神秘面纱 深入了解其功能 应用以及在电子领域的重要性 什么是
  • Webpack5

    一 Webpack基础 打包工具 将框架 React Vue ES6 Less Sass等语法编译成浏览器能识别的JS CSS 压缩代码 兼容性处理 提升代码性能等 一 entry 入口 指示Webpack 从哪个文件开始打包 二 outp
  • GEE 24:基于GEE实现高空间分辨率物种分布模型的模拟

    高分辨率物种分布模型模拟 1 加载数据并定义网格大小和范围 2 预测变量 3 定义模型拟合和交叉验证的空间块 使用未分类的卫星图像作为预测变量 以高空间分辨率对物种分布进行建模 1 加载数据并定义网格大小和范围 对于本例 我们从 GBIF获
  • 计算机毕设项目 - 停车位租赁管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统业务流程 3 3 系统结构设计 4 项目获取
  • 59_Spring整合MyBatisPlus

    Spring整合MyBatisPlus
  • 数据结构与算法之递归: LeetCode 93. 复原 IP 地址 (Typescript版)

    复原 IP 地址 https leetcode cn problems restore ip addresses 描述 有效 IP 地址 正好由四个整数 每个整数位于 0 到 255 之间组成 且不能含有前导 0 整数之间用 分隔 例如 0
  • 6.【自动驾驶与机器人中的SLAM技术】鲁邦核函数的含义和应用

    目录 1 给ICP和NDT配准添加柯西核函数 1 1 代码实现 2 将第1部分的robust loss引入IncNDTLO和LooselyLIO 给出实现和运行效果 3 从概率层面解释NDT残差和协方差矩阵的关系 说明为什么NDT协方差矩阵
  • BP神经网络原理,基于BP神经网络的去噪算法,基于BP神经网络的调制信号去噪

    目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数 BP神经网络的传递函数 遗传算法原理 遗传算法主要参数 遗传算法流程图 完整代码包含数据下载链接 基于BP神经网络的去噪算法
  • 论文润色机构哪个好 快码论文

    大家好 今天来聊聊论文润色机构哪个好 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 标题 论文润色机构哪个好 专业 高效 可靠的学术支持 一 引言 在学术研究中 论文的质量和原创性是研究结
  • Stable Diffusion 微调及推理优化实践指南

    随着 Stable Diffsuion 的迅速走红 引发了 AI 绘图的时代变革 然而对于大部分人来说 训练扩散模型的门槛太高 对 Stable Diffusion 进行全量微调也很难入手 由此 社区催生了一系列针对 Stable Diff
  • 【RBF分类】基于蜣螂算法优化径向基神经网络DBO-RBF实现故障诊断附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • CNN-LSTM-Adaboost回归预测 | Matlab基于卷积神经网络-长短期记忆神经网络Adaboost回归预测

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • 【计算机毕设文章】新闻资讯微信小程序开发后端+php

    摘 要 随着我国经济迅速发展 人们对手机的需求越来越大 各种手机软件也都在被广泛应用 但是对于手机进行数据信息管理 对于手机的各种软件也是备受用户的喜爱 新闻资讯被用户普遍使用 为方便用户能够可以随时进行新闻资讯的数据信息管理 特开发了基于
  • 【计算机毕设文章】基于微信小程序的科创微应用平台

    基于微信小程序的科创微应用平台 摘要 随着信息技术在管理上越来越深入而广泛的应用 管理信息系统的实施在技术上已逐步成熟 本文介绍了基于微信小程序的科创微应用平台的开发全过程 通过分析基于微信小程序的科创微应用平台管理的不足 创建了一个计算机
  • 从零开始搭建自动化测试平台,构建自动化测试平台的最全指南!

    前言 随着软件开发的不断进步 测试工程师也需要跟上趋势并适应新的测试方法 自动化测试已成为现代测试领域中不可或缺的一部分 它可以提高测试效率 减少测试成本 并且可以避免人为错误对测试结果的影响 在这篇文章中 我们将介绍如何构建一个自动化测试
  • 每天花2小时复习Java面试指南,高级架构视频,我进了阿里定级P7

    Java进阶架构师必备 基础 容器 并发 JVM Java8 计算机网络 计算机操作系统 Linux 数据结构 算法 mysql 优化思路 系统设计 分布式 线上问题调优 虚拟机 tomcat 面试指南 工具 添加图片注释 不超过 140
  • NAT场景案例分析

    目录 问题现象一 NAT Server故障排错思路 问题现象二 NAT Server问题 问题现象三 NAT Server问题 问题现象四 LAN LAN映射 问题现象一 NAT Server故障排错思路 NAT Server故障排查思路