【网络】NAT、代理服务、内网穿透

news2024/9/22 23:19:53
NAT技术与代理服务

文章目录

  • 1.NAT技术
    • 1.1NAT技术背景
    • 1.2NAT IP转换过程
    • 1.3NAPT
    • 1.4NAT技术的缺陷
  • 2.代理服务器
  • 3.NAT和代理服务器的区别
  • 4.内网穿透

1.NAT技术

NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

1.1NAT技术背景

在IPv4协议中,IP地址数量不足是一个大问题,而NAT技术就是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。

在进行对外通信时,NAT能够将私有IP经过一系列替换操作最终转为全局IP,也就是说,NAT是一种将私有IP和全局IP相互转化的技术方法。

  • 装有NAT软件的路由器叫做NAT路由器,所有使用私有IP的主机在和外界通信时,都要在NAT路由器上将其私有IP转换成全局IP。
  • 大部分学校、家庭、公司内部每个终端设置的IP都是私有IP,而只在出口路由器(再外层就是公网)或必要的服务器上设置全局IP。

1.2NAT IP转换过程

假设某个局域网当中有A、B、C三台主机,在公网当中有一台服务器,以主机A访问公网中的这台服务器为例,我们来看看数据包在传输过程中IP地址的转换过程。

(1)数据包从局域网到公网的过程

主机A向服务器发起数据请求的过程中,数据包中IP地址的转换过程如下:

  1. 刚开始,该数据包当中的源IP地址就是主机A的私有IP地址,目的IP地址就是服务器的公网IP地址。
  2. 当数据包经过NAT路由器时,路由器会将该数据包的源IP地址替换成自己的WAN口IP地址,此时该数据包的源和目的IP地址就都是公网IP了。
  3. 该数据包在互联网中经过各种路由转发,最终到达服务器主机。
  4. 服务器收到主机A的数据请求并处理后,就会对主机A发来的请求进行响应。

(2)数据包从公网到局域网的过程

服务器向主机A进行响应的过程中,数据包中IP地址的转换过程如下:

  1. 刚开始,该数据包当中的源IP地址就是服务器的公网IP地址,目的IP地址就是路由器的WAN口IP地址。
  2. 数据包在互联网中经过各种路由转发,到达主机A所在局域网的NAT路由器,此时路由器会根据**“地址转换表”**将该数据包的目的IP地址替换成主机A的私有IP地址。
  3. 最终路由器就会将该数据包转发给局域网中的主机A。

image-20240810171723768

需要注意的是,因为主机A向服务器发起数据请求时,该数据包当中的源IP地址被替换成了NAT路由器的WAN口IP地址,相当于是该路由器代替主机A向服务器发起了数据请求,因此服务器发出的响应数据包的目的IP地址应该是NAT路由器的WAN口IP地址。

1.3NAPT

(1)地址转换表

当局域网当中的主机要访问外网时,NAT路由器会将这些数据包的源IP地址替换成自己的WAN口IP地址。

当外网发来响应数据时,报文的目的IP地址是NAT路由器的WAN口IP地址,但是此时报文还没有到达真正要去的主机,所以此时NAT路由器内部会维护一张**“地址转换表”**,根据该地址转换表将目的IP地址替换为目的主机的私有IP地址。

该转换表中维护的是局域网中主机的私有IP,与其对应访问的外网当中的某个公网IP之间的映射关系,这份映射互为键值。

当局域网中的主机第一次向外网发起数据请求时,就会生成表中的映射关系。

比如在TCP建立连接时,会建立对应的映射关系,在TCP断开连接后,就会删除对应的映射关系。

在刚才的例子中,主机A第一次向服务器发起数据请求时,路由器中就会建立以下映射关系。

image-20240810172302887

当NAT路由器收到服务器向主机A发来的响应数据时,就可以通过查表得知该响应数据是发送给局域网当中的主机A的。

