NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持 tcp、udp、socks5、http 等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网 dns 解析、内网 socks5 代理等等,并带有功能强大的web管理端。
首先我们需要了解一下什么是内网穿透?
举个简单例子,我们有两个不同的 network-A 和 network-B ,两个网络之间是无法直接通信的。在 network-A 中我们部署了 3 个服务,如果 network-B 中的客户机想要访问 network-A 的服务该怎么办呢?
很显然我们需要一个中间人,也就是一台公网服务器, network-B 的客户机请求先发送到服务器,再由服务器转发到 network-A 的内网服务,从而实现跨网服务访问,这个过程就可以简单理解为内网穿透。
看一个简单的图加深一下理解。
接下来就具体介绍一下如何实现。
准备材料 :内网服务(客户端)、公网服务器(服务端)。
这里我准备了一台Linux云服务器和本地Windows电脑用于演示。
一、准备工作
NPS 服务会用到 8024 和 8080 两个端口,我们的服务器需要提前在防火墙放行端口,命令如下:
# 永久开放 8024 端口
firewall-cmd --add-port=8024/tcp --zone=public --permanent
# 永久开放 8080 端口
firewall-cmd --add-port=8080/tcp --zone=public --permanent
# 重载文件使生效
firewall-cmd --reload
二、服务端
1. NPS安装
打开 NPS 官网选择相应版本进行下载,记得下载的是 Server 版本,NPS官网。
将下载的文件上传到你的服务器并解压,这里我选择放在 /usr/local/nps,根据你的喜好自行更换。
cd /usr/local
mkdir nps
tar -xzvf linux_amd64_server.tar.gz # 解压文件
2. 配置修改
在启动服务之前我们需要修改一些默认配置,命令如下:
vim conf/nps.conf
如果你的服务器 80 端口和 443 端口已经部署其它服务则需要替换成其它端口,修改第二个红框中的登录用户信息。
3. 服务启动
在文件解压目录下执行如下命令:
./nps install
nps start # 启动服务
nps stop # 关闭服务
安装服务成功后会在/etc/nps目录下生成conf web两个文件夹。
服务启动日志路径:/var/log/nps.log,如果出现异常可查看日志信息,启动服务之后就可以通过你的服务器 IP 地址加 8080 端口进行访问了。
4. 创建连接
(1) 服务新增
点击右侧客户端并点击新增
(2) 信息填写
橙色框内信息无效填写会自动生成,压缩和加密选是。
(3) 隧道添加
点击隧道并新增服务
(4) 端口信息
填写服务相关信息,服务端端口为之后你公网要访问的端口,目标填写你内网服务的 ID 加端口。
三、客户端
1. 服务下载
这里演示的客户端是 Window 服务,进入官网下载对应Client版本.
2. 配置修改
解压下载的文件,修改conf/npc.conf文件。把原文件内容全部删除,复制下面内容,记得 server_addr 替换成你自己的服务端IP,vkey 为创建客户端时自动生成。
[common]
server_addr=[your ip]:8024
conn_type=tcp
vkey=jwep5wv3zcn8etn6
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=11
basic_password=3
web_username=user
web_password=123
crypt=true
compress=true

3. 启动服务
双击npc.exe文件即可,显示下图说明连接成功,此时就可以通过你的公网 IP 访问本地服务了。
4. 后台启动
上述步骤启动之后npc.exe命令行窗口必须一直开着,如果我们将其注册成服务就可以后台运行了。
具体教程参考之前一篇文章:将Bat注册为服务。