NAT技术、内网穿透、代理服务

NAT

NAT(Network Address Translation)是一种网络技术,用于在私有网络和公共网络之间转换IP地址。其主要目的是解决IPv4地址短缺问题,同时增强网络安全性。

之前我们讨论了,IPv4协议中,IP地址数量不充足的问题

NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能

  • NAT能够将私有IP对外通信时转为全局IP.也就是就是一种将私有IP和全局IP 相互转化的技术方法:
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;

回顾IP部分:

我们通过NAT,将私网和路由器的WAN口IP逐渐交换,最终变成一个公网IP,达到和公网IP通信的目的。

NAPT

很容易想到一个问题,我们从私网到公网的通信可以理解,毕竟公网IP唯一。那公网又是怎么找回私网的呢?

这时候NAPT来解决这个问题了.

NAPT(Network Address Port Translation)是 NAT(网络地址转换)的一种扩展形式,不仅转换 IP 地址,还同时转换端口号。它允许多个内网设备共享一个公网 IP 地址,通过不同的端口号区分数据流,广泛应用于家庭和企业网络。

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

在私网在路由器进行NAT时,路由器会根据私有地址的IP和端口号维护一张NAT转化表。

当公网IP找到这个路由器时,就能通过这张表找到私网。

举个例子,客户端A向服务器通信:

源IP地址:10.0.0.10

源端口号:1025

目的IP地址:163.221.120.9

目的端口号:80

首先A通过自己的子网掩码(假设是255.255.255.0)发现目的IP的网络号是163.221.120.0和自己的网络号10.0.0.0不同,那么就不在一个网段。

A会将报文交给路由器,路由器将报文的源IP地址修改为:202.244.174.37,源端口号修改为:1025(这里其实还没变)。

然后服务器最终收到的报头就是:

源IP地址:202.244.174.37

源端口号:1025

目的IP地址:163.221.120.9

目的端口号:80

他自然以为是在和202.244.174.37:1025通信,因此发送数据时,他填写的报头就是:

源IP地址:163.221.120.9

源端口号:80

目的IP地址:202.244.174.37

目的端口号:1025

最终202.244.174.37收到这个报文,然后根据端口号1025和NAT转换表,转成:

源IP地址:163.221.120.9

源端口号:80

目的IP地址:10.0.0.10

目的端口号:1025

这样10.0.0.10就能收到服务器的回信。

要知道端口号在同一台主机是唯一的,但是别的主机可以和你重复。像主机B如果端口号用的也是1025,那不就和主机A冲突了吗。

所以NAT转换表会将主机B的端口号映射成1026,类似于开放地址法

NAT技术的缺陷

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

  • 无法从NAT外部向内部服务器建立连接
  • 破坏端到端通信模型 NAT设备会修改IP包头中的地址信息,导致通信双方无法直接感知对方的真实IP地址。这种中间干预违背了互联网最初设计的端到端原则,影响某些需要直接寻址的应用(如P2P网络、IP语音等)。
  • 增加网络复杂性 NAT需要维护转换表(映射内外网地址和端口),导致设备负载增加。大规模部署时可能出现状态表溢出问题,且故障排查难度更高(需同时检查内外网地址映射关系)。
  • 协议兼容性问题 部分应用层协议(如FTP、SIP等)在载荷中嵌入IP地址信息,NAT无法识别和修改这些内容,导致通信失败。虽然ALG(应用层网关)可部分解决,但需针对每种协议单独适配。
  • 安全性隐患 NAT可能掩盖内部网络拓扑,但并非真正的安全解决方案。攻击者仍可通过端口扫描或会话劫持突破防御,且NAT日志通常缺乏细粒度审计能力。
  • 延迟与性能瓶颈 每个数据包均需经过NAT设备的状态检查与改写,在高流量场景下可能成为性能瓶颈。对于实时性要求高的应用(如在线游戏、视频会议),额外处理延迟可能影响体验。
  • 阻碍新技术部署 IPv6的推广因NAT的存在而放缓,部分组织倾向于继续使用NAT而非迁移到IPv6。此外,NAT与SDN、IoT等新技术的兼容性常需额外适配。
  • 无法支持部分网络服务 某些需要固定公网IP的服务(如VPN服务器、远程监控)在NAT环境下需依赖复杂配置(如端口转发或UPnP),增加了管理负担。

内网穿透

私网和公网起码还有NAT技术保证通信,私网和私网之间则更加难以通信了。

这里就有内网穿透技术来实现私网和私网的通信。

内网穿透是一种通过公网服务器将外部请求转发到内网设备的技术,解决内网设备因无公网IP而无法直接访问的问题。常用于远程办公、本地开发调试、智能家居控制等场景。

其实非常简单,也是利用了NAT技术。

既然私网和私网不能直接通信,我们可以找一个中间服务器(公网IP)。通过这个服务器互传消息即可。

例如:

这两台私网主机,他们的ip地址都是一样的,自然不能互相直接通信,但是可以通过公网服务器间接通信。

内网打洞

内网打动和内网穿透差不多,还记得我们的出入口路由器维护的NAT转接表吗,虽然刚讲没多久就是了:

总之呢,远端服务器看不到两个私网给他发消息,看到的就是122.77.241.4:20和122.77.241.5:70给他发消息,回消息也是给这两个ip和端口号。

既然如此。

我们两台私网显然能通过远端服务器知道对方出入路由器给他分配的ip和端口号:

这样右边的私网主机就知道了,左边私网主机在出入口路由器上对应的ip和端口号。

那他不久可以拿着这个ip和端口号直接和出入口路由器通信吗:

这样就无需经过远端服务器,相当于在对方的内网打了个洞,因此称为内网打洞。

代理服务器

正向代理

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

工作原理:

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

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

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

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

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

功能特点:

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

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

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

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

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

正向代理的常见应用场景

  • 企业网络:统一通过代理服务器管理员工上网行为。
  • 爬虫开发:使用代理池避免IP被封禁。
  • 隐私保护:个人通过代理隐藏真实地理位置。

反向代理

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

基本原理:

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

反向代理的核心功能:

  • 负载均衡:将请求分发到多个后端服务器,避免单点过载。
  • 安全防护:隐藏后端服务器IP,提供DDoS防护、WAF(Web应用防火墙)等能力。
  • 缓存加速:缓存静态资源,减少后端服务器压力,提升响应速度。
  • SSL终结:处理HTTPS加密/解密,降低后端服务器计算开销。
相关推荐
秋深枫叶红2 小时前
嵌入式第四十篇——网络编程
linux·网络·学习
m0_555762902 小时前
linux开发——网络配置(含VM网络配置)
linux·运维·网络
东东的脑洞2 小时前
【面试突击】TCP 四次挥手详解
网络·tcp/ip·面试
不染尘.2 小时前
cookie和session技术及实现
服务器·网络·网络协议·计算机网络
_F_y2 小时前
五种IO模型
服务器·网络
大连好光景2 小时前
socket.socket模块--网络通信
网络·python·网络协议
一只旭宝3 小时前
Linux专题十:I/O 复用进阶(LT/ET 模式)同步,异步阻塞,以及 libevent 库核心知识点
linux·服务器·网络
菩提小狗3 小时前
第1天:基础入门-操作系统&名词&文件下载&反弹SHELL&防火墙绕过|小迪安全笔记|网络安全|
网络·笔记·学习·安全·web安全
wniuniu_3 小时前
ceph修改
网络·ceph