但如果转换表中维护的只是局域网中主机的私有IP,与其对应访问的外网当中的某个公网IP之间的映射关系,那么就会出现某些问题。

如果局域网中的主机A和主机B同时都在访问该服务器,那么此时转换表中就会建立如下两对映射关系:

image-20240810172418232

此时这张转换表只能保证从左到右的唯一性,而不能保证从右到左的唯一性,当服务器发来响应数据时,该数据包中的目的IP地址都是路由器的WAN口IP,此时NAT路由器就无法判断该数据包应该转发给主机A还是主机B,此时就需要用到NAPT技术。

(2)NAPT

NAPT(Network Address Port Translation,网络地址端口转换),可以将多个内部地址映射为一个合法公网地址。

当局域网中的主机向外网发送数据时,路由器会将该数据包的源IP地址替换为自己的WAN口IP地址,并建立该主机私有IP与其对应访问的公网IP之间的映射关系。

但如果局域网中的多台主机同时访问同一个外网服务,当路由器收到外网发来的响应数据时,路由器无法判断该响应数据应该转发给局域网中的哪台主机,因为该局域网中所有主机的数据包都由路由器代替发送了,因此发来的响应数据包的目的IP地址都是路由器的WAN口IP地址。

于是NAPT在建立转换表的映射关系时,除了建立局域网中私有IP与其对应访问的公网IP之间的映射关系外,还会加上一个由NAT路由器选定的端口号。

此时当局域网中的多台主机同时访问同一个外网服务时,虽然外网发来的响应数据的目的IP地址都是路由器的WAN口IP,但发给局域网中不同主机的响应数据对应的目的端口号是不同的,此时路由器就能通过IP+Port的方式来区分发给不同主机的数据包。

比如局域网中的主机A和主机B都在访问同一个服务器,并且它们访问服务器时采用的端口号都是1025。

  • 假设主机A发送的数据包先到达路由器,此时路由器将数据包的源IP地址替换成自己的WAN口IP地址,由于路由器用于访问该服务器的1025号端口没有被使用,因此该数据包的源端口号可以不变。
  • 当主机B发来的数据包到达路由器时,路由器同样将数据包的源IP地址替换成自己的WAN口IP地址,但此时路由器用于访问该服务器的1025号端口已经被主机A使用了,因此路由器会重新选定一个端口号对数据包的源端口号进行替换(比如1026)

此时转换表中就会建立如下两队映射关系:

image-20240810172720546

此时这张转换表既能保证从左到右的唯一性,也能保证从右到左的唯一性。

因此NAPT技术就是NAT路由器通过维护一张**“地址转换表”**,该表中记录源IP、源端口和目的IP、目的端口的对应关系,通过查表得到数据转发的目的地。

1.4NAT技术的缺陷

NAT技术进行私有IP和公网之间的替换,主要就是依赖NAT路由器当中维护的网络地址转换表,但这张转换表也体现出了NAT的一些缺陷:

  • 无法从NAT外部向内部服务器建立连接,因为外部无法知道内部的私网IP,也就无法主动与内部服务器建立连接。

  • 转换表的生成和销毁都需要额外开销。

  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开。

2.代理服务器

代理服务器(Proxy Server)的功能就是代理网络用户去取得网络信息,代理服务器又分为正向代理和反向代理。

(1)正向代理

正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端。

image-20240810174048344

通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。

  • 提高访问速度:正向代理服务器可以将目的服务器对应的资源缓存到本地,此时当其他人要访问该资源时,直接在正向代理服务器就可以获取,而不需要再次进行外网访问(部分加速器)。
  • 访问控制:访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作时间访问娱乐网站。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
  • 隐藏客户端身份:正向代理可以隐藏客户端的真实IP地址,保护客户端的隐私。

(2)反向代理

反向代理服务器是一种网络架构模式,其作为Web服务器的前置服务器,接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客户端。

image-20240810174255223

