NAT365

命令行客户端

这是一篇 NAT365 命令行入门教程,目标很简单:让人在外面时,也能安全、方便地访问家里的智能设备管理页面,比如 Home Assistant、NAS 面板、智能网关后台或摄像头网页控制台。

远程控制家中的智能设备

NAT365 的核心做法是:在家中设备上运行 ./NAT365 p2pserve 启动 P2P 服务端,在外部电脑上运行 ./NAT365 p2pclient 建立本地访问入口,再通过返回的 p2p_cipher 连接码把两端连起来。

先理解这件事

可以把它想象成“在外面的电脑上,临时开了一扇门,门后面连着家里的设备页面”。 p2pserve 用来提供被连接的一端,p2pclient 用来连接这一端并把远端服务映射到本机端口。

也就是说,真正被控制的智能设备通常还在家里内网里,而外部电脑只是通过 NAT365 建立了一条访问通道。对于智能家居用户来说,这种方式很适合远程打开管理后台、查看设备状态和进入控制页面。

你需要准备什么

开始前,只需要准备 3 样东西:

  • 家里一台长期在线的设备,例如迷你主机、树莓派、NAS 或 Linux 主机,它需要能访问家里的智能设备后台端口。
  • 一台外部使用的电脑,用来在公司、学校或旅途中连接家里的设备。
  • 已安装好的 NAT365 CLI,命令格式是 ./NAT365 <command> [flags]

如果你要控制的是网页型智能设备后台,常见端口通常会是 808080443

整个过程分几步

整体流程很短,只有 4 步:

  1. 在家里的设备上启动 p2pserve
  2. 记下返回的 p2p_cipher 连接码。
  3. 在外部电脑上启动 p2pclient 并填入这个连接码。
  4. 在浏览器中打开本机端口,进入家里的智能设备页面。

下面按这个顺序一步一步来。

第一步:在家里启动服务端

先到家中那台一直开着的设备上执行下面这条命令:

./NAT365 p2pserve

这条命令会启动 P2P 服务器,允许其他客户端连接。成功后会返回 JSON 信息,其中包含 p2p_cipher,这是后面连接时最重要的一串码。 如果还没有登录,那么会先提示你登录,比如扫描二维码登录。

示例返回结果大致如下:

{"isError":false, "message":"P2P server started", "p2p_cipher":"xxx"}

看到 p2p_cipher 后,把它保存好。下一步外部电脑连接时就要用它。

第二步:在外部电脑上建立入口

假设家里智能设备管理页面使用的是 8080 端口,那么在外部电脑执行:

./NAT365 p2pclient -local=8080 -p2pcipher=abcdef123456

这里的 abcdef123456 只是示例,你要换成上一步拿到的真实连接码。-local 是本地监听端口,-p2pcipher 是 P2P 连接码。

这条命令的意思可以理解为:在当前电脑上开一个 8080 端口,让它去代理家里的远端服务。之后你访问自己电脑的这个端口,就相当于在访问家中的设备页面。

第三步:在浏览器里打开页面

当客户端命令运行成功后,就可以在当前电脑浏览器中打开本机地址,例如:

http://127.0.0.1:8080

注意127.0.0.1:8080 这种形式表示仅本机可访问,因此它很适合个人远程控制场景。这样做更简单,也更不容易把本地映射端口暴露给同一局域网里的其他设备。

图文理解:一张脑内示意图

可以把整个过程理解成下面这样:

  • 家中设备:运行 ./NAT365 p2pserve,生成连接码。
  • 外部电脑:运行 ./NAT365 p2pclient -local=8080 -p2pcipher=连接码
  • 浏览器:打开 http://127.0.0.1:8080,进入家中智能设备后台。

如果你要把这篇教程发给家人或同事,也可以把这三行当成最简单的图文说明文字。

一个完整示例

假设家里有一个智能家居总控面板,它的网页后台端口是 8080。完整操作可以写成这样:

家中设备执行

./NAT365 p2pserve

假设返回:

{"isError":false, "message":"P2P server started", "p2p_cipher":"AbCdEf123456"}

外部电脑执行

./NAT365 p2pclient -local=8080 -p2pcipher=AbCdEf123456

浏览器访问

http://127.0.0.1:8080

这样就能从外部电脑打开家里的智能设备管理页面。

常见家庭设备怎么套用

不同设备的核心区别,通常只是端口不一样。

设备类型常见访问方式示例命令
智能家居面板网页后台,多为 8080 或 80./NAT365 p2pclient -local=8080 -p2pcipher=xxx
NAS 管理页面常见 5000、80、443./NAT365 p2pclient -local=5000 -p2pcipher=xxx
路由器后台常见 80 或 443./NAT365 p2pclient -local=80 -p2pcipher=xxx
家庭服务器 SSH常见 22./NAT365 p2pclient -local=22 -p2pcipher=xxx

只要知道设备后台实际使用哪个端口,就能按同样方式替换 -local 参数。

中继和等待直连

有两个常会遇到的参数:-use-relay-waitp2p。前者用于服务端,表示使用中继模式;后者用于客户端,表示等到 P2P 直连建立后再开始转发。

如果家里的网络环境比较特殊,默认直连效果一般,可以在家中设备改成这样:

./NAT365 p2pserve -use-relay

如果你更看重“必须直连后再开始”,可以在客户端这样写:

./NAT365 p2pclient -local=8080 -p2pcipher=你的连接码 -waitp2p

提示:-use-relay 默认值是 false-waitp2p 默认值也是 false

不想每次都重复输入

如果你经常连接同一台家中设备,可以使用环境变量简化命令。 支持 NAT365_LOCAL_PORTNAT365_P2P_CIPHER 这类变量。

例如:

NAT365_LOCAL_PORT=8080 NAT365_P2P_CIPHER=AbCdEf123456 ./NAT365 p2pclient

这样做的好处是,命令更短,也更适合写进脚本或开机启动项里。

最容易踩的坑

1. 绑定了错误的 IP

如果你看到下面这类错误:

listen tcp 192.168.1.1:80: bind: cannot assign requested address

这是因为你绑定到了不属于当前电脑的 IP,比如路由器地址。解决方法是改用 127.0.0.1:80800.0.0.0:8080,或者先查清楚本机真正的局域网 IP。

提示:查看本机 LAN IP 的方法,例如 Linux 可用 ip addr show | grep "inet ",macOS/Windows 可用 ifconfig 这类方式检查。

2. 不知道该填哪个端口

最简单的判断方法是:平时你在家里访问这个智能设备后台时,用的是哪个端口,现在就优先填哪个端口。p2pclient -local=8080-local=80-local=443-local=22 都属于这种直接代理的典型写法。

3. 连接有问题不知道去哪看

日志默认在 Linux/Mac 的 ~/.config/./NAT365/cmd.log,Windows 则在 %APPDATA%/./NAT365/cmd.log。出现无法启动、连接不上或参数写错时,可以优先查看日志。

最短操作清单

不想看长文时,可以直接照着下面做:

# 第 1 步:家中设备启动服务端
./NAT365 p2pserve

# 第 2 步:记下返回的 p2p_cipher

# 第 3 步:外部电脑建立连接
./NAT365 p2pclient -local=8080 -p2pcipher=这里替换成真实连接码

然后在浏览器打开:

http://127.0.0.1:8080

只要你的智能设备后台本来就在家里设备的 8080 端口上运行,这样通常就能完成远程控制入口的建立。

On this page