【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 直连,不再需要服务器中转。
相关推荐
潘正翔8 小时前
docker核心概念
linux·运维·服务器·docker·容器·centos·运维开发
weigangwin9 小时前
agent-workspace-linux 不是远程桌面:Linux AI 工作区的隔离边界验收
linux·xvfb·mcp·桌面隔离·权限边界·bubblewrap·agent-workspace
Dovis(誓平步青云)10 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
Java小白笔记11 小时前
Docker 安装配置完全指南:MacOS 、Windows、Linux环境下的安装、配置与验证
linux·macos·docker
CHANG_THE_WORLD11 小时前
TCP 三次握手彻底解析:SYN、ACK、SEQ、确认号与状态迁移
网络·网络协议·tcp/ip
DLYSB_13 小时前
基于 HTTP API 与 Modbus 协议的多源监控声光语音联动告警系统设计与实现
网络·网络协议·http·报警灯
qetfw13 小时前
CentOS 7 搭建 LDAP 目录服务
linux·运维·centos
Bobolink_13 小时前
手机端和电脑端的网络环境配置有什么不同?
网络·智能手机·电脑·网络环境
ALINX技术博客14 小时前
【黑金云课堂】FPGA技术教程Linux开发:系统进阶-PS DMA
linux·fpga开发
IT方大同14 小时前
linux简介
linux·运维·服务器