
目录NAPT内网穿透代理服务器NAT与代理服务器的区别本文仅从计算机网络原理角度进行技术探讨不涉及任何违规工具的推荐使用。NAPT传统NAT技术可以将内网IP转化为公网IP它只负责映射内网IP和外网IP。现在说的NAT技术一般指NAPT它负责映射内网IP:端口和外网IP:端口在内网主机向公网主机发数据时首先通过将目的IP与子网掩码按位与后发现该目标IP不在当前网段中于是交给默认网关路由器通过将目的IP与子网掩码按位与确认该目标IP也不在当前网段中继续交给默认网关。但它会将报文中的源IP替换成自己的IPWAN口IP并在路由器中的转换表中记录下原IP:port和转换后IP:port的映射关系这样当服务器发送响应给公网路由器后就可以通过查转换表将IP:port重新映射回去若一局域网有多台主机都请求同一个服务器由于转换后的IP与port都相同不能保证唯一性因此会改变转换后的端口号这样双端都可以在各自网段中确保唯一性互为Key从左往右或从右往左查都可以找到唯一的值唯一四元组内网穿透因为NAPT的存在只有内网主机可以直接访问公网主机而公网主机要访问内网主机需要先让内网主机向公网主机发消息在路由器的转换表中建立映射关系外网不能主动找内网但内网主动找外网后外网可以顺着这条线回话但如果先让内网主机和自己的公网服务器建立连接当其他人有数据想发送给内网主机时先发到公网服务器再由服务器转发给内网主机就可以解决NAPT这就是内网穿透代理服务器代理分为正向代理和反向代理若一个公司的用户量很庞大一般都会有多个服务器来减轻负担但如果将每个主机都暴露在公网上客户端到底该访问哪个服务器因此一般会有一个入口服务器负载均衡器所有客户端的请求都发给入口服务器由该服务器的策略将请求均匀分到所有服务器上即负载均衡。这种就是反向代理策略一般有轮询、随机、IP哈希等等但返回响应时一般是该服务器直接发送不会再传给负载均衡器再比如校园网 当连着校园网时所有数据都会先被转发到学校的机房服务器由该服务器代替我们转发到目标公网IP当返回响应时也会由学校机房服务器先接收再转发给指定主机这就是正向代理简而言之正向代理隐藏的是“客户端”买家反向代理隐藏的是“服务端”卖家。正向代理离客户端更近反向代理离服务器更近对比维度正向代理 (Forward Proxy)反向代理 (Reverse Proxy)代理的对象客户端代表客户端去请求服务端代表服务端接收请求隐藏的对象隐藏真实的客户端 IP隐藏真实的服务器 IP客户端是否知道目标知道客户端明确知道要访问哪个目标网址不知道客户端以为代理服务器就是最终目标配置位置配置在客户端如浏览器设置代理、系统网络设置配置在服务端如部署在机房入口的 Nginx流量走向客户端 - 代理 - 目标服务器客户端 - 代理 - 真实服务器典型工具/软件Squid、Privoxy、浏览器代理插件Nginx、HAProxy、CDN、云厂商的 WAFNAT与代理服务器的区别两者都能实现“让内网机器访问外网”以及“隐藏真实 IP”的功能但它们的工作层级和底层逻辑完全不同NAT主要解决IPv4枯竭问题工作在网络层是必须要有的部署在局域网出口而代理服务器工作在应用层用于加速网络优化负载均衡等可在局域网/广域网部署对比维度NAT (网络地址转换)代理服务器 (Proxy Server)工作层级网络层 (L3) / 传输层 (L4)主要工作在 应用层 (L7)如 HTTP 代理部分在 L4/L5如 SOCKS 代理处理对象只修改 IP 头部 和 TCP/UDP 头部改 IP 和端口解析并处理 应用层数据如 HTTP 请求头、URL、Cookie连接状态“修改报文”维持客户端到服务端的端到端连接假象“断开重连”建立两段独立连接客户端↔代理代理↔服务端客户端感知完全透明客户端无需任何配置以为自己直接连着外网通常需要配置客户端必须在系统或软件中手动指定代理 IP 和端口协议感知不感知不管是 HTTP、FTP 还是游戏数据包一视同仁转发深度感知知道你在访问什么网页可以缓存图片、过滤敏感词主要目的解决 IPv4 地址短缺、实现内外网基础隔离访问控制、缓存加速、突破访问限制、深度隐藏身份典型设备/软件家用路由器、企业防火墙、云厂商的 NAT 网关Squid、Nginx、浏览器代理插件