Linux:NAT等相关问题

目录

1:NAT背景 

2:NAT IP转换过程

3:NATP

4:正向代理

5:反向代理

6:NAT和代理服务器

应用场景

实现方法


1:NAT背景 

  1. IPv4地址耗尽:随着互联网的迅速发展,连接到网络的设备数量急剧增加,导致IPv4地址空间逐渐耗尽。NAT作为一种解决方案,允许多个设备共享一个公共IPv4地址来访问互联网。

  2. 私有地址空间:为了有效管理网络和节约IPv4地址,IETF(互联网工程任务组)定义了私有地址空间,这些地址在互联网上不是唯一的,不能直接用于互联网通信。NAT技术使得这些私有地址能够被转换为可在互联网上使用的地址。

  3. 网络安全:NAT提供了一定程度的网络安全,因为它隐藏了内部网络的IP地址。这可以防止外部攻击者直接访问内部网络设备。

  4. 成本节约:在早期互联网时代,申请和维护足够的公共IP地址可能成本较高。NAT技术允许使用较少的公共IP地址,从而节约了成本。

  5. 网络隔离:NAT可以在不同网络之间提供隔离,例如,家庭网络和企业网络通常使用NAT来隔离内部网络和互联网。

  6. 协议兼容性:随着新协议和应用的出现,保持不同网络设备和协议的兼容性变得越来越重要。NAT可以在不同版本的IP协议之间提供转换,帮助维护网络的兼容性。

  7. 移动性支持:随着移动设备的普及,NAT技术也支持了网络地址的动态分配和移动设备的互联网接入。

  8. 服务连续性:NAT允许网络在不更换IP地址的情况下进行升级和扩展,保持了服务的连续性。

        NAT技术的引入是为了解决实际的网络问题,特别是IPv4地址不足的问题,并提供额外的网络安全和灵活性。随着互联网的发展,NAT已经成为现代网络通信中不可或缺的一部分。尽管如此,NAT也带来了一些挑战,如对端到端通信的限制和某些应用协议的兼容性问题。

2:NAT IP转换过程

        • NAT 路由器将源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37;

        • NAT 路由器收到外部的数据时, 又会把目标 IP 从 202.244.174.37 替换回10.0.0.10;

        • 在 NAT 路由器内部, 有一张自动生成的, 用于地址转换的表;

        • 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

3:NATP

        如果局域网内, 有多个主机都访问同一个外网服务器, NAPT(网络地址与端口转换)是一种特殊形式的NAT(网络地址转换),它不仅转换IP地址,还转换传输层的端口号。

        NAPT使用IP + port来建立这个关联关系。


        这种关联关系也是由 NAT 路由器自动维护的. 例如在 TCP 的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项。

 NAT 技术的缺陷

         由于 NAT 依赖这个转换表, 所以有诸多限制:

        无法从 NAT 外部向内部服务器建立连接;

        • 装换表的生成和销毁都需要额外开销;

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

4:正向代理

正向代理

 概述

        正向代理(Forward Proxy) 是一种常见的网络代理方式, 它位于客户端和目标服务器之间, 代表客户端向目标服务器发送请求。 正向代理服务器接收客户端的请求, 然后将请求转发给目标服务器, 最后将目标服务器的响应返回给客户端。 通过这种方式, 正向代理可以实现多种功能, 如提高访问速度、 隐藏客户端身份、 实施访问控制等。

 工作原理

        • 客户端将请求发送给正向代理服务器。

        • 正向代理服务器接收请求, 并根据配置进行处理, 如缓存查找、 内容过滤等。

        • 正向代理服务器将处理后的请求转发给目标服务器。

        • 目标服务器处理请求, 并将响应返回给正向代理服务器。

        • 正向代理服务器将响应返回给客户端

