NAT网络地址转换与内网穿透

article/2025/8/11 19:22:05

一、背景

        前一篇文章提到PCDN, 也就是p2p技术+CDN技术进行融合。 P2P技术有利于文件的快速分发。我们的CDN在控制节点分发数据的时候,向边缘节点传输数据,也是一种分发,还有各边缘节点强制同步数据等等,如果结合P2P技术进行整合,能更灵活,同时还降低了控制节点的压力。

        在研究PCDN的时候就发现了P2P技术中肯定绕不开的技术就是NAT网络地址转换技术,所以专门写一篇来回顾NAT的作用和内网穿透实现。

二、NAT技术

1、简介

        NAT 技术允许将一个 IP 地址域(如私有网络中的 IP 地址)转换为另一个 IP 地址域(如公有网络中的 IP 地址)。其主要作用是解决 IPv4 地址空间不足的问题,使得多个私有网络中的设备能够通过少数几个公有 IP 地址访问互联网,同时还能隐藏内部网络的拓扑结构,增强网络的安全性。

        早期NAT的出现是为了防止IPV4枯竭的一种延缓手段。 现在IPV4已经全部分配耗尽了。 我们上网不可能每个人都拿到一个IPV4, 所以需要将我们内网IP转换为一个公网IP才能上互联网,这里做转换工作的就是NAT。

2、地址转换方式和映射关系-分类

NAT(网络地址转换)主要有以下三种类型:

  • 静态 NAT
    • 原理:将内部网络中的每个私有 IP 地址与一个外部公有 IP 地址进行一对一的静态映射。这种映射关系是固定的,不会随着时间或网络流量的变化而改变。
    • 应用场景:适用于需要对外提供固定 IP 地址服务的设备,如企业内部的服务器,需要让外部用户能够通过固定的公网 IP 地址访问。
  • 动态 NAT
    • 原理:从一个公有 IP 地址池中动态地为内部网络中的设备分配公有 IP 地址。当内部设备需要访问外部网络时,NAT 设备会从地址池中选取一个未被使用的公有 IP 地址进行映射,并在使用完毕后将其释放回地址池,以便其他设备使用。
    • 应用场景:适用于内部网络中设备数量较多,但同时访问外部网络的设备数量相对较少的情况,通过动态分配可以有效地利用有限的公有 IP 地址资源。
  • 网络地址端口转换(NAPT)
    • 原理:也称为端口映射,它将内部网络中多个私有 IP 地址映射到同一个公有 IP 地址的不同端口上。通过端口号来区分不同的内部设备,使得多个内部设备可以共享一个公有 IP 地址同时访问外部网络。
    • 应用场景:这是最常见的 NAT 类型,广泛应用于家庭网络和小型企业网络中,以满足多个设备同时通过一个宽带连接访问互联网的需求。

此外,还有一些扩展的 NAT 类型,如静态 NAPT、动态 NAPT 等,它们都是在上述三种基本类型的基础上进行组合或优化,以满足不同的网络需求。

3、数据包地址转换的方向和目的-分类

1、基于数据包地址转换方向
  • SNAT:主要针对数据包的源地址进行转换。当内部网络中的设备访问外部网络时,SNAT 会将数据包的源 IP 地址从内部私有 IP 地址转换为外部公有 IP 地址,使得外部网络设备看到的是转换后的公有 IP 地址,从而实现内部设备对外部网络的访问。例如,在企业内部网络中,员工的电脑通过公司的防火墙访问互联网,防火墙就会使用 SNAT 将员工电脑的私有 IP 地址转换为公司申请的公有 IP 地址。
  • DNAT:侧重于对数据包的目的地址进行转换。当外部网络的设备想要访问内部网络的特定设备或服务时,DNAT 会将数据包的目的 IP 地址从外部可访问的公有 IP 地址转换为内部网络中实际提供服务的设备的私有 IP 地址,引导外部流量准确到达内部目标设备。比如,企业对外提供 Web 服务的服务器部署在内部网络,外部用户通过访问企业的公有 IP 地址来访问该 Web 服务,这时防火墙就会使用 DNAT 将外部用户请求的目的地址转换为内部 Web 服务器的私有 IP 地址。
2、基于地址转换目的
  • SNAT:目的主要是实现内部网络中多个设备共享少量公有 IP 地址访问外部网络,解决 IPv4 地址短缺问题,同时隐藏内部网络的拓扑结构和设备信息,增强网络安全性。因为外部网络只能看到经过 SNAT 转换后的公有 IP 地址,无法直接得知内部设备的真实 IP 地址和网络结构。
  • DNAT:主要目的是让外部网络能够访问内部网络中的特定服务器或服务。通过在边界设备(如防火墙、路由器)上配置 DNAT 规则,将外部的访问请求引导到内部相应的服务器上,使得内部网络的服务器可以对外提供服务,如 Web 服务、邮件服务等。

