首页 >> 要闻简讯 > 学识问答 >

问inonat 用法 内网穿透工具实操详解

2026-11-07 22:49:59

答

首先纠正,你写的 inonat 正确名称是 innat,它是一款轻量级 NAT 内网穿透工具,核心作用就是把内网机器的服务暴露到公网,让外网设备可以直接访问内网里面的 web 服务数据库服务或者其他 TCP UDP 业务,它的工作原理是在内网部署客户端,公网服务器部署服务端,两端建立长连接隧道,外网请求先到达公网服务器,再通过隧道转发回内网主机,不需要在内网路由器上面做端口映射,适合家里 NAS 开发机局域网测试环境这类没有公网 IP 的场景,innat 相比传统 frp 配置更加简洁,资源占用很低,支持 TCP UDP 转发,启动之后会维持稳定隧道连接,当公网端收到访问请求,就会按照预先配置好的转发规则,把数据包转发到内网指定 IP 和端口,它适合临时调试远程访问,不适合超大规模高并发生产业务,使用的时候必须区分公网服务器端程序和内网客户端程序,两端版本尽量保持一致,否则很容易出现隧道握手失败。

基础运行架构

innat 分为 server 服务端和 client 客户端两个部分

服务端部署在拥有公网 IP 的云服务器上面,负责监听公网端口,接收外网访问流量,同时等待内网客户端主动连上来建立隧道

客户端部署在内网主机,主动向外网服务端发起连接,注册转发规则,把内网本地端口映射出去

外网用户访问公网服务器的映射端口,流量经由隧道回到内网客户端,再转发到内网目标服务

服务端部署与用法

第一步 下载对应系统版本 innat 程序,支持 linux windows mac

第二步 给程序添加执行权限,linux 系统执行 chmod 加 x

第三步 启动服务端,核心参数是监听端口,这个端口是客户端用来连接服务端的隧道端口,同时可以设置鉴权密钥,防止陌生客户端随意接入

基础启动命令格式

innat server p 隧道端口 k 鉴权密钥

参数说明

p 代表服务端监听的隧道通信端口

k 代表鉴权密钥,客户端必须填写完全相同的密钥,不然握手会拒绝

可选参数还可以设置日志级别,后台运行,最大连接数

客户端部署与用法

客户端核心任务是定义转发规则,每一条规则代表一个映射,把公网服务端上的公网端口,转发到内网的目标地址和端口

基础启动命令格式

innat client s 公网服务器 IP p 隧道端口 k 鉴权密钥 r 公网端口内网目标 IP 内网目标端口

参数说明

s 填写公网服务器的公网 IP 或者域名

p 和服务端保持一致的隧道端口

k 和服务端保持一致的鉴权密钥

r 就是转发规则,一条规则对应一组映射,可以同时写多条 r 参数,一次性映射多个业务端口

常用场景实操示例

场景一 映射内网 web 服务

内网主机 192.168.1.100 上面 nginx 监听 80 端口,想要外网通过云服务器 8080 端口访问

服务端启动 innat server p 9000 k mykey123

客户端启动 innat client s 云服务器公网 IP p 9000 k mykey123 r 8080 192.168.1.100 80

启动完成之后,外网访问 http 云服务器公网 IP 8080 就可以打开内网 nginx 页面

场景二 映射 SSH 远程登录

内网机器 ssh 默认端口 22,公网映射端口设置成 2222

客户端增加转发规则 r 2222 127.0.0.1 22

外网执行 ssh 用户名 云服务器公网 IP 端口 2222,就可以登录内网机器

进阶用法与注意事项

可以把 innat 配置成系统自启,linux 使用 systemd 服务单元,开机自动拉起服务端或者客户端,避免重启之后隧道断开

网络波动的时候隧道会自动重连,但是如果鉴权密钥不匹配,公网防火墙没有放行隧道端口,客户端是无法建立连接的

安全重点,公网服务器的隧道端口一定要放行防火墙,同时鉴权密钥不要使用简单弱密码,暴露到公网的服务本身也要做好账号密码防护,不然会有被扫描入侵风险

innat 原生主要支持 TCP 转发,UDP 支持要看你下载的版本,部分旧版本不支持 UDP 业务

不要把高敏感数据库裸端口直接暴露公网,建议额外增加防火墙白名单或者加密代理

【常见问题】

问题 1 innat 用法里面客户端和服务端密钥不一致会出现什么情况

回答 1 innat 用法当中客户端和服务端鉴权密钥必须完全一致,如果密钥不一致,客户端发起隧道握手的时候会被服务端直接拒绝,隧道无法建立,公网端口不会生效,外网访问会连接失败。

问题 2 innat 用法可以一次性映射多个内网端口吗

回答 2 innat 用法支持同时配置多条转发规则,客户端启动命令里面可以添加多个 r 参数,每一条 r 对应一组公网端口和内网目标端口,实现多个业务同时穿透,不需要启动多个客户端进程。

问题 3 使用 innat 用法的时候公网端口能重复占用吗

回答 3 innat 用法里面同一个服务端上面,公网映射端口不能重复,多条转发规则不能把同一个公网端口分配给不同内网目标,否则服务端启动注册规则的时候会报错,隧道注册失败。

【免责申明】

本文 innat 用法属于开源工具学习演示,内网穿透会把内网服务暴露到公网,存在网络安全风险,请遵守当地网络相关法律法规,仅用于本人合法自有设备的调试访问,禁止用于非法访问他人网络,不同版本 innat 参数可能存在改动,实际使用请以官方文档为准。

 

相关阅读

标签: inonat用法
最新文章