【Linux网络编程】10. NAT技术、代理服务、内网穿透

文章目录

一、NAT 技术

1、NAT 技术背景

  • 起因: IPv4 公网地址数量严重不足。
  • 作用: 实现私有 IP公网全局 IP互相转换。
  • 部署: 家庭、校园、公司内网设备用私有 IP ,路由器配置少量唯一公网 IP上网。
  • 特点: 私有 IP 可在不同局域网重复使用,互不冲突;公网 IP 全网唯一。

2、NAT 转换过程

  1. 出网转换: 内网主机(如10.0.0.10)向外网发送数据时,NAT 路由器将 IP 包的源 IP 替换为自己的公网 IP(如202.244.174.37)。
  2. 入网转换: 外网返回数据时,路由器根据转换表,将 IP 包的目的 IP(公网 IP)还原为内网主机的私有 IP。
  3. 转换表: NAT 路由器维护一张映射表,记录内网私有 IP 与公网 IP 的对应关系,数据首次发出时自动生成。

总结: NAT 靠一张表,把内网 IP "伪装" 成公网 IP 出去,回来再 "还原" 成内网 IP。

3、NAPT

NAPT(网络地址端口转换)是 NAT 的增强版,核心解决 "多内网主机共享同一公网 IP" 的问题。

  • 核心机制: 不仅转换 IP 地址,还会用 端口号(Port) 区分不同内网主机的连接,建立「内网 IP + 端口 ↔ 公网 IP + 端口」的映射关系。
  • 工作方式:
    • 内网主机访问外网时,NAT 路由器会为不同主机的连接分配不同的公网端口号。
    • 外网返回数据时,路由器根据「公网 IP + 端口」的映射表,精准转发给对应的内网主机。
  • 表项管理: 映射表项随 TCP 连接自动创建,连接断开后自动删除。

总结: NAPT 用 IP + 端口号 区分多个内网主机的连接,实现一个公网 IP 被多个设备同时共享

4、NAT 技术缺陷

  • 外网无法主动访问内网,只能内网主动向外发起连接。
  • NAT 映射表创建、销毁有额外性能开销
  • NAT 设备故障,所有 TCP 连接全部断开,无法无损续连。

二、代理服务器

1、正向代理

1)概述

  • 核心角色: 位于客户端和目标服务器之间,替客户端向服务器发请求,再把响应返回给客户端。
  • 核心作用: 实现缓存提速、隐藏客户端真实 IP、访问控制 / 内容过滤等功能。

2)工作原理

  1. 客户端把请求发给正向代理服务器
  2. 代理服务器按规则处理(缓存、过滤等)
  3. 代理把请求转发给目标服务器
  4. 目标服务器响应,先回传给代理
  5. 代理再把响应返回给客户端

3)功能特点

  • 缓存提速: 缓存热门资源,客户端重复请求时直接返回,减少延迟。
  • 内容过滤: 按规则屏蔽广告、恶意网站等不良内容。
  • 访问控制: 限制用户对特定网站(如娱乐网站)的访问。
  • 隐藏身份: 对外只显示代理 IP,保护客户端真实 IP 隐私。
  • 负载均衡: 将请求分配到多个目标服务器,提升系统扩展性与可靠性。

4)应用场景

  • 企业网络管理: 管控员工访问,屏蔽不良网站、防止信息泄露。
  • 公共网络管理: 图书馆 / 学校等场景,合理分配网络资源、保障安全。
  • 家庭内容过滤: 家长过滤不良内容,保护青少年网络环境。
  • 访问提速优化: 通过缓存热门资源,降低重复请求的延迟。
  • 跨境资源访问: 帮助个人 / 企业突破限制,访问海外网站与资源。

2、反向代理

1)概述

  • 角色定位: 作为后端 Web 服务器的前置服务器,接收客户端请求,转发给后端服务器,再把响应原路返回给客户端。
  • 核心作用: 提升网站性能、安全性和可维护性。

2)工作原理

反向代理服务器位于客户端和后端 Web 服务器之间:

  1. 客户端的请求先到达反向代理服务器
  2. 代理服务器按规则转发给后端的真实 Web 服务器
  3. 后端响应先回传给代理服务器,再由代理返回给客户端
  4. 客户端全程只知道代理服务器,完全感知不到后端真实服务器的存在

