
1. 判断内网 / 公网概述内网 IP 只能在局域网/私有网络里用 公网 IP 互联网可路由、可被外部找到1常见内网地址最常见的私有地址段有 3 类10.0.0.0 ~ 10.255.255.255 172.16.0.0 ~ 172.31.255.255 192.168.0.0 ~ 192.168.255.255所以你看到这些地址时第一反应应该是这不是互联网直接可访问的地址比如192.168.1.1010.23.5.8172.20.100.3都属于内网地址。2公网地址除了这些私有地址段之外很多地址都可能是公网地址。公网地址的含义不是“谁都能一定访问到”而是这个地址在互联网路由体系里有机会被找到比如你访问一个网站本质上就是在访问它的公网 IP。2. 理解“为什么外网访问不到你”这个问题的本质是你的机器在内网里互联网只能看到外层出口看不到你1典型结构比如你家里、学校、公司网络常常是这样互联网 ↓ 路由器 / 校园网出口 ↓ 你的电脑192.168.1.10外网能看到的是路由器的公网 IP看不到的是你电脑的内网 IP所以外部访问192.168.1.10根本没有意义因为这个地址只在你本地网络里有效。2为什么“你能出去别人进不来”这正是 NAT 的典型效果。当你主动访问外网时比如打开网页路由器会临时记一条映射内网主机 → 外网网站返回流量就能顺着这条记录回来。但如果外网某台机器主动来找你路由器通常会想这个包该转给内网哪个设备它不知道所以默认丢弃。因此你会出现这种现象你能上网但别人不能主动连到你3. ping / traceroute 排查网络路径1 pingping的作用是测试目标是否可达、延迟大概多少、是否有丢包例如ping 192.168.1.1 ping 8.8.8.8你可以用它回答几个问题a.本机到网关通不通比如ping 192.168.1.1如果这里都不通那通常问题在本地网线 / Wi-Fi网卡路由器局域网配置b.能不能到外网 IP比如ping 8.8.8.8如果网关能通但外网 IP 不通说明问题更可能在出口网络路由防火墙校园网限制c.域名问题还是网络问题比如ping example.com如果ping 8.8.8.8通但ping example.com不通就更像是DNS 解析问题2) traceroute / tracert它的作用是看数据包从你到目标经过了哪些“中间路由节点”Linux / macOS 常用traceroute 8.8.8.8Windows 常用tracert 8.8.8.8它可以帮你判断卡在本地网关卡在校园网出口卡在运营商中间节点卡在目标网络附近3怎么理解输出每一行通常是一“跳”你的电脑 → 路由器 → 校园网核心 → 出口 → 运营商 → 目标如果前几跳就超时问题更可能在本地或校园网。如果前面都正常后面某处开始超时问题更可能在更远的网络路径上。4排查顺序网络排查时最好按这个顺序1. ping 本地回环地址 2. ping 本机网关 3. ping 外网 IP 4. ping 域名 5. traceroute 看中间哪一跳出问题也就是从近到远、从简单到复杂。4. 理解端口映射本质是 NAT1NAT 是什么NAT 可以粗略理解为路由器在转发时修改数据包的地址信息最常见的场景是很多内网设备共用一个公网 IP 上网比如你的电脑192.168.1.10你的手机192.168.1.20它们都通过路由器的一个公网 IP 出去。2端口映射是什么端口映射就是 NAT 的一种“人为指定规则”。你在路由器上写一条规则公网IP:60000 → 192.168.1.100:22意思是外面谁访问我公网的 60000 端口 就转发给内网 192.168.1.100 的 22 端口于是外网执行ssh -p 60000 user公网IP最终其实会到达192.168.1.100:223为什么说“端口映射本质是 NAT”因为它做的事情仍然是改目标地址和目标端口外部看到的是公网IP:60000路由器转发时改成192.168.1.100:22所以端口映射本质上就是一种针对入站流量的 NAT 规则4为什么一个公网端口不能随便给很多机器同时用因为路由器需要明确知道这个请求该转给哪一台内网机器所以公网IP:60000通常只能唯一映射到某一个内网目标比如192.168.1.100:22不能同时又映射到192.168.1.101:22不然路由器没法判断该发给谁。你应该掌握的能力你要能解释清楚端口映射不是“开个洞”这么简单 而是在公网入口和内网主机之间建立一条固定的地址转换规则也要能理解为什么没有端口映射时外网进不来为什么映射后可以访问内网服务为什么校园网下很多时候没法自己做端口映射为什么这时候要用 ZeroTier、frp、反向隧道之类方案