这种架构模式可以提升网站性能、安全性和可维护性等。

  • 负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发到多个后端服务器上,以实现负载均衡。这有助于提升网站的整体性能和响应速度,特别是在高并发场景下。
  • 安全保护:反向代理服务器可以隐藏后端Web服务器的真实IP地址,降低其被直接攻击的风险。同时,它还可以配置防火墙、访问控制列表(ACL)等安全策略,对客户端的请求进行过滤和限制,以保护后端服务器的安全。
  • 缓存加速:反向代理服务器可以缓存后端Web服务器的响应内容,对于重复的请求,它可以直接从缓存中返回响应,而无需再次向后端服务器发起请求。这可以大大减少后端服务器的负载,提升网站的响应速度。
  • 内容过滤和重写:反向代理服务器可以根据配置的规则对客户端的请求进行过滤和重写,例如添加或删除请求头、修改请求路径等。这有助于实现一些特定的业务需求,如URL重写、用户认证等。
  • 动静分离:在大型网站中,通常需要将静态资源和动态资源分开处理。通过将静态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应,而无需再次向后端服务器发起请求。这可以大大提升静态资源的访问速度。
  • CDN(ContentDeliveryNetwork,内容分发网络)通过在网络各处放置节点服务器,构建一个智能虚拟网络,以实时地根据网络流量、各节点的连接和负载状况、到用户的距离和响应时间等综合信息,将用户的请求重新导向离用户最近的服务节点上。这样,用户就可以就近取得所需内容,从而解决Internet网络拥挤的状况,提高用户访问网站的响应速度。(加速器)

需要注意的是,代理服务器的主要工作只是对数据进行转发,因此代理服务器处理数据的压力不会特别大,并且代理服务器也可以有多个,因此不必担心代理服务器过载的情况。

(3)正向代理和反向代理的异同

正向代理和反向代理的相同点:

  • 正向代理服务器和反向代理服务器都是位于客户端和服务器之间的。
  • 正向代理服务器和反向代理服务器的主要工作,都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端

正向代理和反向代理的不同点:

  • 正向代理是客户端的代理,帮助客户端访问其无法访问的服务器资源的,而反向代理则是服务器的代理,帮助服务器做负载均衡、安全防护等工作的。
  • 正向代理一般是客户端架设的,而反向代理一般是服务端架设的。
  • 正向代理中,服务器不知道真正的客户端到底是谁,服务器认为正向代理服务器就是真实的客户端,而反向代理中,客户端不知道真正的服务器是谁,客户端认为反向代理服务器就是真实的服务器。

3.NAT和代理服务器的区别

NAT和代理服务器都是代替我们向服务器发起数据请求的,但它们有如下区别:

  • 从应用上讲,NAT设备是网络基础设备之一,解决的是IP不足的问题,而代理服务器则是更贴近具体应用,比如通过代理服务器进行FANQIANG,另外像迅游这样的加速器,也是使用的代理服务器。
  • 从底层实现上讲,NAT工作在网络层,直接对IP地址进行替换,而代理服务器往往工作在应用层。
  • 从使用范围上讲,NAT一般在局域网的出口部署,而代理服务器可以在局域网代理,也可以在广域网代理,也可以跨网代理。
  • 从部署位置上看,NAT一般集成在防火墙、路由器等硬件设备上,而代理服务器则是一个软件程序(比如Nginx和Apache),需要部署在服务器上。

4.内网穿透

两台主机如何跨局域网直接进行通信?

  • 首先在代理服务器上部署安装配置"frps"(frp服务端),在主机部署安装配置"frpc"(frp客户端)。
  • 让一台主机与代理服务器建立连接,生成NAT映射表。
  • 通过"frpc"将本地某个端口映射到代理服务器"frps"的某端口。

这样一来,未来其他主机只需要访问代理服务器的特定端口,就能直接访问到目标主机的特定端口,即内网穿透技术。