4、内网主机与外部网络通信的限制程度和映射规则-分类

1、NAT1(全锥形 , Full Cone

        属于限制最少的类型。内网主机使用一个固定的公网 IP 和端口进行所有外部通信,任何外部主机只要知道这个公网 IP 和端口,就能向内网主机发送数据

2、NAT2(IP 限制锥形 , IP - restricted ConeNAT)

        相比 NAT1 增加了请求源IP地址限制。内网主机使用一个固定的公网 IP 和端口进行所有外部通信,但只有内网主机曾向某外部主机发送过数据,该外部主机才能向内网主机发送数据,端口不受限。

        NAT2情况下,只有注册中心的这个公网IP才能往110.0.1.1:3389访问或者写入数据,注册中心请求的端口无限制。 其它IP一律拒绝 

3、NAT3(端口限制锥形, Port - restricted Cone NAT

        在 NAT2 的基础上又增加了端口限制。内网主机使用一个固定的公网 IP 和端口进行所有外部通信,只有内网主机曾向某外部主机的特定 IP 和端口发送过数据,该外部主机才能向内网主机发送数据,即 IP 和端口都受限。

        在NAT2的基础之上,限定了源客户端的端口, 只接受注册中心的9000传来的数据,就算是这个注册中心的IP, 不是9000端口都不行!

4、NAT4(对称型 NAT, Symmetric NAT

        限制最为严格。内网主机与每个外部主机通信时,会分配不同的公网 IP 和端口。外部主机只能在收到内网主机的数据后才能回传数据,内部地址每一次请求一个特定的外部地址,都可能会绑定到一个新的端口号,即请求不同的外部地址映射的端口号可能不同。

        NAT4最为严格,首先每当和不同外部主机通信都会使用不同端口(公网IP可能相同、可能不同) ,  端口和IP是动态分配的、不是固定的

        其次在NAT3的基础上,你只能与外部主机连接的端口进行通信,限制外部主机IP、端口。 并且还做了更为严格的数据过滤,例如会话绑定。

        NAT4基本就是只能源主机和目标外部主机的严格通信,第三方完全都插不进来。 安全性最高,开放性最低。

三、总结

        P2P需要解决的前提就是内网穿透问题, 也是难点问题, 因为大家上网都在局域网,正常情况下你是无法直接穿透内网与其它节点进行数据交互和通信的, 那必须要穿透内网才是发挥P2P的优势。

        因为现在运营商对P2P, PCDN管控很严格,很多地方都直接把上网的NAT改为NAT4级别,基本上你都无法来穿透内网或者说你要花费的成本变高了很多。

        之前用PCDN一些盒子来挂闲置流量赚取收益,现在越来越难。但是上有政策下有对策,还是有人能想出一些办法绕过这个被降为NAT4的情况。


http://www.hkcw.cn/article/ToqAsjQjHm.shtml

相关文章

PHP取整函数大揭秘:round、ceil、floor你了解多少?

话说那天,我正在写一个PHP项目,需求是要处理一些浮点数,然后进行各种花样取整。你知道的,浮点数这东西,搞不好就是个坑。于是我掏出了我的工具箱,准备好好研究一下PHP的取整函数。 最常用的就是round函数了…

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

总目录:《UDS协议从入门到精通(UDS速查手册)》(完结撒花版) 前言一、UDS简介1.1 从汽车诊断说起1.2 两种常见的诊断协议:OBD & UDS 二、相关术语介绍2.1 Service ID(SID)2.2 诊断…

静态路由配置

一.静态路由的了解 1.静态路由简介 静态路由(Static Routing)是一种手动配置的路由方式,管理员通过手动定义路由表中的条目来指定数据包的转发路径。与动态路由(如 OSPF、BGP 等)不同,静态路由不会自动…

php入门教程(超详细,一篇就够了!!!)

前言 本章节主要学习PHP概念、PHP环境搭建、基本语法、PHP函数、PHP文件管理、PHP操作MySQL数据库等知识点,收录于PHP基础系列。该系列主要讲解PHP相关知识点,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目录 一 概述 二 环境搭建 1. 开发环境…

一文弄懂 YOLOv8网络结构解读 、yolov8.yaml配置文件详细解读与说明、模型训练参数详细解析 通俗易懂!入门必看系列!

看这一篇就够了。本文内含YOLOv8网络结构图 yaml配置文件详细解读与说明 训练教程 训练参数设置参数解析说明等一些有关YOLOv8的内容! YOLOv8v10专栏订阅链接:YOLOv10 创新改进高效涨点持续改进300多篇永久免费答疑 (订阅的小伙伴&#xf…

php+vue+Laravel+uniapp超市售货管理平台小程序-nodejs-计算机毕业设计

文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示:文章底部获取博主联系方式!!!!本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献:源码获取/详细视频演示 ##项目…

【web渗透】SSRF漏洞超详细讲解

SSRF漏洞 一、原理简介二、漏洞形成的原因三、SSRF和CSRF的区别四、SSRF的攻击方式五、寻找漏洞的方法六、伪协议的介绍 * 1、ftp:// 协议2、Gopher://协议3、Dict:// 协议 七、绕过姿势八、漏洞修复 * 1、防护措施2、最佳防护 九、本章小结 一、原理简介 SSRF(Server-Side R…

【M365运维】Sharepoint文档库无法编辑页面

【问题】 Sharepoint文档库设计开发人员反馈说,文档库页面左上角的“编辑页面”变灰了,无法使用。 另外,如果使用Sharepoint Designer去打开文档库链接,登录时会出现下面的提示。 【解决】 1、启用 Custom Script, 步骤&#xff1…

Spring Boot 整合 RabbitMQ 实现延迟消息

关于 RabbitMQ 消息队列(Message Queuing,简写为 MQ)最初是为了解决金融行业的特定业务需求而产生的。慢慢的,MQ 被应用到了更多的领域,然而商业 MQ 高昂的价格让很多初创公司望而却步,于是 AMQP&#xff0…

RabbitMQ Java客户端安装与配置指南

RabbitMQ Java客户端安装与配置指南 rabbitmq-java-client RabbitMQ Java client 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-java-client 1. 项目基础介绍 RabbitMQ Java客户端是RabbitMQ消息队列系统的官方Java客户端库。它允许Java应用程序通过AMQP协议…

如何保证RabbitMQ消息的可靠传输?

在这个图中,消息可能丢失的场景是1,2,3 1.在生产者将消息发送给RabbitMQ的时候,消息到底有没有正确的到达服务器呢,RabbitMQ提供了两种解决方案: a. 通过事务机制实现(比较消耗性能&#xff0…

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档 【下载地址】RabbitMQ3.9.13与ErLang24.2版本下载资源 本项目为开发者提供了RabbitMQ 3.9.13和ErLang 24.2的便捷下载资源,旨在简化开发环境搭建流程。资源文件经过精心整理&#…

RabbitMQ 工作模式使用案例之(发布订阅模式、路由模式、通配符模式)

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…

【RabbitMQ】路由模式和通配符模式的具体实现

文章目录 路由模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费者 通配符模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费…

【RabbitMQ】RabbitMQ配置与交换机学习

文章目录 简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收(监听)类3. 实现能者多劳 交换机Fanout交换机1.消息发送2.消息监听 Direct交换机1.消息发送2.消息接收 Topic交换…

详解RabbitMQ工作模式之发布订阅模式

目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式(Publish/Subscribe)是一种消息传递模式,它允许消…

Java操作RabbitMQ

文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP(高级消…

女龙队从佛山九江“扒”向世界 农村大妈划出国际范

临近端午,广东多地的河道里又开始热闹起来,特别是佛山地区的龙舟活动历史悠久。九江镇被誉为全国首个龙舟名镇,赛龙舟的传统已有300年历史。九江是典型的水乡,河网密布,几乎每个村子都有河流经过,划船出行是最便捷的交通方式。在村民眼中,龙舟不仅能聚人气,还能增强村里…

同济大学教授路秉杰逝世 建筑学界痛失“中国塔王”

著名建筑历史学家、建筑教育家路秉杰先生因病医治无效,于2025年5月29日在上海逝世,享年90岁。他生前是中国建筑学会史学分会原副理事长,同济大学建筑与城市规划学院教授及博士生导师。路秉杰出生于1935年,山东聊城人。他在中日两国建筑史、园林史以及中国伊斯兰教建筑等领域…

武汉警界科技精英万松因公牺牲 幕后英雄悄然离去

5月27日0时33分,湖北省武汉市公安局科技信息化支队警务技术四级主任万松因公牺牲,享年50岁。两天后的早晨,武昌殡仪馆告别大厅内庄严肃穆,花圈环绕,哀乐低回。他的遗属、生前亲友及同事百余人含泪忍悲,送别这位警界科技精英。5月26日早上7时30分,青年民警王国栋送完孩子…