本来只想给内网开个口子,Natapp 却多给了一道防护

企业内部这种服务器很常见:报表系统、OA、接口服务、后台管理,几套东西一起挂在 nginx 后面,平时只在内网用,用着没什么问题,直到外面开始有人要访问。异地的合作方要看几张报表,分公司的同事要登一下后台,出差的人在酒店查个数据。

常规做法是在防火墙或者路由器上做端口映射,一个服务配一个端口,对外的东西一多,这个口子就跟着越开越大。

端口开得越多,暴露面越大。 每个映射到公网的端口都是一扇朝全网开着的门,端口扫描全天候在跑,快的话几分钟就有人来敲门,哪个服务带着默认口令、哪个后台忘了改密码,被撞开只是时间问题。这些口子还常常没人记得关,项目结束大半年,端口还挂在公网上。

有些环境则压根不允许这么干。一些行业的安全规范写得很死,内网边界上不许开任何入站端口,服务器也不许直接对公网开放,端口映射这条路一上来就走不通。

真正要满足的需求,往往小得可怜,让有限的几个人,在一段时间内,访问指定的那个服务。既要让内网的服务给外面用,又不能在防火墙上开一堆端口,更不能把整个内网摆到公网上,尺度全卡在这里。

下面这套环境是个典型例子,报表系统跑在内网,Vue 前端、Spring Boot 后端,中间 nginx 做反向代理,现在要让外部合作方看到其中几张报表。

Natapp 的做法和端口映射正好相反,客户端装在内网那台机器上,由它主动向 Natapp 的节点建一条长连接,外部访问先到 Natapp 的节点,再顺着这条已经存在的连接送回内网。

差别就在这一步,防火墙上不需要为这条隧道放行任何入站端口。 不用公网 IP,不用改端口映射,路由器一行都不用动,内网除了被指定的那一个服务,其余端口对外完全不存在。

说不上是把内网暴露出去,更像内网自己伸手出去接了一根线,方向从内到外,发起权始终在内网这台机器手里。整套方案对网络的要求只有一条,这台机器能正常上外网。

它不只是给内网开了条通道,还在业务系统前面多支了一道岗。通道建好之后,natapp 那边还能再挂一层验证,访问令牌、IP 白名单都行,外面的人得先过这一关,才轮到业务系统自己的登录。一套本来连公网 IP 都没有的内网系统,门没多开一扇,门口倒多了道岗。

这也是这次选它的主要理由,堆硬件、上一整套企业级安全网关也能达到类似效果,但那是另一个量级的成本和周期,而这次的需求是给一个 Web 服务开个口子。

其余好处都是附带的,一条 VIP2 型 Web 隧道年付 102 元;客户端 Windows、Linux、macOS 全有;国内 VIP 隧道官方标了 SLA 99.9%,比免费隧道那种不定时强制更换域名和端口的做法稳当得多;后台还能自助开数电发票,企业走报销不用去烦客服。另外它自带访问记录,这一项不在最初的预期里,后面单独说。

最后一条是底线,隧道只指向 nginx,nginx 后面的东西它一概看不见。

Web 隧道是给 HTTP/HTTPS 服务用的,网站、接口、内部系统都算。别去选 TCP 隧道,那是给远程桌面、SSH、数据库这类纯 TCP 服务准备的。协议这一项买完就不能改了,选之前先想清楚服务类型。

购买时长选年付,年付贵不了多少,差别在功能上:安全设置里的访问令牌、IP 白名单、IP 黑名单,三项在后台都标着 "仅年付隧道可开启" ,先买了月付,等真要开访问保护时才发现开不了,再想升级就麻烦了。这次选的是 VIP2 型加一年,102 元,规格是 100M 带宽、流量计费 1.1 元/G,后面会用到这个数字。

付费的 Web 隧道必须绑域名才能用,嫌备案麻烦可以用 natapp 提供的二级域名,9 到 20 元一年。这次是要长期给合作方访问的,直接上了自主域名。

隧道买好,接下来接域名,顺序别乱。先把域名加进备案域名库,这是国内节点绑自主域名的前提。

再做 CNAME 解析:到域名商控制台,把要用的子域名 CNAME 到隧道详情页给出的那个 natapp.cc 地址上,解析值后台能一键复制,别手动拼。

最后回后台绑定,隧道配置页有"绑定域名"一栏,选"自主域名",把完整域名填进去。

顺序反了,后台会提示"未绑定任何域名,无法 Web 访问"。碰上这个提示,多半是解析还没传播完,等几分钟,或者 dig 一下确认生效再回来看,不用改配置。

这里有两个词容易混,隧道详情里的 authtoken 是启动凭证,跟后面要配的"访问令牌"完全是两回事,authtoken 用来让客户端连上隧道,访问令牌用来挡住访问者,别混用,也别用同一个值。

等域名指向正确、HTTP 能正常访问了,再去开 HTTPS,不然排错时分不清是哪一层的问题。

证书用云厂商发的免费 DV 证书就行,比如 TrustAsia 签的,有效期三个月,手上有商业证书同样能传。在 natapp 隧道配置里上传证书内容和私钥,点验证就生效,证书和私钥都是 PEM 格式,从证书下载页选 Apache 那一项拿到的就是。

代价得提前知道,到期要手动换。 三个月一签,忘了续,网站当天就打不开。不想操这个心,后台还有一个"证书自动续期服务",60 元一年,natapp 负责申请和续期,本地什么都不用配。

来源:稀土掘金 原文