功能特点

        • 缓存功能: 正向代理服务器可以缓存经常访问的资源, 当客户端再次请求这些资源时, 可以直接从缓存中获取, 提高访问速度。

        • 内容过滤: 正向代理可以根据预设的规则对请求或响应进行过滤, 如屏蔽广告、阻止恶意网站等。

        • 访问控制: 通过正向代理, 可以实现对特定网站的访问控制, 如限制员工在工作时间访问娱乐网站。

        • 隐藏客户端身份: 正向代理可以隐藏客户端的真实 IP 地址, 保护客户端的隐私。

        • 负载均衡: 在多个目标服务器之间分配客户端请求, 提高系统的可扩展性和可靠性。

应用场景

  1. 访问控制

    • 正向代理可以用来控制对特定网站的访问,例如,家长可能使用正向代理来阻止孩子访问不适宜的网站。
  2. 缓存和带宽优化

    • 代理服务器可以缓存频繁请求的内容,减少对原始服务器的请求,从而节省带宽并加快访问速度。
  3. 匿名访问

    • 用户可以通过正向代理服务器匿名访问互联网,因为代理服务器隐藏了客户端的真实IP地址。
  4. 内容过滤

    • 组织机构使用正向代理来过滤掉不安全或不适当的内容,确保网络环境的合规性。
  5. 负载均衡

    • 在多个服务器之间分配客户端请求,以平衡负载和优化资源使用。
  6. 访问日志记录

    • 正向代理可以记录用户的访问历史和习惯,用于分析用户行为或进行网络安全监控。
  7. 地理位置限制

    • 用户可以使用正向代理来绕过地理位置限制,访问那些在他们所在地区不可用的在线服务。
  8. 互联网服务提供商(ISP)使用

    • ISP可以使用正向代理来管理用户的互联网访问,提供额外的服务如广告过滤或数据压缩。
  9. 公司和学校

    • 公司和学校使用正向代理来监控员工和学生的网络活动,防止访问不相关的网站,提高生产效率。
  10. 遵守法规和政策

    • 组织可能需要遵守特定的法规和政策,正向代理可以帮助实施这些政策,如阻止访问版权受保护的材料。
  11. 网络爬虫和数据抓取

    • 正向代理可以用来改变请求的来源IP,避免被目标网站封锁,这对于网络爬虫和数据抓取非常有用。
  12. 保护隐私

    • 用户可以通过正向代理保护个人隐私,防止个人信息在访问网站时被跟踪或记录。

5:反向代理

 概述

        反向代理服务器是一种网络架构模式, 其作为 Web 服务器的前置服务器, 接收来自客户端的请求, 并将这些请求转发给后端服务器, 然后将后端服务器的响应返回给客户端。 这种架构模式可以提升网站性能、 安全性和可维护性等。

 基本原理

        反向代理服务器位于客户端和 Web 服务器之间, 当客户端发起请求时, 它首先会到达反向代理服务器。 反向代理服务器会根据配置的规则将请求转发给后端的 Web服务器, 并将 Web 服务器的响应返回给客户端。 在这个过程中, 客户端并不知道实际与哪个 Web 服务器进行了交互, 它只知道与反向代理服务器进行了通信。

应用场景

        1:负载均衡: 反向代理服务器可以根据配置的负载均衡策略, 将客户端的请求分发到多个后端服务器上, 以实现负载均衡。 这有助于提升网站的整体性能和响应速度,特别是在高并发场景下。

        2: 安全保护: 反向代理服务器可以隐藏后端 Web 服务器的真实 IP 地址, 降低其被直接攻击的风险。 同时, 它还可以配置防火墙、 访问控制列表(ACL) 等安全策略,对客户端的请求进行过滤和限制, 以保护后端服务器的安全。

        3: 缓存加速: 反向代理服务器可以缓存后端 Web 服务器的响应内容, 对于重复的请求, 它可以直接从缓存中返回响应, 而无需再次向后端服务器发起请求。 这可以大大减少后端服务器的负载, 提升网站的响应速度。

        4: 内容过滤和重写: 反向代理服务器可以根据配置的规则对客户端的请求进行过滤和重写, 例如添加或删除请求头、 修改请求路径等。 这有助于实现一些特定的业务需求, 如 URL 重写、 用户认证等。

        5: 动静分离: 在大型网站中, 通常需要将静态资源和动态资源分开处理。 通过将静态资源部署在反向代理服务器上, 可以直接从反向代理服务器返回静态资源的响应,而无需再次向后端服务器发起请求。 这可以大大提升静态资源的访问速度。

        6: CDN(Content Delivery Network, 内容分发网络) 就是采用了反向代理的原理。

