命令行客户端
这是一篇 NAT365 命令行入门教程,目标很简单:让人在外面时,也能安全、方便地访问家里的智能设备管理页面,比如 Home Assistant、NAS 面板、智能网关后台或摄像头网页控制台。
远程控制家中的智能设备
NAT365 的核心做法是:在家中设备上运行 ./NAT365 p2pserve 启动 P2P 服务端,在外部电脑上运行 ./NAT365 p2pclient 建立本地访问入口,再通过返回的 p2p_cipher 连接码把两端连起来。
先理解这件事
可以把它想象成“在外面的电脑上,临时开了一扇门,门后面连着家里的设备页面”。 p2pserve 用来提供被连接的一端,p2pclient 用来连接这一端并把远端服务映射到本机端口。
也就是说,真正被控制的智能设备通常还在家里内网里,而外部电脑只是通过 NAT365 建立了一条访问通道。对于智能家居用户来说,这种方式很适合远程打开管理后台、查看设备状态和进入控制页面。
你需要准备什么
开始前,只需要准备 3 样东西:
- 家里一台长期在线的设备,例如迷你主机、树莓派、NAS 或 Linux 主机,它需要能访问家里的智能设备后台端口。
- 一台外部使用的电脑,用来在公司、学校或旅途中连接家里的设备。
- 已安装好的 NAT365 CLI,命令格式是
./NAT365 <command> [flags]。
如果你要控制的是网页型智能设备后台,常见端口通常会是 8080、80 或 443。
整个过程分几步
整体流程很短,只有 4 步:
- 在家里的设备上启动
p2pserve。 - 记下返回的
p2p_cipher连接码。 - 在外部电脑上启动
p2pclient并填入这个连接码。 - 在浏览器中打开本机端口,进入家里的智能设备页面。
下面按这个顺序一步一步来。
第一步:在家里启动服务端
先到家中那台一直开着的设备上执行下面这条命令:
./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_PORT 和 NAT365_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:8080、0.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 端口上运行,这样通常就能完成远程控制入口的建立。