image-20240811100644882

内网打洞

假设此时有两个主机A、B分别与某云服务器建立连接(比如某直播),此时NAT映射表全部建立完成。

某直播云服务器会获取到两个主机的出口路由器的IP地址和端口号,如果此时云服务器将A主机的出口路由器IP地址和端口号与B主机的出口路由器IP地址和端口号进行交换。

云服务器交换后将对方主机的出口路由器的IP地址和端口号响应回相应主机,此时A主机就知道了B主机出入口路由器的IP地址和端口,B主机也知道了A主机的IP地址和端口号。

此时A主机就可以不用访问某直播云服务器而直接访问B主机,这样可以大大降低云服务器的流量压力,这种技术被称为”内网打洞“技术。

两台主机不通过云服务器直接访问对方,这种行为就是"P2P"。


你可以期待太阳从东方升起,而风却随心所欲地从四面八方吹来。 —萨特

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效处理高并发手机号查询请求:系统设计与优化策略

高效处理高并发手机号查询请求:系统设计与优化策略 一、系统架构设计原理1. 路由网关层2. Web服务层3. 消息队列层4. 实时查询微服务层5. 缓存预热服务 二、总结与优化 💖The Begin💖点点关注,收藏不迷路💖 在现代互联…

Java语言程序设计基础篇_编程练习题17.14 (加密文件)/17.15 (解密文件)

题目:17.14 (加密文件) 通过给文件中的每个字节加5来对文件编码。编写一个程序,提示用户输入一个输入文件名和一个输出文件名,然后将输入文件的加密版本存入输出文件。 代码示例:编程练习题17_14EncryptFiles.java package chapte…

VM Workstation虚拟机AlmaLinux 9.4操作系统安装(桌面版安装详细教程)(宝塔面板的安装),填补CentOS终止支持维护的空白

目录 AlmaLinux介绍 AlmaLinux操作系统的安装 1、下载镜像文件 2、新建虚拟机 (1)点击创建新的虚拟机 (2)打开虚拟机向导后,选择“自定义”安装,然后点击“下一步” (3)选择虚…

文本数据分析-(TF-IDF)(1)