3)应用场景

  • 负载均衡: 按策略将请求分发到多台后端服务器,提升高并发场景下的整体性能与响应速度。
  • 安全防护: 隐藏后端服务器真实 IP,降低直接攻击风险;同时通过防火墙、ACL 等策略过滤请求,保护后端安全。
  • 缓存加速: 缓存后端响应,重复请求直接从缓存返回,减轻后端负载,提升响应速度。
  • 请求处理: 支持 URL 重写、请求头修改、用户认证等,满足特定业务需求。
  • 动静分离: 静态资源直接由反向代理返回,无需请求后端,大幅提升静态资源访问速度。
  • CDN(内容分发网络): 本质上就是大规模分布式的反向代理架构。

3、NAT 和代理服务器

核心区别

维度 NAT 设备 代理服务器
核心目的 解决 IPv4 地址不足,实现多设备共享公网 IP 贴近应用场景,如访问控制、加速、翻墙、负载均衡
工作层级 网络层,直接修改 IP 地址 应用层,处理完整的请求 / 响应内容
部署位置 局域网出口,集成在路由器 / 防火墙等硬件中 可在局域网、广域网跨网部署,多为软件程序

代理的两种类型(用 "代购" 举例)

  • 正向代理:客户端办事。你让在日本的朋友帮你买纸巾,超市只知道买家是你朋友,不知道是你。
  • 反向代理:服务器办事。朋友囤了一批纸巾,别人来买时他直接发货,客户以为货都在他这里,不知道他背后的超市。

总结: NAT 是底层 IP 地址的 "伪装",代理是应用层请求的 "中转";正向代理藏客户端,反向代理藏服务器。

三、内网穿透(FRP 方案)

核心目的: 让公网设备能访问到 NAT 后的内网设备(比如家里的电脑)

过程:

  1. 准备一台有公网 IP 的云服务器: 部署 FRP 服务端(frps)。
  2. 内网设备主动建立连接: 家里的内网设备部署 FRP 客户端(frpc),主动连接frps,并把本地端口(如 SSH 的 22 端口)映射到云服务器的端口(如 8888)。
  3. 公网设备访问服务器端口: 公流量通过已建立的隧道,转发到内网设备,实现远程访问。

四、内网打洞

核心目的:在不依赖公网 IP、不依赖中转服务器的前提下,让两个内网设备直接通信

过程:

  1. 准备一个公网服务器: 双方都能直接访问到的云服务器(比如 frps 服务端)。
  2. 双方先连公网服务器: 公司电脑和家里电脑都主动连接云服务器,各自的 NAT 路由器会给这条连接临时开一个端口映射("打了个洞")。
  3. 服务器中转地址信息: 云服务器把双方的「公网 IP + 临时端口」告诉对方。
  4. 直接通信(打洞成功): 双方拿着对方的公网地址,直接向对方的 NAT 路由器发送数据包,路由器识别到是之前 "打过洞" 的连接,就会放行,双方实现 P2P 直连,不再需要服务器中转。
相关推荐
daad7773 小时前
纪录无人机PID参数配置
linux
noipp3 小时前
推荐题目:洛谷 P1737 [NOI2016] 旷野大计算
linux·数据结构·算法
MAXrxc3 小时前
BGP策略
运维·网络
枕星而眠3 小时前
Linux守护进程完全指南:从原理到实战
linux·运维·服务器·c++·后端
网络系统管理3 小时前
第八届江苏技能状元大赛选拔赛信息通信网络运行管理项目模块D网络服务与系统运维-Linux样题解析
linux·运维·网络
不会C语言的男孩3 小时前
Linux 系统编程 · 第 2 章:系统调用与库函数
linux·c语言
坤昱3 小时前
cfs调度类深入解刨——psi科普篇
linux·cfs·psi·cfs调度·eevdf·psi详细分析·linux系统资源监控
德迅云安全-小潘3 小时前
网站遭遇SQL注入攻击?应急处置、漏洞修复与长效防御完整方案
网络·sql·oracle
骑上单车去旅行4 小时前
openEuler 22.03 离线源码编译 Zabbix 7.0.27 完整最终整合手册
linux·运维·服务器·zabbix
电子元件小说家4 小时前
Coilcraft S5499-DL 国产替代选型分析:同于科技 Tonevee 同参数产品评估指南
网络·科技