6:NAT和代理服务器

        路由器往往都具备 NAT 设备的功能, 通过 NAT 设备进行中转, 完成子网设备和其他子网设备的通信过程。

        代理服务器看起来和 NAT 设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端。

NAT和代理服务器的区别

        • 从应用上讲, NAT 设备是网络基础设备之一, 解决的是 IP 不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器,也是使用代理服务器.

        • 从底层实现上讲, NAT 是工作在网络层, 直接对 IP 地址进行替换. 代理服务器往往工作在应用层.

        • 从使用范围上讲, NAT 一般在局域网的出口部署, 代理服务器可以在局域网做,也可以在广域网做, 也可以跨网.

        • 从部署位置上看, NAT 一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.

 代理服务器应用

1:翻墙: 广域网中的代理.

2:负载均衡: 局域网中的代理.

内网穿透

         内网穿透(Intranet Penetration 或 NAT Traversal)是一种技术,它允许位于私有网络(如家庭或企业内部网络)后面的设备能够被外部网络(如互联网)访问。

这种技术通常用于以下场景:

  1. 远程访问

    • 用户希望从外部网络访问内网中的服务,例如远程桌面、文件共享或家庭自动化系统。
  2. 家庭服务器

    • 用户可能想在内网中搭建Web服务器、邮件服务器或其他类型的服务器,并希望从互联网上访问它们。
  3. 物联网(IoT)设备

    • IoT设备通常位于内网中,内网穿透可以让这些设备从互联网接收指令或发送数据。
  4. 游戏联机

    • 玩家可能需要从互联网上连接到内网中的游戏服务器进行联机游戏。
  5. 开发和测试

    • 开发者可能需要从外部网络访问内网中用于开发和测试的环境。
  6. 避免地理位置限制

    • 有些服务可能在特定地区不可用,内网穿透可以用来绕过这些限制。

实现内网穿透的常见方法包括:

  • 端口转发: 在路由器上设置端口转发规则,将外部请求转发到内网中特定设备的特定端口。

  • VPN(虚拟私人网络): 建立VPN连接可以模拟直接连接到内网,从而访问内网资源。

  • 反向代理: 使用反向代理服务器将外部请求转发到内网中的服务器。

  • NAT穿透技术: 如UPnP(通用即插即用)和NAT-PMP(NAT端口映射协议),它们允许设备自动配置路由器的端口转发规则。

  • 第三方服务: 使用ngrok、frp等第三方内网穿透服务,它们通过在内网设备和第三方服务器之间建立安全隧道来实现穿透。

内网打洞 

UDP内网穿透和打洞原理与代码实现 - 第七子007 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/theseventhson/p/14304321.html         "内网打洞"(有时称为"NAT穿透"或"端到端连接")是指在两个位于不同内网(通常是NAT之后)的设备之间建立直接的网络连接的过程。由于NAT设备通常只允许从外部网络主动发起的连接进入内网,因此,当两个内网设备需要直接通信时,就需要使用内网打洞技术来实现。

应用场景

  1. P2P文件共享:点对点的文件共享服务需要在两台设备之间建立直接连接。
  2. 在线游戏:玩家需要直接连接到对方进行多人游戏。
  3. 远程桌面:用户可能希望从任何地方远程访问内网中的计算机桌面。
  4. VoIP服务:网络电话服务可能需要在用户之间建立直接的音频或视频连接。

