Linux网络NAT

1.NAT技术

在之前的介绍中,我们已经了解内网主机向公网主机发送报文的过程,接下来讲解公网主机如何向内网主机发送应答报文。

首先要明确:内网主机访问公网时,经过路由器 NAT 转换后,公网主机接收到的发送方地址并不是内网主机的私有 IP,而是路由器 WAN 口的公网 IP。公网主机回复应答报文时,只会将报文发送到路由器的 WAN 口公网 IP,报文经过网络路由跳转最终到达路由器。但这份应答报文的目标并非路由器自身,路由器需要将报文进一步转发到内网对应主机,这一过程依靠 NAT 技术完成。

NAT 实现公网报文向内网转发的原理:内网主机向外发送报文时,路由器会完成内网私有 IP 与路由器 WAN 口公网 IP 的地址转换,同时在自身 NAT 映射表中,记录内网主机 IP + 端口路由器公网 IP + 端口的对应映射关系。当公网返回的应答报文到达路由器后,路由器会解析报文的目的 IP 和端口,查询本地 NAT 映射表,匹配对应的内网主机信息,再将报文转发到局域网内最初发起请求的内网主机,完成整个应答通信流程。

1.1NAT 技术的主要缺陷

  1. 破坏网络端到端通信架构,改写报文 IP 与端口,违背互联网原生直连寻址设计。
  2. 外网无法主动访问内网主机,内网设备被隐藏,只能由内网主动发起请求后接收回包,若需外网访问内网,必须手动配置端口映射。
  3. 对 FTP、SIP、IPSec 等部分特殊协议兼容性差,这类协议报文载荷内自带 IP 和端口信息,NAT 仅修改报文头部,易造成通信失败。
  4. 占用路由器硬件资源,维护映射表、地址转换都会消耗路由器 CPU 和内存,且路由器成为网络单点,故障后内网整体断网。
  5. 多层 NAT 嵌套会导致 P2P 点对点联机、下载等业务穿透困难,连接成功率低、网络延迟增大。
  6. 内网主机共享公网 IP,无独立公网地址,无法直接搭建对外服务器、绑定域名做外网解析。

2.代理服务器

代理服务器用通俗的话来理解,就相当于网络通信的中间传话角色,本身不负责生成数据内容,只承担网络通信中转与处理的工作。代理服务器主要分为正向代理服务器和反向代理服务器两类,二者都对接多台主机,但服务对象和工作用途完全不同。

2.1 正向代理服务器

正向代理服务器最典型的应用场景就是校园网代理,用户使用校园网访问网络时,发出的报文会先经过学校代理服务器,由这台服务器代替用户向目标外网主机发送请求,外部主机返回的应答报文,也会先经过学校服务器处理后再转发给内网用户,这种替客户端代发请求、中转数据的服务器就是正向代理服务器。

正向代理具备多项核心特点,拥有缓存功能,可以把用户经常访问的网络资源进行缓存保存,当后续用户再次请求相同资源时,可直接从代理缓存中调取,提升访问速度;具备内容过滤能力,能够拦截非法访问请求、屏蔽恶意网站和不良信息;支持访问限制管理,管理员可通过正向代理管控用户对特定网站的访问权限;可以隐藏内网客户端的真实 IP 地址,有效保护用户上网隐私;同时能够在网络请求分发中实现基础流量调度,优化整体访问体验。

2.2 反向代理服务器

反向代理服务器最典型的应用场景就是网站后端集群前置代理,客户端访问网站时,发出的请求会先经过反向代理服务器,由这台服务器代替后端真实服务器接收请求,再按照预设规则将请求转发给后端对应的业务服务器处理,后端服务器返回的处理结果,也会先经过反向代理服务器处理后再转发给客户端,这种替后端服务器接收请求、中转数据的服务器就是反向代理服务器。

反向代理具备多项核心特点,拥有负载均衡功能,可以将客户端请求合理分配到后端多台服务器上,避免单台服务器压力过大,提升系统整体性能和稳定性;具备缓存功能,可以缓存后端服务器返回的静态资源,当后续客户端请求相同资源时,可直接从代理缓存中调取,减轻后端服务器压力;支持安全防护能力,能够隐藏后端真实服务器的 IP 地址,防止恶意攻击和直接访问;可以实现统一接口管理,为客户端提供一致的访问入口,简化系统架构;同时能够进行限流和请求过滤,保障后端服务安全稳定运行。

相关推荐
怀旧,1 小时前
【Linux网络编程】10. NAT技术、代理服务、内网穿透
linux·网络·智能路由器
人生苦短1281 小时前
Ubuntu 系统常用操作命令大全
linux·chrome·ubuntu
醇氧1 小时前
CentOS 7 安装 MySQL 8.0.28 el7 (完美兼容 OpenSSL 1.1)
linux·mysql·centos
wa的一声哭了1 小时前
Mit6.s081 Interrupts and device driver(中断和设备驱动)
linux·服务器·arm开发·数据库·python·gpt·算法
枳实-叶1 小时前
【Linux驱动开发】第8天:platform平台驱动深度解析——设计目的+probe/remove函数全解
linux·运维·驱动开发
曦夜日长1 小时前
Linux系统篇,开发工具(一):从入门到精通的软件安装yum使用
linux·运维·elasticsearch
无限进步_1 小时前
【Linux】从磁盘到文件系统——块、分区与inode
linux·运维·服务器
2401_853087881 小时前
国产化DevOps工具链实践:知识库与需求/任务/版本如何打通?
运维·网络·devops
渡我白衣1 小时前
定时器与时间轮思想
linux·开发语言·前端·c++·人工智能·深度学习·神经网络