nps代理搭建内网穿透服务,访问内网web网站和远程运维
nps代理搭建内网穿透服务,访问内网web网站和远程运维
本文将介绍如何使用nps工具搭建内网穿透服务,实现通过公网IP访问内网Web服务和远程运维。文章详细介绍了nps服务端和客户端的搭建步骤,以及SSH代理和HTTP代理的具体配置方法。
使用场景
内网搭建了一个Web服务,想通过公网IP+端口号让外部人员访问。举例来说,如果内网127.0.0.1:80端口有一个Web服务,通过nps代理,可以在外网直接通过公网IP(或者域名)+端口号访问内网网站。
相对于VPN的优势
使用nps代理相对于VPN,客户端配置上可能略微比VPN麻烦,每个服务都需要一个端口号代理。但是,对于用户来说,需求仅仅是访问Web服务,可以不需要安装VPN直接在公网上面访问网站。
搭建步骤
搭建nps服务端
登录https://github.com/ehang-io/nps/tree/v0.26.10,按自己需求下载nps服务端和客户端,这里使用的Linux服务端和客户端。
将服务端压缩包放到公网服务器上,解压缩:
# 新建一个目录放压缩包
mkdir nps
cd nps
# 将压缩包移至nps目录
mv linux_amd64_server.tar.gz nps/
# 解压缩
tar -zxvf linux_amd64_server.tar.gz
- 安装nps服务端:
sudo ./nps install
- 启动nps服务端,使用nps start可能会启动不成功,这里直接放在前台运行,后面可以写一个开机自启动服务:
sudo ./nps
这里发现80端口已经被占用了,可以修改conf文件,让服务端监听另外的端口号,或者把80端口上的服务关掉,这里选择更换端口号:
vim /etc/nps/conf/nps.conf
重启服务端发现不报错了:
- 访问公网IP+8080端口,即可登录nps管理平台,用户名默认是admin,密码默认123,这个可以在/etc/nps/conf/nps.conf里面修改。如果没法通过8080端口访问nps管理平台,大概率是防火墙没有放行这个端口,这里用的是阿里云服务器,首先要在阿里云的安全组里面放行这个端口,然后还要在系统自带的防火墙里面放行这个端口,这里用的Ubuntu系统,使用的ufw防护墙:
ufw allow 8080/tcp
ufw allow 8080/udp
添加客户端
添加完成
客户端配置
- 将客户端压缩包放到客户端机器上:
mkdir nps-client
# 将客户端压缩包放到nps-client文件夹目录下
mv linux_amd64_client.tar.gz nps-client/
# 解压缩客户端压缩包
tar -zxvf linux_amd64_client.tar.gz
- 将刚才在服务端生成的命令粘贴到客户端执行:
# 加上nohup放到后台执行,服务器地址填自己服务器的公网地址
nohup ./npc -server=xx.xx.xx.xx:8024 -vkey=kf9vul1knx63brl6 -type=tcp &
成功会提示successful:
- 在服务端管理平台上面查看客户端状态,此时应该会提示在线
配置SSH代理
添加tcp隧道,增加内网端口映射,开启SSH代理
将内网IP地址192.168.2.111的22端口映射到公网的12000端口上面,这样就可以通过公网远程SSH连接到内网,注意公网服务器防火墙需要开放这个端口:
- 在公网服务器通过ssh远程连接内网机器,这里用户名填内网机器的用户名:
ssh 内网机器用户名@127.0.0.1 -p 12000
远程连接成功!
配置HTTP代理
- 添加TCP隧道,增加内网端口映射,添加http代理:
添加完三个状态应该都会显示正常
如果内网的web服务配置了nginx,需要在客户端的nginx里面加上公网IP,否则就会出现下图这种情况:
在nginx配置里面加上公网IP:
# 这里的路径修改为自己nginx配置文件的路径
vim /etc/nginx/conf.d/ems.conf
- 重启nginx:
nginx -s reload
- 在公网上访问内网网站,成功访问!
总结
使用nps代理相对于VPN,对于用户来说更加友好,只需要公网IP+端口号就可以访问内网服务,缺点是每个服务都需要一个代理端口,和VPN来说各有优劣。