实现方法

  1. STUN(Session Traversal Utilities for NAT)

    • STUN服务器帮助内网中的设备发现其公共IP地址和NAT类型,并提供其公共地址和端口映射的信息。
  2. TURN(Traversal Using Relays around NAT)

    • 当直接连接无法建立时,TURN服务器作为中介,转发数据包,允许两个NAT后面的设备进行通信。
  3. ICE(Interactive Connectivity Establishment)

    • ICE是一个框架,结合了STUN和TURN,用于在两个NAT后面的设备之间建立直接的连接。
  4. UPnP(Universal Plug and Play)

    • UPnP允许设备自动配置NAT设备的端口转发规则,从而允许外部设备连接到内网设备。
  5. NAT-PMP(NAT Port Mapping Protocol)

    • NAT-PMP是另一种协议,允许设备请求NAT路由器自动打开端口,类似于UPnP。
  6. 端到端协议

    • 一些应用程序可能实现自己的协议来处理NAT穿透,例如使用特定的打洞技术或信令方法。

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

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

相关文章

LMDeploy 量化部署实践

一、环境配置见:https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/LMDeploy/readme.md 验证LMDeploy启动InternLM2_5-7b-chat conda activate lmdeploy lmdeploy chat /root/models/internlm2_5-7b-chat二、量化显存计算 参数计算: LMDeploy …

盘点15款工程软件,为制造业选型提供参考!

本文将盘点15款工程软件,供企业选型参考。 工程软件就如同工程领域的得力助手,能让工程建设的各个环节都变得更加高效、精准。 对于工程企业来说,如果没有合适的工程软件,就像工匠没有趁手的工具,难以打造出精良的作品…

linux查看系统安装时间命令,找出Linux操作系统(OS)安装日期和时间

你可能想知道你的计算机上何时安装了Linux操作系统,即OS的安装日期和时间,使用tune2fs、dumpe2fs、ls、basesystem、setup、setuptool命令能出来结果。请注意,如果你从模板安装了操作系统,那么它将显示模板生成日期,而不是实际操作系统安装日期。 方法1:如何使用tune2fs…

LayerNorm介绍

简介 Layer Normalization (LayerNorm) 是一种归一化技术,常用于深度学习模型中,特别是在 Transformer 模型中。 Layer normalization 是在特征维度上进行标准化的,而不是在数据批次维度上。 目的 收敛模型数据数值差异,缓解内…

GD32F4xx---RTC初始化设置及闹钟方式实现秒中断讲解

GD32F4xx—RTC初始化设置及闹钟方式实现秒中断讲解 1、下载链接:源码工程 一、概述 GD32F4x的RTC例程网上资源较少,详细阅读用户手册后做出如下配置。RTC模块提供了一个包含日期(年/月/日)和时间(时/分/秒/亚秒)的日历功能。除亚秒用二进制码显示外,时间和日期都以BC…

『功能项目』新输入系统【06】

我们打开上一篇04禁止射线穿透行为项目, 本章要做的事情是在Unity编辑器中添加 新输入系统 实现主角在场景中鼠标右键可以使主角 转向。 本次项目需要让Unity引擎重新启动所以先保存当前项目 再次打开项目后, 修改为Both 点击Apply前注意要先保存项目&a…

JVM上篇:内存与垃圾回收篇-07-方法区

笔记来源:尚硅谷 JVM 全套教程,百万播放,全网巅峰(宋红康详解 java 虚拟机) 文章目录 7. 方法区7.1. 栈、堆、方法区的交互关系7.2. 方法区的理解7.2.1. 方法区在哪里?7.2.2. 方法区的基本理解7.2.3. HotSp…

【Linux】命令简介------迅速掌握Linux命令

目录 Linux 命令 🍔 ls命令 🍔 cd 和 pwd命令 🍔 相对路径和绝对路径 🍔 文件/文件夹的创建以及文件内容的浏览 🍔 文件的复制,移动和删除 🍔 文件的查找 🍔 grep 和管道 &#x1f354…

