使用示例
统一准备工作
- 开启 NPS 服务端,假设服务端公网 IP 为
1.1.1.1,配置文件中的bridge_port为8024,web_port为8080。 - 访问
1.1.1.1:8080。 - 在客户端管理中新增一个客户端,记录客户端验证密钥。
- 在内网设备上运行 NPC(Windows 使用 CMD 运行
.exe文件)。
注意:运行服务端后,请确保客户端设备能正常访问配置文件中的 bridge_port 端口,可使用 Telnet、Netcat 等工具检查。
HTTP(S) 隧道
适用范围: 小程序开发、微信公众号开发、产品演示
注意:HTTP(S) 隧道提供 HTTP 反向代理,不是 DNS 服务,可在 Web 上配置。
假设场景:
- 有一个域名
proxy.com,服务端公网 IP 为1.1.1.1。 - 有两个内网开发站点:
127.0.0.1:81和127.0.0.1:82。 - 想通过
http(s)://a.proxy.com访问127.0.0.1:81,通过http(s)://b.proxy.com访问127.0.0.1:82。
使用步骤
- 将
*.proxy.com的 DNS 记录指向服务端1.1.1.1。 - 进入刚才创建的客户端的 HTTP(S) 隧道管理,新增两条规则:第一条的域名为
a.proxy.com、目标地址为127.0.0.1:81;第二条的域名为b.proxy.com、目标地址为127.0.0.1:82。
现在访问 http(s)://a.proxy.com 或 http(s)://b.proxy.com 即可。
**HTTPS:**如需使用 HTTPS,请进行相关配置,详见使用 HTTPS 。
TCP 隧道
适用范围: SSH、远程桌面等 TCP 连接场景。
假设场景:
想通过服务端 1.1.1.1 的 8001 端口连接内网设备 10.1.50.101 的 22 端口,实现 SSH 连接。
使用步骤
- 在刚才创建的客户端隧道管理中新增一条 TCP 隧道,填写服务端监听端口
8001和目标地址10.1.50.101:22,然后保存。 - 访问服务端 IP
1.1.1.1的监听端口8001,相当于访问内网 IP10.1.50.101的目标端口22,例如:ssh -p 8001 root@1.1.1.1。
UDP 隧道
适用范围: 内网 DNS 等 UDP 连接场景。
假设场景:
内网有一台 DNS 服务(10.1.50.102:53),希望从外部网络使用该服务;服务端公网 IP 为 1.1.1.1。
使用步骤
- 在刚才创建的客户端的隧道管理中新增一条 UDP 隧道,填写服务端监听端口
53和目标地址10.1.50.102:53,然后保存。 - 将需要使用的 DNS 地址修改为
1.1.1.1,效果等同于使用10.1.50.102上的 DNS 服务。
SOCKS5 代理
适用范围: 在外部网络访问内网设备或资源。
假设场景:
想将服务端 1.1.1.1 的 8003 端口作为 SOCKS5 代理入口,以访问内网设备或资源。
使用步骤
- 在刚才创建的客户端隧道管理中新增一条 SOCKS5 代理,填写服务端监听端口
8003,然后保存。 - 在外部设备上配置 SOCKS5 代理(例如使用 Proxifier),代理 IP 为服务端 IP
1.1.1.1,端口为8003。
注意 经过 SOCKS5 代理时,收到 SOCKS5 数据包后 Socket 已处于 Accept 状态,因此端口扫描会显示所有端口均为 Open,并在建立连接后短时间关闭。若想获得与内网一致的表现,建议先远程连接一台内网设备。
HTTP 正向代理
适用范围: 在外部网络使用 HTTP 正向代理访问内网站点。
假设场景:
想将服务端 1.1.1.1 的 8004 端口作为 HTTP 正向代理入口,以访问内网网站。
使用步骤
- 在刚才创建的客户端隧道管理中新增一条 HTTP 正向代理,填写服务端监听端口
8004,然后保存。 - 在外部设备上配置 HTTP 正向代理,代理 IP 为服务端 IP
1.1.1.1,端口为8004。
注意:使用私密代理和 P2P 连接时,除了已配置的客户端和服务端,还需要在访问端运行 NPC,并通过本地监听端口访问目标服务。
私密代理
适用范围: 不希望为每条隧道单独开放公网监听端口,或需要通过密钥访问的 TCP 服务,例如 SSH。
假设场景:
无需新增公网监听端口,即可访问内网服务 10.1.50.2:22。
使用步骤
- 在刚才创建的客户端中新增一条私密代理,并设置隧道访问密钥
secrettest和目标地址10.1.50.2:22。 - 在需要连接 SSH 的访问端执行命令:
如需指定本地端口,可添加参数 -local_port=xx,默认为 2000。
注意:password 是在 Web 管理中设置的隧道访问密钥,具体命令可查看 Web 管理中的访问端命令。
假设 10.1.50.2 的 SSH 用户名为 root,执行 ssh -p 2000 root@127.0.0.1 即可访问。
P2P 连接
适用范围: 希望减少服务端中转流量的大流量传输场景。P2P 连接是否成功与双方网络和 NAT 类型密切相关,无法保证直连成功。参见检测 NAT 类型 。
假设场景:
想通过访问端设备的 2000 端口访问内网设备 10.2.50.2 的 22 端口。
使用步骤
- 在
nps.conf中设置p2p_ip(服务端 IP)和p2p_port(服务端 P2P 端口)。
注:若
p2p_port设置为6000,请在防火墙中放通 UDP 端口6000至6002。
- 在刚才创建的客户端中新增一条 P2P 连接,并设置隧道访问密钥
p2pssh。 - 在访问端设备上执行命令:
如需指定本地端口,可添加参数 -local_port=xx,默认为 2000。
注意:password 是在 Web 管理中设置的隧道访问密钥,具体命令可查看 Web 管理中的访问端命令。
假设内网设备 10.2.50.2 的 SSH 用户名为 root,在访问端执行 ssh -p 2000 root@127.0.0.1 即可访问;如果目标是网站,则在浏览器中访问 127.0.0.1:2000。