16.【网络】NAT 技术、代理服务与内网穿透:原理、缺陷及应用场景全解析 NAT 技术、代理服务器、内网穿透与内网打洞C / Linux 面试笔记学习顺序NAT 为什么出现 → NAT/NAPT 如何转换 → NAT 为什么影响外部访问 → 代理服务器如何转发 → 如何让内网服务对外开放 → 两台内网设备如何直连。本文主要讨论IPv4、常见家用/企业出口 NAT、TCP/UDP。不同路由器、防火墙和运营商的具体行为可能不同。目录目录NAT 技术、代理服务器、内网穿透与内网打洞C / Linux 面试笔记目录1. NAT 技术基础1.1 NAT 为什么出现1.2 NAT 与路由转发不是一回事1.3 NAT 的基本分类1.4 基本 NAT 的地址转换流程1.5 NAPT多台内网设备共享同一个公网 IPv4重点1.6 NAT 的映射和过滤理解“为什么外网无法随便访问内网”1.7 NAT 的不足和使用限制1.8 双重 NAT 与 CGNAT2. 代理服务器2.1 什么是代理服务器Proxy Server2.2 正向代理Forward Proxy2.2.1 概念和通信方向2.2.2 工作流程2.2.3 主要用途2.2.4 常见技术2.3 反向代理Reverse Proxy2.3.1 概念和通信方向2.3.2 工作流程2.3.3 主要功能2.3.4 典型场景2.4 正向代理与反向代理对比必背3. NAT 与代理服务器的区别和联系3.1 核心区别3.2 三个特别容易混淆的点4. 内网穿透与内网打洞4.1 为什么公网设备经常访问不到内网主机4.2 什么是内网穿透NAT Traversal4.3 方案一端口映射Port Forwarding / DNAT概念工作流程4.4 方案二公网中转/反向隧道FRP、ngrok 等概念工作流程4.5 方案三内网打洞Hole Punching4.5.1 概念与目标4.5.2 需要什么角色4.5.3 UDP 打洞的简化流程4.5.4 STUN、TURN、ICE面试加分4.6 内网穿透与内网打洞的区别4.7 实际应用5. 综合对比与选型5.1 一张表串起所有概念5.2 选用时先问三个问题6. C / Linux 笔试面试重点6.1 高频问答6.2 Linux 常用排查命令6.3 一分钟背诵版附录关联网络基础知识速查参考资料与延伸学习1. NAT 技术基础1.1 NAT 为什么出现NATNetwork Address Translation网络地址转换网络设备在转发数据包时根据规则和映射关系修改 IP 地址常见家庭网络还会配合 TCP/UDP 端口转换。IPv4 地址只有 32 位全球可用公网 IPv4 地址有限。家庭、学校、企业内部可以使用 RFC 1918 私有地址再利用出口 NAT 设备共享有限的公网 IPv4 地址。私有 IPv4 地址段前缀地址总数10.0.0.010.255.255.255/816,777,216172.16.0.0172.31.255.255/121,048,576192.168.0.0192.168.255.255/1665,536私有地址可以在互相隔离的不同网络中重复使用普通公网路由不会直接转发 RFC 1918 私有地址。并非所有“非私有 IP”都是公网 IP例如127.0.0.1是回环地址169.254.0.0/16是链路本地地址。路由器的 WAN 口 IP不一定是公网 IP可能由上级 NAT/运营商 CGNAT 分配地址。 大白话一家公司可以有很多员工分机但对外只使用少数几个电话号码。私有 IP 像分机号公网 IP 像对外号码NAT 负责转换。1.2 NAT 与路由转发不是一回事路由Routing查路由表根据目的 IP 和策略确定下一跳及出口接口。NAT在经过设备时按规则修改源/目的 IP可能同时修改端口并维护转换状态。路由器可以只路由不 NATNAT 一般依赖转发过程但不是每经过一个路由器都要 NAT。普通路由器转发 IPv4 数据包时通常保持源 IP、目的 IP 不变同时更新 TTL 等链路层以太网帧的源、目的 MAC 则随每一跳重新封装而改变。 大白话路由决定“下一站往哪走”NAT 决定“是否需要换发件/收件地址”。1.3 NAT 的基本分类类型主要变化常见用途SNAT源 NAT修改源 IP可能同时修改源端口内网主机访问外网DNAT目的 NAT修改目的 IP可能同时修改目的端口端口映射、把外部请求转给内网服务器静态 NAT预先配置固定地址转换关系固定对外地址映射动态 NAT从地址池动态分配转换地址多个内部地址共享公网地址池NAPT/PAT地址与 TCP/UDP 端口联合转换多台设备共享少量公网 IPNAT 分类可以从不同角度观察SNAT/DNAT 描述修改方向静态/动态描述映射配置方式NAPT 描述是否利用端口复用地址并非互斥分类。1.4 基本 NAT 的地址转换流程沿用原文示例内网主机10.0.0.10访问外网主机163.221.120.9出口 NAT 地址为202.244.174.37。内网发出原始数据包源 IP10.0.0.10目的 IP163.221.120.9。出口 SNATNAT 网关将源 IP 改为202.244.174.37记录所需的映射/连接状态并转发出去。服务器响应服务器看到的请求源 IP 是202.244.174.37响应发往该地址。返回方向逆向转换NAT 网关根据已有转换状态将响应包的目的 IP 改回10.0.0.10并转发给内网主机。这是地址转换原理的简化例子如果多台设备要同时共享一个公网 IPv4通常还需要 NAPT 结合端口区分流量。 大白话发出时把“内部寄件地址”替换成“公司对外地址”回复到达公司后再按登记记录送回正确员工。1.5 NAPT多台内网设备共享同一个公网 IPv4重点NAPTNetwork Address Port Translation网络地址端口转换也常称 PAT使用 IP 地址与传输层端口共同进行转换。它是家用 IPv4 路由器中最常见的 NAT 形式。假设公网出口使用文档示例地址203.0.113.10内网通信端点NAT 后的公网通信端点192.168.1.100:50000203.0.113.10:40001192.168.1.101:50000203.0.113.10:40002203.0.113.10属于专用文档示例网段不是可实际分配使用的公网地址。示例中的端口仅为说明映射并不要求 NAT 一定更换端口。一次典型 TCP 出站通信内网程序使用192.168.1.100:50000向公网服务器发起 TCP 连接。NAT 网关观察到出站流量根据映射策略创建/复用转换表项可能把源地址端口转换成203.0.113.10:40001。外网服务器收到请求向公网映射端点发回应答。NAT 设备结合协议、地址端口及连接状态查表改写回目标内网地址端口并转发。映射有存活时间关闭连接、状态变化或超时后可被清理具体由设备决定。关键补充不同 NAT 的表项键、端口复用方式和外部访问限制不同不能笼统地说只凭一个公网端口就能匹配所有情况也不能认为每次连接必然分配“唯一且与原来不同”的端口。 大白话两个员工都用内部分机50000对外接线员分别分配40001、40002回复时就能区分发给谁。1.6 NAT 的映射和过滤理解“为什么外网无法随便访问内网”这里最容易混淆两个问题映射Mapping内部IP:端口对应哪个外部IP:端口过滤Filtering即使外部知道该映射来自哪些外部地址/端口的数据包允许进入出站连接一般会创建映射但**“有映射”不代表“任意互联网主机都可直接连接”**。NAT/防火墙可能仅允许特定对端的数据包进入。常见描述Endpoint-Independent Mapping端点无关映射同一内部端点向不同外部目标发送时通常复用相同外部映射。Endpoint-Dependent Mapping端点相关映射外部映射可能随目的地址或端口改变。端点无关 / 地址相关 / 地址和端口相关过滤说明哪些来源的入站数据包可使用已有映射。传统教材会提“完全锥形 NAT、受限锥形 NAT、端口受限锥形 NAT、对称 NAT”可用于入门但实际设备的映射行为、过滤行为、端口保持和超时规则需要分别判断不能仅凭一个标签精确预测打洞成功率。 大白话映射相当于前台知道分机号对应哪个员工过滤相当于门卫规定哪些外部来电有资格转接。1.7 NAT 的不足和使用限制外部连接不容易主动到达内网服务没有显式端口转发、已有合适映射或其他穿透机制时入站连接往往会被 NAT/防火墙拦截。维护状态需要资源映射表、连接跟踪和超时回收占用设备 CPU 与内存高并发时可能形成瓶颈。设备重启可能中断连接状态丢失后既有 TCP/UDP 会话可能无法继续高可用设备可同步状态但并非普遍支持。破坏端到端可达性某些点对点应用需要配合端口转发、打洞或中继。应用协议兼容性如果协议在业务内容中携带地址/端口地址转换可能需要应用层辅助处理或修改协议设计。注意NAT 不是防火墙也不等同于安全保证。实际访问控制还依赖设备的防火墙规则、主机安全配置等。1.8 双重 NAT 与 CGNAT双重 NAT家用路由器之外还有一层 NAT例如光猫路由模式 家用路由器路由模式。CGNATCarrier-Grade NAT运营商级 NAT运营商侧多个用户共享公网 IPv4用户家用路由器 WAN 口可能获得100.64.0.0/10共享地址空间或其他非公网地址。影响即使你在家用路由器中配置了端口映射如果上级 NAT 不配合公网用户仍可能访问不到内网服务器。 大白话你家小区门口有一位门卫但小区外的园区大门还有第二位门卫。只说服第一位门卫放行不代表外面的人就进得来。2. 代理服务器2.1 什么是代理服务器Proxy Server代理服务器位于通信双方之间代替一方接收请求、向另一方建立或转发通信再把响应送回去。它可以实现访问控制、缓存、流量分配、TLS 终止或协议转换等能力。代理可以工作在不同层次最常见的是HTTP 应用层代理也有SOCKS 等通用 TCP/UDP 代理。不能一概说所有代理都必须解析 HTTP 内容。 大白话代理是“代办人”客户端或服务端不一定直接跟对方打交道而是先找代理帮忙。2.2 正向代理Forward Proxy2.2.1 概念和通信方向正向代理主要代表客户端去访问目标服务器。客户端通常需要知道或配置代理地址目标服务器一般看到的是代理的网络出口而不是与其直连的原始客户端地址。客户端 A ──请求── 正向代理 ──代为请求── 目标网站 客户端 A ─响应── 正向代理 ──响应────── 目标网站2.2.2 工作流程客户端把要访问的目标交给正向代理显式代理配置或相关网络配置。代理按规则进行认证、访问控制、缓存检查等。若需要访问目标代理向目标服务器发起连接或建立代理隧道。目标服务器返回响应代理把响应送回客户端。代理可根据能力进行缓存、日志记录或其他处理。HTTPS 特别注意HTTP 正向代理常用CONNECT建立 TCP 隧道若没有进行受信任的 TLS 中间人解密代理一般看不到 HTTPS 加密的页面正文也不能随意改写它。2.2.3 主要用途企业/学校出口的访问认证、权限控制与审计。特定 HTTP 资源缓存节省带宽是否有效受 HTTPS、缓存控制等因素影响。使客户端通过指定出口访问目标网络。在一定范围内隐藏客户端源 IP不等于匿名或绝对隐私代理仍可能记录信息业务也可能通过认证/Cookie 等识别用户。2.2.4 常见技术Squid典型 HTTP 缓存/正向代理软件。SOCKS5通用代理协议常用于 TCP也定义了 UDP ASSOCIATE 能力。Nginx主流用途是 Web 服务和反向代理不能简单把它当作通用的 HTTP 正向代理产品。 大白话员工想访问网站但要先经过公司指定的网络代办员代办员决定能不能访问再代表员工对外发请求。2.3 反向代理Reverse Proxy2.3.1 概念和通信方向反向代理主要代表服务器端接收客户端请求提供统一入口并把请求转发给一个或多个后端服务。用户通常只需要知道反向代理的域名或地址。┌── C 后端 A 客户端 ── Nginx ──┼── C 后端 B └── C 后端 C2.3.2 工作流程客户端向网站域名通常解析到反向代理或其前面的接入层发起请求。反向代理进行 TLS 处理视配置而定、路由匹配、鉴权、缓存检查等。代理根据路径、主机名、权重和后端健康状况等规则选择目标服务。后端程序处理业务并返回响应。代理将响应返回客户端必要时改写头部或缓存内容。2.3.3 主要功能功能含义典型用途负载均衡把请求分配给多台后端提升吞吐与可用性统一入口让多个业务共用域名和接入层/api、/static路由静态资源与缓存直接返回可缓存的静态文件降低后端负载HTTPS/TLS 终止在代理层处理 TLS 连接集中管理证书依配置访问控制/限流根据规则拒绝或限制部分请求降低滥用风险动静分离静态资源在代理层处理动态请求交给应用降低后端计算开销请求/响应处理改写 URL、HTTP 头部等网关逻辑与兼容处理安全边界反向代理可以降低后端直接暴露的程度但不会自动“彻底隐藏”后端更不能单靠它抵御所有 DDoS/入侵仍需网络隔离、访问控制、补丁与专门防护。2.3.4 典型场景Nginx/HAProxy/Traefik 将公网请求转给多个 C、Java 或 Go 后端。Web 网站使用静态缓存和动态 API 分流。统一域名管理多个微服务集中配置证书或网关策略。CDN 的部分节点具备缓存和反向代理式回源能力CDN 还涉及 DNS/调度、边缘网络等不等于单台反向代理。 大白话顾客只知道公司的前台反向代理前台根据业务把事情分给不同员工后端服务器。2.4 正向代理与反向代理对比必背对比正向代理反向代理主要代表谁客户端服务端客户端是否通常需要配置代理通常需要通常不需要目标服务器通常看到谁代理出口代理作为前端连接方典型用途访问控制、客户端出口、缓存负载均衡、统一入口、TLS 终止典型软件Squid、支持 SOCKS/HTTP 的代理程序Nginx、HAProxy、Traefik真实客户端 IP 可以通过约定的X-Forwarded-For/Forwarded等头向后端传递但这些头必须由可信代理正确设置/清洗不能直接相信任意客户端伪造的值。3. NAT 与代理服务器的区别和联系3.1 核心区别维度NAT / NAPT代理服务器主要工作修改数据包地址/端口并跟踪映射代替客户端/服务端建立或转发通信常见层次网络层 IPNAPT 还涉及 TCP/UDP 端口常见是应用层 HTTP也可以是传输层/通用代理对应用协议的理解基础 NAT 通常不需要理解 HTTP 内容HTTP 代理可理解 HTTP隧道/SOCKS 未必理解业务正文客户端感知常见家庭 NAT 对客户端透明显式正向代理通常需要客户端配置反向代理通常对用户透明部署位置网关、防火墙、主机软件、云网络独立服务、网关、边缘节点等常见用途IPv4 地址复用、地址空间衔接、端口映射访问控制、缓存、转发、负载均衡、协议处理3.2 三个特别容易混淆的点NAT 不等于代理NAT 通常改写经过的报文HTTP 代理通常终止一侧连接再建立另一侧连接。有 NAT 不等于有安全防火墙NAT 与包过滤/连接跟踪常在同一设备上但职责不同。私有 IP 并非必须使用正向代理才能上网一般家用网络仅靠路由和 NAPT 就能访问公网服务。 大白话NAT 更像“修改快递单上的寄件/收件信息”代理更像“由中间人替你收发快递”。4. 内网穿透与内网打洞4.1 为什么公网设备经常访问不到内网主机内网主机通常没有公网可路由地址而且 NAT/防火墙对未经许可的入站流量可能没有相应转换规则或不允许放行。因此内网主动访问外网通常比较容易外网主动连接未经配置的内网服务通常比较困难。但这不是绝对规则取决于网络架构、NAT/防火墙状态和配置。 大白话内网电脑能主动打电话给外面但外面的人不知道你的分机对应哪条线路门卫也不一定允许陌生电话直接打进来。4.2 什么是内网穿透NAT Traversal内网穿透泛指在存在 NAT/防火墙等网络边界的情况下使用配置或协议机制使需要通信的两端能够建立有效的连接或数据通道。常见目标包括让公网用户访问内网 Web 服务、文件服务、远程桌面。让两个不同 NAT 后面的终端建立 P2P 连接。在不能直连时通过公网中转服务器进行业务通信。术语说明中文语境中“内网穿透”常泛指上述多种方案严格来说端口映射、打洞、反向隧道/中继的技术机制不同不能全部混成同一种做法。4.3 方案一端口映射Port Forwarding / DNAT概念管理员在 NAT 路由器上配置规则把某个公网入口的端口转发给内网主机的固定端口。公网用户 → 路由器公网 IP:8080 │ DNAT/端口映射 ▼ 192.168.1.100:8080工作流程内网服务器监听服务端口例如 TCP8080。配置外部端口与内网 IP/端口的转发规则并确保防火墙允许。外部客户端访问路由器的公网入口。网关按规则把数据包目的地址/端口转换为内网服务器响应再按连接状态转换回外部地址。条件与限制需要网关配置权限、公网可达入口如有 CGNAT/多级 NAT需要上级设备配合。动态 IP 可能需要 DDNS暴露服务时要配置认证、加密和最小权限。 大白话事先告诉门卫“所有找 8080 房间的来客都引导去 192.168.1.100 的 8080 号窗口。”4.4 方案二公网中转/反向隧道FRP、ngrok 等概念内网主机主动连接有公网入口的中转节点在已建立的通道上双向传输业务数据使外部用户间接访问内网服务。内网服务 A ──主动建立通道── 公网中转服务器 ──连接── 公网客户端 B ══════════════ 业务数据经中转 ════════════工作流程在公网部署中转服务并在内网部署客户端程序。内网客户端主动连接中转端建立并维护可用通道可采用长连接或其他实现。公网用户连接中转节点公布的地址/端口。中转节点通过通道把请求转给内网服务再把响应发回公网用户。典型工具frp、ngrok 等具体部署与协议能力以版本和配置为准。优点不要求用户控制 NAT 路由器适合多级 NAT / CGNAT 场景。代价业务数据经过中转可能增加延迟、带宽成本中转节点也可能成为性能和可用性瓶颈。 大白话公司派了一个固定在外面的接待员。内部员工主动和接待员保持联系外来客户先找接待员再由接待员转接。4.5 方案三内网打洞Hole Punching4.5.1 概念与目标内网打洞处在不同 NAT 后的两端通过协调建立可用的 NAT 映射和入站许可尝试让业务流量直接在两端之间传输减少或避免公网中转。UDP 打洞比较常见TCP 也有相关技术但实现和兼容性通常更复杂。“打洞”并非真的给路由器开一个永久洞而是利用设备已有映射、过滤规则以及两端主动发包等行为创造临时可达路径。打洞不能保证 100% 成功失败时通常应选择中继。 大白话两个住在不同园区的人都先主动向对方方向“打招呼”尝试让各自门卫允许对方后续的来往消息。4.5.2 需要什么角色主机 A、B都在 NAT 后需要通信。协调/信令服务让双方交换候选地址和进行连接协商。地址发现服务例如 STUN帮助一端了解外部观察到的映射地址及相关信息。后备中继例如 TURN在直连失败时转发业务数据。严格区分协调服务器并不一定是“中继服务器”。协调用于交换信息中继用于实际转发业务数据。一种产品也可以同时提供两种功能。4.5.3 UDP 打洞的简化流程假设 A、B 位于不同内网均可以先访问公网协调服务。各自向公网服务发送数据NAT 设备可能创建或复用 UDP 映射公网侧能观察到各自的外部IP:端口。交换候选地址通过信令/协调服务告知双方可能可达的公网映射地址还可以包括局域网等其他候选地址。双方进行连通性探测A、B 按协商结果向对方候选地址发送 UDP 探测数据尝试满足各自 NAT/防火墙的过滤条件。测试是否真正双向可达不能仅凭“交换了地址”就认定打洞成功必须收到对端探测响应或其他有效确认。成功则直连传输失败则中继持续通信也要考虑 NAT 映射超时、网络切换和必要的保活机制。公网协调 / STUN 服务 ↑ ↑ 地址发现 地址发现 │ │ 内网主机 A → NAT A ⇄ NAT B ← 内网主机 B ③ 两端互发探测 ④ 双向验证 成功业务数据直连 失败可切换 TURN 中继为什么会失败常见原因包括映射随目标变化、入站过滤严格、端口不可预测、UDP 被阻断、多级 NAT、设备超时等。所谓“对称 NAT 不能打洞”是过于绝对的简化说法具体成败取决于端点相关映射、过滤等实际行为与可用方案。4.5.4 STUN、TURN、ICE面试加分名称英文作用STUNSession Traversal Utilities for NAT帮终端发现 NAT 外部映射信息并支持连接探测相关机制TURNTraversal Using Relays around NAT在无法直连等情况下通过中继服务器转发业务数据ICEInteractive Connectivity Establishment收集候选地址、互相探测、选择可用路径可以结合 STUN 和 TURN典型应用WebRTC 音视频、P2P 连接建立等。 大白话STUN 帮你问“外面看我是什么地址”ICE 负责“试几条路选能通的”TURN 负责“实在走不通就由我帮你转运”。4.6 内网穿透与内网打洞的区别“内网穿透”是广义目标或技术集合“打洞”只是尝试直连的一类方案。更适合比较的是具体实现方式方式数据实际经过哪里是否需要控制家用路由器优点局限端口映射公网入口 → 内网服务器通常需要简单、稳定适合固定服务公网入口和权限要求高中转/反向隧道经公网服务器转发通常不需要适配复杂 NAT中转带宽与延迟成本打洞直连成功时两端直接通信通常不需要减少中继开销NAT/防火墙限制成功率不保证打洞失败后 TURN经 TURN 服务器转发通常不需要提升连接成功率需要中继资源4.7 实际应用远程访问家中 NAS有公网入口时可端口映射没有公网入口可反向隧道/中继注意强身份认证。公司内网 Web 管理系统VPN、零信任访问网关或经过授权的反向隧道通常比直接暴露管理端口更稳妥。实时音视频ICE STUN 尝试直连失败时 TURN 中继。P2P 文件传输/游戏联机在网络允许时尽量直连否则选择中继。安全提醒NAT 穿透会改变服务的可访问边界须取得网络所有者授权并启用认证、加密、访问控制和日志审计未经授权不要暴露内网服务。5. 综合对比与选型5.1 一张表串起所有概念技术主要解决的问题核心机制是否一定有公网中转NAT地址转换与地址空间衔接改写 IP、维护映射否NAPT多个内网端点共享有限的公网 IPIP 端口转换否正向代理替客户端访问其他服务代理接收、转发或建隧道否代理本身需可达目标反向代理为服务端提供统一入口代理接入、后端转发否端口映射把外部连接导向内网服务静态 DNAT/防火墙规则否反向隧道/中转无法直连时提供可访问路径内网主动建通道外部流量经中转通常是UDP 打洞尝试 NAT 后两端 P2P 直连映射发现、双方探测、过滤许可协调常需要业务成功后不一定中转5.2 选用时先问三个问题要解决的是哪种通信内网访问公网、外部访问内网服务还是两个内网终端 P2P有没有可达公网入口及路由器权限有则可考虑端口映射没有可能需要反向隧道或直连探测。更重视直连低延迟还是稳定可达实时 P2P 通常采取“尝试直连 中继兜底”。6. C / Linux 笔试面试重点6.1 高频问答Q1NAT 和 NAPT 有什么区别NAT 泛指 IP 地址转换NAPT 进一步利用 TCP/UDP 端口实现多台主机共享一个公网 IPv4 地址。Q2家用路由器有了 NAT是否就不会被外部访问不一定。是否可访问还要看现有映射、过滤规则、端口转发、UPnP/PCP、上级 NAT 和防火墙等NAT 不等于安全防火墙。Q3为什么外网主动访问内网服务器通常失败外部请求可能没有对应的地址映射或不符合 NAT/防火墙的入站过滤规则。Q4NAT 映射与过滤有什么区别映射决定内外地址端口如何对应过滤决定哪些外部数据可以进入。Q5NAT 与路由转发有什么不同路由选择下一跳NAT 修改指定的源/目的地址或端口二者可以配合但并非一回事。Q6正向代理与反向代理如何区分正向代理主要代表客户端访问目标反向代理主要代表服务端接收访问并转发到后端。Q7反向代理有哪些作用负载均衡、统一入口、静态缓存、TLS 终止、动静分离、限流和访问控制等。Q8正向代理和 NAT 一样吗不一样。NAT 是地址/端口改写代理以程序或服务形式代为连接或转发通信应用层代理还能处理应用协议。Q9内网穿透有哪些常见方案端口映射、反向隧道/中转、P2P 打洞以及无法直连时使用中继。Q10什么是 UDP 打洞双方在公网协调机制帮助下发现并交换候选地址主动发探测包争取可用 NAT 映射和过滤许可成功后直接通信。Q11为什么打洞不一定成功映射/过滤行为、端口变化、NAT 层级、运营商和防火墙策略等都可能阻止直连。Q12STUN、TURN、ICE 有什么区别STUN 用于映射发现与相关探测TURN 提供实际中继ICE 协调候选收集、连通性检查和路径选择。Q13为什么 CGNAT 下配置家用端口映射仍然访问不到上级运营商 NAT 仍可能阻断公网入站流量必须同时获得公网可达入口或改用其他方案。Q14Linux/C 面试需要手写 NAT 或 ICE 吗一般软件开发岗位更重视原理、网络排障、Socket/TCP/UDP、反向代理的使用专门做网关、音视频、P2P 或网络内核开发的岗位会深入到实现细节。6.2 Linux 常用排查命令命令作用ip addr查看本机 IP、接口ip route查看路由表、默认网关ip neigh查看邻居缓存IPv4 ARP 等ss -lntup查看监听的 TCP/UDP 端口与进程信息权限影响显示curl -v URL检查 HTTP 连接与响应traceroute 目标IP或tracepath 目标IP尝试观察路径与跳数tcpdump -ni 接口 tcp or udp捕获报文进行分析通常需权限nft list ruleset在使用 nftables 的系统查看规则通常需权限conntrack -L已安装 conntrack 工具且有权限时观察连接跟踪表排查顺序实用本机 IP/子网/路由是否正确能否到达默认网关和公网目标服务是否监听正确的 IP 和端口防火墙/安全组/端口映射是否放行WAN 口是否有真正可达的公网 IPv4还是 CGNAT如涉及打洞候选地址、STUN 结果、连通性探测、是否切换 TURN 中继6.3 一分钟背诵版NAT通过修改 IP 地址NAPT进一步结合端口使多个内网主机共享少量公网 IPv4。路由决定下一跳NAT 决定地址/端口如何转换。正向代理代表客户端访问目标反向代理代表服务器对外提供统一入口。公网访问内网可以使用端口映射、反向隧道或中转内网打洞则尝试让 NAT 后面的双方直接通信。实际 P2P 系统常通过ICE STUN尝试连通失败时用TURN中继。附录关联网络基础知识速查原笔记末尾涉及数据链路层、网络层、传输层、应用层这些知识对理解 NAT/代理有帮助但不属于本章主线因此集中放在附录便于复习时查阅。层次核心问题重点知识点数据链路层当前链路怎样交付帧以太网帧、MAC、ARPIPv4 链路地址解析、MTU、交换机网络层怎样跨网络到达目的 IPIPv4、子网、最长前缀匹配、路由表、TTL、ICMP、IP 分片、NAT传输层怎样在主机进程间通信TCP/UDP、端口、握手、确认重传、滑动窗口、流控与拥塞控制、MSS应用层应用如何约定消息格式与交互HTTP/HTTPS、DNS、代理、自定义应用协议补充易错点以太网通常能检测坏帧并丢弃但不保证每一帧可靠送达可靠性常由上层协议处理。MAC 地址不应简单理解为“永久全球唯一”它可能是本地管理地址也可能被随机化或修改。MTU 限制链路可承载的网络层数据包大小IPv4 在允许时可能分片IPv6 路由器不进行途中分片TCP 通常借助 MSS/PMTU 尽量避免分片。TCP 是字节流不存在应用层消息边界解决“粘包/拆包”应设计长度字段、分隔符或固定长度等消息定界机制单纯靠超时不可靠。DNS 负责域名解析HTTP 负责应用请求/响应HTTPS 是运行在安全传输机制之上的 HTTP现代实现还可能使用 QUIC/HTTP/3。参考资料与延伸学习RFC 1918私有 IPv4 地址空间。RFC 4787UDP NAT 行为要求RFC 5382TCP NAT 行为要求。RFC 8489STUNRFC 8656TURNRFC 8445ICE。原笔记参考作者页面https://blog.csdn.net/qq_54652195。