@antv/g6 业务场景:流程图

1、流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。业务场景流程图如下: 2、绘制流程图的 Tips 流程图一般是用…

奇安信渗透测试岗位三面经验分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

Python深浅拷贝

0、前置知识 数据类型:可变类型、不可变类型 不可变类型:一旦创建就不可修改的对象,包括字符串、元组、数值类型(整型、浮点型) 该对象所指向的内存中的值不能被改变。 当改变某个变量时候,由于其所指的…

【MySQL 12】事务管理 (带思维导图)

文章目录 🌈 一、事务的基本概念⭐ 1. 事务是什么⭐ 2. 事务的特性 🌈 二、事务的版本支持🌈 三、事务的提交方式⭐ 1. 查看事务的提交方式⭐ 2. 设置事务的提交方式 🌈 四、事务的特性证明⭐ 1. 事务的常规操作⭐ 2. 证明事务的原…

进程间的通信

建立两个.c 建立子父进程&#xff0c;父进程发送消息到队列&#xff0c;子进程读取队列&#xff0c;另一个同样。 #include <myhead.h> struct msga {long mtype;char mtext[1024]; }; #define len sizeof(struct msga)-sizeof(long) int main(int argc, const char *arg…

烂大街的测试左移和右移

01 测试左移与右移的定义 通俗的讲&#xff1a;左移是往开发阶段移&#xff0c;右移是往发布之后移。 正常测试&#xff1a;提测后的测试工作——到——发布验证完成阶段。 测试左移&#xff1a;提测之前的测试。 如&#xff1a;代码单元测试&#xff0c;代码质量检测&#x…

python-读取word中的内容

doc Document(rD:\xxxx\xxxx\xxx.docx) #读取word中所有内容 for p in doc.paragraphs print(p,p.text) #读取指定段落中的所有run(文字块) for run in doc.paragraphs[1].runs: print(run,run.text) #读取word中所有表格内容 for 表格 in doc.tables: print(表格) for 行 in …

产品经理有没有必要考pmp证书?

可以给一个总结&#xff1a;想提升自己的可以考&#xff0c;单纯奔着考证去的&#xff0c;没必要考&#xff01; 如果产品经理的相关证件&#xff0c;比如 npdp 之类的&#xff0c;都已经拿到手了&#xff0c;并且觉得自己现阶段工作比较满意&#xff0c;想提升自己更上一层楼…

《安全回收电脑,从销毁硬盘数据开始》文件硬盘数据销毁

在这个信息高速发展的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;当我们决定更换电脑或者对旧电脑进行回收时&#xff0c;你是否考虑过硬盘中存储的数据安全问题呢&#xff1f; 电脑硬盘中可能存储着大量的个人信息、工作文件、照片、视频等…

解决vue中this.$set()不更新页面问题

问题汇总&#xff1a;解决vue中this.$set()不更新页面问题 this.$set()方法有一种情况&#xff0c;就是当你要设置的key已经存在于这个对象或数组中的时候&#xff0c;它只会更改data并不会为该key添加响应检测&#xff0c;所以解决这个问题的办法就是在设置值之前先把这个属性…

k8s项目的发布(金丝雀发布)

目录 三种发布方式 1.蓝绿发布 2.金丝雀发布&#xff08;灰度发布&#xff09; 实验&#xff1a;k8s实现金丝雀发布 3.滚动发布&#xff08;默认形式&#xff09; 因为应用升级以及新旧业务切换&#xff0c;所以在这个过程当中如何保证对外的服务正常是一个非常重要的问题…

InternVL 多模态模型部署微调实践

写在前面&#xff08;什么是InternVL&#xff09; InternVL 是一种用于多模态任务的深度学习模型&#xff0c;旨在处理和理解多种类型的数据输入&#xff0c;如图像和文本。它结合了视觉和语言模型&#xff0c;能够执行复杂的跨模态任务&#xff0c;比如图文匹配、图像描述生成…