NPS工具是一种轻量级、高性能、功能强大的内网穿透代理服务器支持TCP、udp、socks5、几乎所有的流量转发都可以用来访问内部网站、本地支付界面调试、ssh访问、远程桌面、内部网络dns分析、内部网络socks5代理等,并具有强大的web管理端。
特点▶ Go语言编写▶ 支持Windows、Linux、MacOS、Android等平台可跨平台使用▶ 支持TCP、各种协议,如UDP▶ 易于部署▶ 自带WEB管理端环境部署NPS工具部署分为服务端部署和客户端部署,服务端部署在配备公共网络IP的机器上(或配备DNAT指向的内部网络机器,以确保从公共网络访问),客户端部署在内部网络中运行需要从外部网络访问的服务机器。
NPS服务支持源代码、安装包、docker 方式部署参考最新的不同部署方法 ehang-io.github.io/nps/#/install本文以安装包为例,演示了安装方法使用本文示例 v0.26.10 注意服务端和客户端需要使用匹配的版本,否则可能会导致连接失败。
服务端部署我们的服务端部署在一台安装中 Ubuntu 服务器上的操作系统▶下载服务器端安装包github.com/ehang-io/nps/releases注意选择正确的系统架构,我们的服务器端是 x86_64 所以选择架构 github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz这个安装包(下载可能会被阻止,科学的互联网问题需要自己解决)。
# mkdir nps# cd nps# wgetgithub.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
▶软件包解压安装# tar -xzf linux_amd64_server.tar.gz# ./nps install...2021/06/22 17:54:55 install ok!2021/06/22 17:54:55 Static files and configuration files in the current directory will be useless2021/06/22 17:54:55 The new configuration file is located in /etc/nps you can edit 2021/06/22them 17:54:55 You can start with:nps start|stop|restart|uninstall|update or nps-update updateanywhere!
▶启动服务注:无论启动是否成功,控制台都不会有任何信息输出命令执行完成后,您需要查看日志文件 /var/log/nps.log,确认服务是否成功启动# nps start查看日志信息,打印以下信息,并且没有其他错误的日志,说明服务启动成功:。
2021/06/22 17:54:59.972 [I] [nps.go:202] the version of server is 0.26.10 ,allow client core version to be 0.26.02021/06/22 17:55:00.296 [I] [connection.go:36] server start, the bridge type is tcp, the bridge port is 80242021/06/22 17:55:00.299 [I] [server.go:200] tunnel task start mode:httpHostServer port 02021/06/22 17:55:00.299 [I] [connection.go:71] web management start, access port is 80802021/06/22 17:55:00.300 [I] [connection.go:62] start https listener, port is 4432021/06/22 17:55:00.300 [I] [connection.go:53] start http listener, port is 80
▶其它控制命令# nps [start|stop|restart|...]▶检查监听端口nps 服务启动后,会监听 80、443、8024、8080 4个端口# netstat -vatnp | grep npstcp6 0 0 :::8024 :::* LISTEN 1680/npstcp6 0 0 :::443 :::* LISTEN 1680/npstcp6 0 0 :::80 :::* LISTEN 1680/npstcp6 0 0 :::8080 :::* LISTEN 1680/nps
至此,成功安装和启动服务端服务服务端部署完成后,在部署客户端之前,需要访问管理平台创建客户端具体方法如下:▶访问管理平台nps 提供了基于 web 用于客户端和隧道管理的管理平台(同时提供部分核心功能的api,后续介绍)。
web 管理平台访问URL 服务端IP:默认用户名/密码为8080 admin/123▶新建客户端nps 客户端要想连接到服务端,需要在客户端启动时指定服务端连接 key,因此,在启动客户端服务之前,有必要在服务端创建客户端。
web 管理平台访问URL 服务端IP:默认用户名/密码为8080 admin/123▶新建客户端nps 客户端要想连接到服务端,需要在客户端启动时指定服务端连接 key,因此,在启动客户端服务之前,有必要在服务端创建客户端。
点击客户端菜单 按钮,新建客户端,在这里填写“client01”示例:新建完成后,在客户端列表中找到新的客户端条目,点击最左边 “ ” 展开详细信息,找到客户端启动连接命令,客户端部署▶下载客户端安装包
注:下载客户端安装包时,需要确认客户端系统架构,下载正确的安装包这里的客户端系统是一个示例 x86_64 架构,因此,下载以下安装包:github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
# mkdir nps# cd nps# wget github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
▶解压安装包# tar -xzf linux_amd64_client.tar.gz▶启动客户端根据前面[新客户端]步骤中查看的客户端启动命令,启动客户端# ./npc -server=10.1.0.70:8024 -vkey=nz1zgy6oqax -type=tcp
根据客户端开始时打印的日志信息,客户端已成功连接到服务端▶服务端检查客户端连接状态访问web管理平台,查看客户端连接状态从以上截图信息可以看出,客户端地址 一栏显示的是 10.1.0.16,让我们查看真实的客户端地址。
如上图所示,真实客户端地址为192.168.12.142,不是服务端显示的客户端地址,因为客户端在 192.168.122.0/24 在这个内网中,内网通过网关 SNAT 将包源地址转换为包源地址 10.1.0.16 地址。
使用方法介绍了前一章nps 在服务端和客户端的部署中,客户端与服务端建立了成功的联系使用方法介绍了前一章nps 在服务端和客户端的部署中,客户端和服务端已经成功地建立了连接接下来,介绍内网穿透的配置方法。
nps 支持 TCP、UDP、HTTP、SOCKS5等待流量转发,我们从外网转发 SSH 以连接到客户端的方式为例,介绍 TCP 隧道配置方法(SSH协议基于TCP协议,这里不赘述)TCP 隧道▶创建隧道。
首先,需要在web管理平台上创建一个平台 TCP 隧道,填写客户端ID为2(前一步创建的客户端ID),填写服务端口为9022(该端口为自定义端口,服务端上未使用的端口即可该端口用于后续从网络访问客户端),填写目标(IP:端口)为22(目标端口,指客户端主机上指定的客户端ID对应的端口。
点击新按钮保存隧道配置一个新的服务器 10.1.0.70 的 9022 端口到客户端 客户端ID 2(192.168.122.142) 的 22 端口的 TCP 隧道建成后续访问服务端 10.1.0.70 的 9022 端口的流量将通过 TCP 隧道转发到内网客户端 192.168.122.142 的 22 实现内网穿透的端口。
▶访问测试使用外部网络 ssh 客户端软件连接服务端连接服务端 10.1.0.70 的 9022 访问测试端口# ssh -p 9022 root@10.1.0.17连接成功后,检查节点信息如下,确认已通过服务端 9022 端口以ssh的方式成功连接到客户端192.168.12.142系统。
高级用法快速了解NPS服务端、客户端部署及使用方法,以下是一些更先进的使用方法自动注册客户端在客户端连接服务端之前,先在服务端创建客户端,再启动客户端,这样实际操作起来比较麻烦,nps 启动时支持客户端自动注册到服务端。
这里有一个具体的介绍注:自动注册的客户端,每次离线重新连接到服务端后,服务端的客户端id都会发生变化检查服务端的公共连接 key客户端连接的公共密钥配置在服务端配置文件中,客户端可以使用该密钥连接服务端。
检查方法如下:在安装NPS服务端的系统中执行操作检查配置,可根据需要使用vim等编辑器对配置进行修改# grep public_vkey /etc/nps/conf/nps.confpublic_vkey=123。
客户端指定配置文件启动在安装NPS客户端的系统中执行以下操作▶编制配置文件以最简单的配置为例,更具体的配置项可以参考github.com/ehang-io/nps/blob/master/docs/use.md。
github.com/ehang-io/nps/blob/master/conf/npc.conf# vim /etc/nps/npc.conf[common]server_addr=10.1.0.70:8024conn_type=tcp vkey=123 auto_reconnection=true[tcp]mode=tcptarget_addr=127.0.0.1:22server_port=9222[common]server_addr:配置服务端IP:服务端口(默认8024)conn_type:vkeyey与服务端连接的建立方法:验证服务端连接时的公钥,在实现客户端自动注册时,需要配置为服务端配置的public_vkey(默认为123)auto_reconnection:自动重连(与服务端保持连接)[tcp]mode:隧道模式(类型)target_addr:隧道目标地址(客户端地址:端口)server_port:隧道服务端地址(隧道在服务端节点打开的连接端口)
▶启动客户端服务# ./npc -config /etc/nps/npc.conf start成功启动客户端,成功地与服务端建立了联系web 查看客户端的管理平台▶检查客户端状态▶查看隧道信息隧道连接试验。
如上图所示,可通过 tcp 隧道端口 92
来源:德斯软件资讯