可以直接用公网IP:端口访问你内网的远程桌面、群晖、飞牛NAS等服务。

这话听着简单,但要把它变成现实,得按步骤来。意思就是用一台有公网地址的服务器做“桥”,在外网敲公网IP:端口,流量会通过这台桥转到你家里或公司内网的那台机器上。工具里我常用的是 nps(也有人叫它 npc 客户端+服务端的组合),配置起来像搭积木一样,按顺序装好就行。下面把实操里常遇到的点、命令、注意事项都写清楚,省你摸索。
先说一个总体流程,你心里要有个框架:先在有公网的服务器上把服务端装好并启动,登陆后台新增一个客户端条目拿到 vkey(验证密钥),回到内网机器按后台给的命令运行客户端或安装成服务,最后在后台新增隧道,把你想暴露的公网端口映射到内网主机的 IP:端口。每一步都能在后台看到在线状态,哪一步不对,日志里能找到线索。

Windows 客户端比较直白:把压缩包解到一个目录,比方说 C: pc,打开管理员命令行切到那个目录,运行后台给你的命令,示例格式像这样:
npc install -server=公网IP或域名:8024 -vkey=你的密钥 -type=tcp

带 install 参数会把 npc 装成 Windows 服务,这样机器重启也能自动起。记得把服务的启动类型设成“自动”,碰到问题可以把服务恢复项改成“重新启动服务”。这些是经验,省去你每次手动敲命令的麻烦。见过不少人没用管理员权限执行,导致安装失败,留意一下权限就好。
群晖(Synology)更省事:在套件中心装 NPC 客户端,配置里填服务器地址(形如 公网IP:8024),连接密钥填后台生成的 vkey,保存并启动后,外网按 公网IP:端口 就能访问群晖上的服务了。实操中常见的问题是密钥输错、路径权限没给对,或者防火墙没放行端口,按步骤核对就能解决。

飞牛(fnOS)那类没有现成套件的 NAS,要动手部署。先在 NAS 上新建个 nps 文件夹,把 Linux_amd64_client 内容传进去,切到 root,把 npc 给可执行权限:
chmod u+x ./npc

后台客户端里会有一条运行命令,把它复制到 NAS 上执行,像这样:
./npc -server=公网IP:8024 -vkey=密钥 -type=tcp

为了开机自动启动,要写个 systemd 单元文件,例子里 ExecStart 指向 /vol1/1000/nps/npc start,WorkingDirectory 对应目录,Restart=always,保存到
/etc/systemd/system/npc.service 后执行:
systemctl daemon-reload

systemctl enable npc
systemctl start npc

用 systemctl status 检查状态,正常的话后台也会显示客户端和隧道在线。遇到不在线,多检查密钥、路径和可执行权限,这三项常是祸根。
服务端部署也有套路。nps 的服务端和客户端可以在 GitHub Releases 下载,地址是
https://github.com/ehang-io/nps/releases。选对操作系统的压缩包,把服务端解到服务器上,放到 /usr/local/nps 这类路径比较方便管理,解压后能重命名目录更清爽。配置文件在目录下,默认一般能跑,但提议改两处:

- Bridge_port:默认是 8024,这个是服务端和客户端之间通信的端口。
- Web_port:后台管理端口,默认 8080;还有后台账号 Web_username 和 Web_password,示例是 admin / abcd.1234,强烈提议改成复杂密码。

Bridge_type 默认 tcp,可以按需要调整。压缩和加密选项可以开,能提升一点传输效率和安全性。
启动服务端前,有几样东西不能忘。服务器必须有公网 IP,这是前提。云服务商控制台和服务器防火墙里要放行必要端口:SSH(22,便于远程维护)、通信端口(8024 或你改的端口)、后台管理端口(8080 或改后的端口),还有你计划映射到外网的业务端口。许多新手连不上,就是由于没在云控制台放行端口。放行后在服务器上把 nps 设为可执行再安装:

cd /usr/local/nps
chmod u+x ./nps

./nps install
如果是 Linux,可能需要 root 权限才能安装,报权限拒绝基本是这缘由。安装成功后用 ./nps start 启动,打开 浏览器访问 公网IP:8080 登录后台,看是否可用。

一个实操提醒:不要用宝塔面板里的 Docker 方式去凑合部署服务端。我测试过,用 Docker 的时候客户端总是连不上,问题不明显,折腾半天不如直接用官方二进制包。原生部署出错率低,也更好排查日志。
说下为什么必须有一台公网服务器。内网穿透工具实则就是把公网服务器当做桥梁:服务端跑在有公网地址的主机上,客户端跑在你内网机器上。双方通过一个固定端口(列如 8024)建立长连接,只要这条长连接保持着,外网的请求就能通过服务端转发到内网客户端,然后返回。这个模式跟 frp 比较,nps 的优势之一是带可视化管理界面,许多配置和新增隧道可以在网页上操作,对不太熟命令行的人友善;frp 更轻量但偏命令行,管理体验不同,按需选。

配置字段里常见的几个词别记错:bridge_type=tcp、Bridge_port=8024、Web_username=admin、Web_password=abcd.1234、Web_port=8080。把这些看作模板,部署时按你习惯改端口和密码,千万别用默认弱口令。若业务对安全要求高,记得启用加密选项并用强密码。
排查问题的思路也讲清楚,省得你盲找日志。一条链路断了,大致率是下面几项之一:密钥不对、端口没放行、防火墙规则阻断、服务没以管理员或 root 启动、路径权限不够。出现问题先看服务端日志,再看客户端日志,两个地方几乎能把缘由点出来。别忽略云厂商安全组规则和本机 iptables/ufw 规则,那里常常卡住人。

讲个小经验:把客户端在后台添加时的备注起个容易识别的名字,列如“远程桌面”或“群晖”,后来管理界面里看一眼就知道是哪台设备在连。为每个客户端生成唯一 vkey,不要共用一个密钥,安全性更可控。新增 TCP 隧道时,服务端端口填你想对外开放的端口,目标填内网主机的 IP:端口(如果客户端和目标在同一台机器上,可以只填端口),压缩和加密提议打开,其他保持默认就行。
实操感受是,按步骤走就像搭乐高:先把服务端搭好做桥,再把客户端接上,最后连好隧道把外网端口映射过去。中间出错别急,按常见点逐项排查,大多数问题都能迎刃而解。
