大多数人是在买下 NAT 套餐大约十分钟后,才明白 NAT 到底意味着什么。Nginx 启动了,curl localhost 能返回页面,可笔记本上的浏览器一直在转圈。其实什么都没坏。只是这台服务器没有属于自己的公网 IPv4,唯一的入口是一个为 SSH 转发的端口。
这一扇门能撑起的工作量多得出人意料,但对某些非常常见的需求来说又远远不够。如果你还在两类套餐之间犹豫,我们之前的文章 独立 IP 还是 NAT VPS 会问一个能直接定下来的问题。这篇讲的是选定之后怎么过日子:NAT 服务器实际能做什么,在哪里会撞墙,以及不够用时怎么走出来。
你实际拿到的是什么
NAT 服务器在我们的网关后面使用私有地址。控制面板会显示主机和一个专属端口,连接方式如下:
ssh -p 20123 root@host
这个端口映射到服务器内部的 22 端口。IPv4 上其他所有入站端口从外部都是关闭的,也没有办法再多转发几个。出站则完全是另一回事:服务器可以访问互联网上的任何地方,只有 SMTP 的 25 和 465 端口例外,这两个端口在所有套餐上都关闭,不管是不是 NAT。完整规则见 网络与端口。
还有一个对部分人很重要的细节:出站地址不是你自己的。流量从一个你无法控制的地址出去,所以你没法为它设置反向 DNS,也没法在上面积累发件人信誉。
一个端口背后能跑得很好的东西
凡是自己主动发起连接的东西都可以。这一类比听起来要广得多:
- 轮询型机器人。用长轮询的 Telegram 机器人、走 gateway 连接的 Discord 机器人、调用交易所 API 的交易机器人,全都是出站连接。
- AI 智能体。一个调用模型 API、浏览网页、写文件、运行代码的智能体,不需要任何人来呼叫它。它需要的是 CPU、内存和一条向外的连接。
- 后台任务和爬虫。从队列取任务、抓取网页、按计划同步数据的程序都属于这一类。
- 构建机和 Runner。CI Runner 通常会自己向服务器注册并拉取任务,所以在 NAT 上运行得很舒服。
对这类负载来说,最便宜的套餐说实话就够了。Nano 每月 3 美元,2 vCPU、1 GB 内存、15 GB 磁盘;Small 每月 8 美元,4 vCPU、4 GB 和 35 GB。完整列表在 NAT 套餐专页。
一个端口不够用的地方
墙就是:凡是需要别人先发起连接的场景。
网站是最明显的例子。浏览器连接 443 端口(以及用于跳转的 80 端口),而在 NAT 套餐上,从外部看这些端口根本不存在。换成非标准端口也不行,至少访客不会买账。
带 HTTPS 的自有域名会两次撞上同一堵墙。你可以把 DNS 记录指向网关的地址,但除了你的 SSH 端口,到达那里的任何流量都不会转发到你的服务器。而获取免费证书的常规方式,正是在 80 或 443 端口上验证你的服务器。
Webhook 会悄无声息地失败。支付通知、推送更新的机器人平台、宣布新提交的 Git 服务器,都需要能连到你。一个用长轮询跑得好好的机器人,在你切换成 Webhook 的那一刻就会停止工作。
VPN 端点、游戏服务器和邮件服务器天生就需要入站端口。所有你想让同事在浏览器里打开的东西也一样。
变通办法,实话实说
IPv6。新的 Linux 服务器会分到公网 IPv6 地址,在 NAT 套餐上它可以直接到达服务器的任何端口。如果你服务的所有客户端都是你自己的(你的笔记本、其他服务器、支持 IPv6 的监控探针),效果很好。对公开网站就不行了:仍有一部分访客所在的网络没有 IPv6,他们永远打不开这个页面。Windows 套餐目前只有 IPv4。
隧道。你可以运行一个小代理,让它保持一条到别处中继的出站连接,再由中继把公网流量沿隧道转回来。这能用,做演示或内部面板也算合理。但对重要的服务来说,你在每个请求中间都塞进了一个第三方,外加一个可能在凌晨三点出故障的环节。
给自己用的 SSH 隧道。如果管理面板只有你一个人需要,那就干脆别把它暴露出去。通过你已有的 SSH 端口转发即可:
ssh -p 20123 -L 8080:localhost:8080 root@host
然后在自己电脑上打开 http://localhost:8080。这是 NAT 服务器上最被低估的技巧,而且无论如何都比把面板放到公网上更安全。
我的真实看法:IPv6 和 SSH 隧道都是好工具。但如果一个长期对外的服务只是因为服务器没有 IPv4 才走隧道,通常说明 NAT 已经不够你用了。
不重装,换成独立 IPv4
什么都不用重建。在控制面板里打开服务器,选择「更换套餐」,再选一个同等或更大规格的独立 IP 套餐。服务器会重启一次,回来时就有了自己的公网 IPv4,磁盘和你装过的一切都还在。80、443 以及你在防火墙里开放的端口都能从外部访问,SSH 也会改回常规的 22 端口。详情见 更换套餐。
点下去之前,有几件事值得知道:
- 你需要从余额中按比例支付当前周期剩余时间的差价。Nano-IP 每月 8 美元,Nano 是 3 美元;Small-IP 每月 16 美元,Small 是 8 美元。
- 服务器所在地点需要有空闲地址。如果暂时没有,控制面板会在扣费之前告诉你。
- 如果你在服务器里手动改过网络配置,重启后请检查一下。使用标准镜像时会自动生效。
- 先做一次备份。虽然只是重启一次,但数据毕竟是你的。
NAT 不合适的地方,以及 IPv4 也不合适的地方
对所有公开服务、所有需要接收 Webhook 的东西、所有需要一个固定地址让别人加入白名单的场景,NAT 都是错误的选择。别花好几天去绕开它。Nano 和 Nano-IP 的差价每月只有 5 美元。
但独立 IPv4 也不是魔法。它不会让一个屏蔽数据中心地址的网站放你进去,也救不了被限速的爬虫,因为这些判断依据的是你所在的网络,而不是还有谁用过这个地址。如果你的整个项目只是几个机器人加一个智能体,买一个永远不会有人连进来的 IPv4 纯属浪费钱。
如果你本来就打算换到更大的配置,不停机迁移 VPS 讲了操作顺序,如何看懂 VPS 规格 能帮你比较套餐。
评论
暂无评论。来做第一个吧。