文章目录 一、TF-IDF简介1.意义2.TF与IDF1).TF(Term Frequency)2).IDF(Inverse Document Frequency)3).TF-IDF 二、应用三、代码实现1.文件读取2.数据预处理3.排序和输出4.全部代码 一、TF-IDF简介 1.意义 TF-IDF(Te…

大数据查询优化之谓词下推 ?

谓词 谓词,可以理解为条件表达式,在SQL中,谓词就是返回Boolean值,即True或False的函数,或是隐式转换为Boolean的函数。SQL中的谓词主要有 LKIE、BETWEEN、IS NULL、IS NOT NULL、IN、EXISTS其结果为布尔值&#xff0c…

NASA数据集:ASO L4雷达雪神数据集

目录 简介 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ASO L4 Lidar Snow Depth 50m UTM Grid V001 简介 该数据集包含根据机载光探测和测距仪(或称激光雷达)对地表高程的测量得出的 50 米网格雪深。 这些数据是 NASA/JPL 机载雪地观测…

如何构建基于Java SpringBoot的医疗器械管理系统?四步详解从需求分析到系统部署,集成Vue.js提升用户体验,内含MySQL数据库管理技巧。

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

采购管理流程:自动化如何使效率提升75% ?

与许多业务流程一样,采购到付款 (P2P) 流程也面临着潜在错误、可避免的成本支出以及可能导致的延误。目前,实现自动化的采购流程比例尚不足一半。 自动化在工作场所的应用具有深远的影响,其重要性不言而喻。对于某些企业而言,自动…

android openGL ES详解——面剔除

一、什么是面剔除? 1.面剔除 尝试在头脑中想象一下有一个3D立方体,你从任何一个方向去看它,最多可以同时看到多少个面。如果你的想象力不是过于丰富,你最终最多能数出来的面是3个。你可以从一个立方体的任意位置和方向上去看它&…

金融上云方案中,国产虚拟化产品选型的重点考虑因素、自动化运维建设步骤及如何进行保障数据中心安全需求的存储设计等问题及解决方法|金融行业数字化QA合集③

Q:金融机构应该从哪些方面考虑虚拟化产品选型? 我行是中小规模城商行,想实现虚拟化国产替换,针对国产虚拟化种类繁多的情况,我行应该从哪些方面考虑产品选型,确保所选择产品既能满足信创替换,又…

银河麒麟v10-sp3-x86系统安装k8s-1.30.4

X86-64和arm架构的区别 x86-64架构: 设计理念:x86-64架构起源于Intel的x86架构,并对其进行了64位扩展。这种架构的设计侧重于高性能和灵活性,适合处理复杂的计算任务。 性能特点:x86-64架构的处理器通常提供高性能的…

六个方面探讨企业为何迫切需要替换FTP

随着信息技术的迅猛发展和网络安全形势的日趋严峻,传统的FTP文件传输协议因其固有的局限性和安全隐患,逐渐难以满足现代企业的需求。因此,寻找并升级FTP替代方案成为众多企业需要解决的问题。本文将从六个方面探讨企业为何迫切需要替换FTP。 …

云轴科技ZStack产品升级,浙江分公司产品发布会成功举办

近日,以“智启未来,云端共赢”为主题的云轴科技ZStack浙江分公司针对浙江地区渠道合作伙伴的产品发布会在杭州顺利召开。ZStack总代理伟仕佳杰、神州数码、英迈等百余位合作伙伴代表出席会议,共同见证ZStack在云基础设施与AI软件基础设施领域…

易查分如何查询图片?

最近经常看到老师们各种分享和讨论一个问题,今天,我就和大家聊聊如何高效地在易查分平台上上传和管理图片,让查询结果更加直观。 首先准备你的图片,无论是获奖证书还是奖状,确保它们的格式正确,比如"2…

VMware虚拟机安装的Ubuntu,桥接方式静态ip,内网可以访问,ping外网不可用

1.环境说明 系统:Ubuntu 24.04 环境:VMware下桥接静态IP设置 2.问题:ping www.baidu.com报错 [~] ping www.baidu.com ping: www.baidu.com: Temporary failure in name resolutio…

十、前后端分离通用权限系统(10)

🌻🌻 目录 一、功能说明二、部门管理三、岗位管理四、日志管理4.1、登录日志4.1.1、功能实现- 接口4.1.2、编写 AsyncLoginLogMapper4.1.3、功能实现- 接口实现4.1.4、导入获取ip地址的工具类 IpUtil4.1.5、在 TokenLoginFilter 调用方法实现4.1.6、修改…

【Matlab】时间序列模型(ARIMA)

文章目录 前言一、示例二、代码实现----Matlab全部数据的平稳性检验ADF检验图检验法 划分训练集平稳性检验确定 p,q结果分析和模型检验模型预测 前言 接上一篇博客,用 Matlab 完成代码编写。 【学习笔记】时间序列模型(ARIMA) 一、示例 已知一个上市公…

Linux云计算 |【第二阶段】SHELL-DAY4

主要内容: grep、egrep的使用,基本/扩展正则、sed的使用(非交互、逐行处理、常用命令与选项) 补充:grep [-E]选项,表示允许使用扩展的正则表达式(同等于egrep) 一、grep 与 egrep 的…

Kubernetes高可用部署

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

极限的性质【上】《用Manim可视化》

通过前面的极限的定义,现在是计算极限的时候了。然而,在此之前,我们需要一些极限的性质,这将使我们的工作变得简单一些。我们先来看看这些。 极限的性质: 1.常数对极限的影响 1.首先,我们假设和存在&…