网络里天天有人把公网、私网、内网、外网这几个词混着用聊着聊着就吵起来了其实很多时候大家说的根本不是一回事。我自己做运维和组网这些年被问得最多的就是“我家宽带到底有没有公网IP”“easytier组网是不是必须有公网”“内网穿透和端口映射到底差在哪”。这些问题看着零散根子上都是同一件事没把这几组概念的地基打牢。这篇就把公网、私网、内网、外网、NAT这几个词彻底掰开揉碎从地址规划讲到家庭宽带、内网穿透、组网选型尽量让刚入门的朋友也能一遍看懂老手也能顺手捡几个排查技巧。1. 先把四个词的地基打牢1.1 公网和私网说的是IP地址的“户口性质”公网和私网描述的是一个IP地址本身的属性跟你在哪用、怎么用没关系纯粹看这个地址段是不是被全球统一分配、能不能在互联网上被直接路由。公网IP也叫全局IP是由国际互联网号码分配机构统一规划、再由各地区机构逐级下发给运营商和大型机构的地址。它的特点是全球唯一任何一个公网IP在世界范围内不会重复。你拿着一个公网IP理论上从地球上任何一台能上网的设备都能直接访问到它中间不需要做地址转换。私网IP就不一样了。它是一批被专门保留出来、不允许在公网骨干上路由的地址段。RFC 1918 定义了三个经典私网段地址段掩码可用地址数量常见用途10.0.0.0255.0.0.0约1677万大型企业、云内网172.16.0.0255.240.0.0约104万中型网络、容器网络192.168.0.0255.255.0.0约6.5万家庭、小型办公除了这三个还有 169.254.0.0/16 这种链路本地地址以及 127.0.0.0/8 环回地址它们也都不属于公网。私网地址的核心价值在于复用全世界无数个家庭和小公司都在用 192.168.1.0/24 这一模一样的网段彼此井水不犯河水因为大家的私网包根本不会直接跑到公网上。这里有个特别容易踩的坑很多人以为“192.168 开头就是内网其他都是公网”。实际上 100.64.0.0/10 这个段运营商级NAT常用、还有 198.18.0.0/15 这类保留段既不是标准私网也不是公网属于特殊用途。判断一个地址是不是公网最靠谱的办法是查它有没有落在保留段里而不是靠记忆开头数字。1.2 内网和外网说的是“站在谁的角度看”内网和外网这组词跟公网私网完全不是一个维度。它们描述的是相对位置关系是站在某个特定网络边界上说的。内网指的是你当前所在、受你或你所在组织管理的那个网络。对家庭用户来说你家路由器下面那一堆设备组成的局域网就是内网对公司员工来说公司办公网就是内网。内网里的设备通常用私网地址但这不是强制的——一个公司完全可以给自己的服务器配公网IP只要它还在公司防火墙保护范围内员工照样管它叫“内网服务器”。外网就是内网边界之外的一切。对家庭网络来说运营商和整个互联网都是外网对公司来说除了自己管理范围之外的网络都算外网。所以你会发现一个很有意思的现象同一个地址在不同人嘴里身份完全不同。你公司服务器是 203.0.113.10 这个公网IP对你自己来说它是“内网服务器”因为你从公司内网访问它但对一个在家办公的同事来说他访问这个地址走的是“外网”。公网私网是地址的固有属性内网外网是观察者的相对视角这两组词千万别混。1.3 一张表把四者关系理清概念描述维度判断依据会变吗公网地址属性是否在保留段之外、可全球路由地址本身固定但归属会变私网地址属性是否落在RFC1918等保留段固定内网相对位置是否在你管理的边界内换个位置就变外网相对位置是否在你管理的边界外换个位置就变理解了这张表后面聊NAT、聊内网穿透、聊组网就都有了统一的语言基础。2. NAT让私网和公网握手的翻译官2.1 NAT到底解决了什么问题私网地址不能直接在公网上路由那家里十几台设备怎么上网答案就是NAT网络地址转换。它工作在路由器的转发路径上干的事情说白了就是改包头的源地址或目的地址让私网包出门时换上公网“马甲”回来时再换回原来的私网地址。最典型的是SNAT源地址转换也就是常说的“NAT上网”。你家电脑 192.168.1.100 要访问某个网站包发到路由器路由器把源地址改成自己WAN口的公网IP同时在自己的NAT表里记一笔“这个公网端口对应内网192.168.1.100的某个端口”。网站回包时目的地址是路由器公网IP路由器查表把目的地址改回 192.168.1.100再转发给电脑。整个过程对两端都是透明的。NAT最大的贡献是极大延缓了IPv4地址枯竭。没有NAT全球几十亿设备根本不够分那40多亿个IPv4地址。但NAT也带来了副作用外部主动发起的连接进不来因为NAT表里没有对应记录路由器不知道该转给谁。这就是为什么家里没做端口映射时外面访问不了你的NAS。2.2 家庭宽带里的NAT层级家庭宽带其实经常是多层NAT叠加的。典型链路是这样的你的电脑(192.168.1.100) ↓ 你家路由器(私网192.168.1.1 / 公网或运营商私网) ↓ 光猫(可能也做了一层NAT) ↓ 运营商接入网(可能还有一层CGNAT) ↓ 真正的公网如果运营商在接入侧又做了一层NAT用的就是 100.64.0.0/10 这个段这叫运营商级NATCGNAT。这时候你光猫WAN口拿到的“公网IP”其实是运营商私网地址你根本没有真正的公网入口。河北省有朋友问怎么申请电信家庭宽带的动态公网IPv4本质就是要让运营商把你从CGNAT里挪出来给你分配一个真正可路由的公网地址。这个能不能办、怎么办各地政策差异很大得直接打运营商客服问别信网上“一招搞定”的帖子。判断自己是不是在CGNAT里最简单的办法是对比登录路由器看WAN口IP再去某个查IP的网站看显示的出口IP如果两者不一致基本就是多层NAT了。2.3 端口映射、DMZ和NAT回流既然NAT挡住了外部主动连接想让外面访问内网服务就得手动开洞。常见三种手段端口映射Port Forwarding把公网某个端口固定转发到内网某台机器的某个端口。比如公网 8080 转到 192.168.1.100:80。精准、安全推荐优先用。DMZ主机把某台内网机器完全暴露在公网所有未映射端口都转给它。方便但危险等于把这台机器直接扔到公网上除非你清楚在干什么否则别开。UPnP自动映射让内网程序自己向路由器申请开洞很多游戏、下载工具用这个。省事但不可控安全上要留个心眼。还有个经常被忽略的问题叫NAT回流NAT Loopback/Hairpin。场景是这样你在内网想用公网域名或公网IP访问自己内网的服务。很多路由器默认不支持这种“出门再回来”的流量导致内网访问不了、外网却正常。绿盟等设备上就有专门的NAT回流配置项。排查这类问题时先分清是“外网访问不了”还是“只有内网用公网地址访问不了”能省一大半时间。3. 内网穿透没有公网IP时的救命方案3.1 内网穿透的本质内网穿透要解决的核心矛盾是我想从外网访问内网服务但手上没有可用的公网入口。它和端口映射的区别在于端口映射需要你有一个公网IP加一台能配置的路由器内网穿透则绕开了这个前提靠一台有公网IP的中转服务器来牵线。原理不复杂内网机器主动向中转服务器建立一条长连接因为是内网主动往外连NAT不拦中转服务器记住这条连接。当外部用户想访问内网服务时请求先到中转服务器服务器通过那条已建立的长连接把流量“喂”回内网机器。整个过程中内网机器始终是连接的发起方所以不需要公网IP也不需要动路由器。3.2 主流工具横向对比工具是否需要公网部署难度典型场景备注frp需要一台公网服务器中自建穿透、长期稳定配置灵活社区活跃ngrok不需要用官方服务低临时演示、快速验证免费版有连接数和域名限制cpolar不需要用官方服务低个人测试、小流量国内访问速度相对友好樱花内网穿透不需要低游戏联机、远程桌面面向个人用户EasyTier视模式而定中异地组网、虚拟局域网组网思路和穿透不同这里要专门说一句EasyTier 组网是不是必须有公网。EasyTier 这类组网工具的思路是构建一个虚拟局域网让分布各地的设备像在同一个内网里。它通常需要至少一个有公网可达性的节点来做中继或协调但这个节点可以是官方提供的公共节点也可以是你自己的一台云服务器。所以严格说用官方公共节点时你不需要自己有公网想完全自建、不依赖第三方那就得有一台公网服务器。这个区别很多人搞混以为“组网必须公网”其实取决于你走不走官方中继。3.3 自建frp穿透的完整实操以 frp 为例走一遍自建流程。假设你有一台公网云服务器服务端和一台内网机器客户端。服务端frps.tomlbindPort 7000 auth.method token auth.token 换成你自己的强密码客户端frpc.tomlserverAddr 你的公网服务器IP serverPort 7000 auth.method token auth.token 换成你自己的强密码 [[proxies]] name nas-web type tcp localIP 192.168.1.100 localPort 5000 remotePort 15000启动服务端./frps -c frps.toml客户端./frpc -c frpc.toml。之后访问公网服务器IP:15000就等于访问内网的192.168.1.100:5000。几个实操要点token一定要改默认配置等于把门敞开。云服务器安全组要放行 7000 和 15000 端口很多人卡在这一步客户端连不上先查安全组。想用域名访问把域名解析到公网服务器再用 frp 的 http 类型代理配合 Nginx 反代更灵活。长期跑建议用 systemd 托管别用 nohup 凑合机器一重启就没了。3.4 动态公网IP加DDNS另一条路如果你运气好运营商给了动态公网IPv4那不一定非要内网穿透。动态公网IP的问题是地址会变解决办法是DDNS动态域名解析内网有个小脚本定时检测当前公网IP一旦变化就调用域名服务商的API把域名解析更新到新IP。这样你用固定域名就能一直访问到NAS。DDNS和frp的区别DDNS依赖你有公网IP流量直连延迟低、带宽足frp不依赖公网IP但流量要过中转服务器带宽和延迟受中转服务器限制。有公网就优先DDNS没公网才考虑穿透这是选型的基本顺序。4. 组网、虚拟化与内网环境里的那些坑4.1 VirtualBox的NAT和NAT网络别再搞混VirtualBox 里两种网络模式名字很像行为差很远NAT模式虚拟机共享宿主机网络能上外网但外部访问不了虚拟机除非手动配端口转发。每台虚拟机相互隔离。NAT网络多台虚拟机接在同一个NAT网络里彼此可以互通也能上外网同样需要端口转发才能被外部访问。简单记NAT模式是“各过各的”NAT网络是“抱团取暖”。做多机实验、搭集群时用NAT网络单机测试用NAT模式就够。4.2 WSL的NAT模式和代理问题WSL2 默认走NAT模式这带来一个经典报错“检测到 localhost 代理配置但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理”。原因是WSL2在一个独立的虚拟网络里和Windows主机不是同一个网络命名空间Windows上的代理监听在 127.0.0.1WSL里访问不到。解决办法有两个方向一是开启WSL的镜像网络模式在.wslconfig里配networkingModemirrored让WSL和主机共享网络二是手动把代理地址改成主机的虚拟网卡IP而不是 127.0.0.1。前者更彻底后者兼容性更好看你的WSL版本。4.3 纯内网环境下的软件安装很多企业内网、涉密网络是完全隔离的机器上不了外网。这种环境下装软件是个技术活。以在纯内网 aarch64 机器上装 Nginx 为例思路是在外网机器上把依赖全部下齐再整体搬进去# 外网机器上下载deb包及其所有依赖 apt-get download nginx apt-get install --download-only -o Dir::Cache::archives./pkgs nginx # 把 pkgs 目录打包拷进内网 tar czf nginx-offline.tar.gz pkgs/ # 内网机器上安装 dpkg -i pkgs/*.debRHEL 6.10 这种老系统配外网yum源思路类似要么搭本地yum仓库要么用离线rpm包。pnpm项目迁移到内网、GitLab内网安装、内网机器下载uv本质都是同一套“外网准备、内网落地”的打法。关键点是依赖要下全尤其是那些间接依赖漏一个就装不上建议用--download-only或专门的离线打包工具。4.4 内网渗透视角下的横向移动从防御和排查角度内网横向渗透是安全运营的重点。攻击者拿到一台内网机器后会尝试用各种手段横向移动到其他机器。对应的告警信息通常包括异常的SMB/RDP连接、短时间内大量主机间的端口扫描、异常的凭据使用、计划任务或服务的异常创建。排查思路是先看流量再看行为内网主机之间突然出现大量445、3389、22端口的连接尝试基本可以判定有横向扫描再结合登录日志看是否有异常账号在非工作时间登录多台机器。这类告警的价值在于早发现一旦横向成功后面就是数据外泄了。5. 常见问题速查与避坑心得5.1 问题速查表现象可能原因排查方向外网访问不了内网服务没做端口映射/在CGNAT里查WAN口IP与出口IP是否一致内网用公网地址访问不了NAT回流未开启路由器找Hairpin/Loopback选项frp客户端连不上安全组/防火墙没放行查云安全组和本机防火墙SSH公网IP超时但能ping通22端口被拦或服务没起查sshd状态和端口放行WSL里代理不生效NAT模式隔离开镜像网络或改代理地址光猫路由NAT下DNS延迟高光猫性能或DNS配置改桥接或换DNS5.2 几条踩坑心得第一先确认自己有没有公网再决定方案。很多人一上来就折腾内网穿透结果发现自己其实有公网IP白白绕了远路。判断方法前面说过对比WAN口IP和出口IP一分钟的事。第二端口映射比DMZ安全得多。我见过太多人图省事直接开DMZ结果内网机器被扫。只开需要的端口用完就关这是基本纪律。第三内网穿透的中转服务器带宽是瓶颈。免费或低配的中转服务器带宽往往只有几兆传大文件会很难受。如果流量大要么升级中转服务器要么想办法搞公网IP走直连。第四纯内网环境装软件依赖一定要下全。我吃过亏外网下了主包内网装的时候报缺依赖又得重新搬一遍。用--download-only或者专门的离线打包工具一次搞定。第五组网工具选型看需求。只是临时访问一台机器ngrok、cpolar这种开箱即用的够了要长期稳定、多机互联frp自建或EasyTier这类组网方案更合适。别为了一个临时需求去搭一套复杂架构。5.3 关于家庭公网申请的现实情况最后聊聊“家庭公网”这个热词。现在IPv4地址极度紧张很多地区的新装宽带默认就是CGNAT不给公网IPv4。想申请的话直接打运营商客服说明用途比如家里有监控、NAS需要远程访问部分地区可以免费开通动态公网IPv4部分地区要加钱或者根本不给。IPv6倒是普遍下发了如果你的设备和运营商都支持IPv6用IPv6做远程访问是更现代的思路地址够用、不用NAT只是要注意防火墙策略和地址变化的DDNS问题。我自己折腾下来最大的体会是把公网私网、内网外网这两组概念彻底分清后面90%的组网和穿透问题都能自己推出来。剩下的就是动手试试的时候记得先确认网络拓扑别在错误的前提上瞎调参数。
