文档

快速开始 + 每部分每设备的功能说明(持续更新中)

NAT 服务器检测与穿透建议

本文介绍面板如何自动识别 NAT 服务器、区分「可设置端口的 NAT」和「无法设置端口的 NAT」,以及在必要时引导用户使用穿透运维。

先了解:什么是 NAT

NAT 服务器是指「只有内网 IP、没有独立公网 IP」的服务器。比如很多便宜的 NAT VPS,服务商给的是一个内网地址(如 192.168.x.x),你无法直接从公网访问它,只能通过服务商提供的端口映射(把公网的某个端口转到你的内网)来访问。

功能简介

添加服务器后,面板在 SSH 连接成功时会自动检测这台机器是否为 NAT 类型(本机只有内网地址、没有独立公网 IP)。检测到 NAT 后,会在服务器卡片上显示一个小角标,并在「概览」顶部显示一份集中的说明。用户可点击黄色角标确认该 NAT 服务器能否在服务商面板自行设置端口转发,从而决定是否需要使用穿透运维。

为什么需要区分 NAT

「内网 IP」≠「需要穿透」。NAT 服务器分两类:

类型特征是否需要穿透
可设置端口的 NAT服务商提供端口映射面板,用户可自行把公网端口映射到内网端口❌ 不需要,端口能自己搞定
无法设置端口的 NAT服务商只固定映射了 SSH(22) 等少数端口,其余端口从公网进不来✅ 需要穿透运维

只有「无法设置端口的 NAT」才需要穿透运维。可设置端口的 NAT 端口能自己映射,用起来和公网机没区别,不应被反复提醒。

检测原理

面板在 SSH 连接成功后,执行只读命令 ip -4 addr show 读取服务器本地网卡 IP,判断是否全部属于内网段:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 100.64.0.0/10(CGNAT 运营商级 NAT)
  • 127.0.0.0/8、169.254.0.0/16、0.0.0.0/8

只要存在任意一个公网段 IP,判定为「有公网 IP」(非 NAT);全部为内网段则判定为「NAT」。

> 检测命令是只读的,不会修改服务器任何状态。检测结果写入数据库,只在首次连接时检测一次,之后直接复用结果,不拖慢连接。

角标与说明位置

检测到 NAT 后,提示分两处呈现:

1. 系统管理面板「概览」选项卡:点击某台服务器卡片上的「系统管理」进入面板后,第一个选项卡「概览」里会显示对应的 NAT 提示横幅——黄色标记的服务器显示黄色说明(含消除指引),红色标记的服务器显示红色穿透引导。提示只在 NAT 且未确认的直连服务器上出现,不挤占卡片。

2. 卡片小角标:卡片上只保留一个小的角标,分三种状态:

角标颜色含义点击行为
NAT黄色检测到 NAT(本地 IP 内网段),待确认弹出确认框
需穿透红色端口无法从公网访问,需要穿透弹出穿透运维引导
(无角标)—已确认「端口没问题」,标记消除—

黄色 NAT 角标是「待确认」状态:点击弹出确认框,可二选一:

  • 「端口没问题,消除标记」→ 角标消失,之后不再提醒;
  • 「端口无法访问,标记为需穿透」→ 角标变红,引导穿透运维。

红色 需穿透 是「警告」:点击直达穿透运维 + 端口穿透。

> 为什么不做「自动探测端口能否访问」:面板服务器与目标服务器可能在同一机房,面板探测走内网,测「通」不代表外部访客能通,结果不可信。故「需穿透」由用户在黄色说明弹窗里手动标记。

为什么 NAT 服务器「用着用着会断开」

NAT 服务器在服务商网关处有 idle timeout(空闲连接超时)。SSH 连接空闲几分钟后,网关会悄悄掐断连接(TCP 半开),而双方都感知不到。

面板通过以下两点根治:

1. SSH 连接开启 keepalive:所有连接建立后每 30 秒发一个保活包,既防止 NAT 空闲掐断,又能及时发现半死连接。

2. 连接池定期清理:后台线程每 2 分钟关闭闲置超过 2 分钟的连接,防止半死连接无限堆积。

注意事项

1. 检测依赖 SSH 连接成功:服务器离线或密码错误时无法检测,不显示角标。

2. 不显示角标的服务器:公网服务器、安卓机(Termux)、已穿透设备(有 tunnel_token)都不显示 NAT 角标——它们本来就走各自的通道,无需 NAT 提醒。

3. 特殊情况留余地:极少数「1:1 NAT」(端口全通的服务器)本地 IP 也是内网,会被检测为 NAT。此时用户在确认框里选「可以」即可,不影响使用。

4. 确认后可改:角标状态由用户确认决定,随时可通过点击角标调整。

相关文档