【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 直连,不再需要服务器中转。
相关推荐
人生苦短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++·人工智能·深度学习·神经网络
zt1985q1 小时前
本地部署开源数据库管理工具 DBeaver 并实现外部访问( Windows 版本)
运维·服务器·网络·数据库·网络协议