:# 树莓派使用NPS实现内网穿透
前言
之前想实现内网穿透,折腾过花生壳,不过有限制。后面又尝试了FRP,不过还没有成功过。这次使用NPS实现内网穿透,主要看上了它的图形化配置界面。准备
服务端:CentOS系统,有公网IP。
客户端:我这里使用的是树莓派3B+,搭建的CentOS系统。传送门
软件下载
CPU确认
在下载前,看一下自己的服务器和客户端是什么CPU,方便查询,windows的在系统信息里面查看,linux查询命令如下:
cat /proc/cpuinfo
其中,model name就是你的CPU信息,我的服务器CPU是Intel。
model name: Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz
客户端:树莓派3B+可以通过上述命令查询,也可以官方硬件配置信息查询
这里值得注意的是,我之前以为是ARM的芯片,直接选择ARM的安装包,导致无法运行,实际上树莓派3B+是ARM V7(比较新的有可能是ARM V8)
软件下载
下载地址我的服务端是Intel的,所以我选择的“linux_386_server.tar.gz”,客户端是ARM V7的,所以我选择的“inux_arm_v7_client.tar.gz”。服务端配置
服务端安装
文件上传:文件上传,我这边采用的是FileZilla上传,各位看官根据自己的习惯挑选工具。也可以选择宝塔的文件上传。软件解压,大家根据下载的软件包,使用不同的解压命令://如果是gz压缩的,才用该命令tar -zxvf linux_386_server.tar.gz//如果上面的不成功,使用如下命令tar -xvf linux_386_server.tar.gz
启动软件
//临时启动,断开SSH就会退出./nps//后台常驻,推荐正式服务使用(./nps&)
如果提示以下错误,则说明端口80被占用了
/04/10 20:08:10.239 [E] [http.go:67] listen tcp 0.0.0.0:80: bind: address already in use
修改配置文件,可以通过命令修改:
//打开文件vim conf/nps.conf//修改端口为你可以使用的端口http_proxy_port=8099
显示以下提示,则说明启动成功了
[root@hecs-x-medium-2-linux-120017 www]# ./nps /04/10 22:14:52.314 [I] [nps.go:202] the version of server is 0.26.10 ,allow client core version to be 0.26.0/04/10 22:14:52.784 [I] [connection.go:36] server start, the bridge type is tcp, the bridge port is 8024/04/10 22:14:52.787 [I] [server.go:200] tunnel task start mode:tcp port 8083/04/10 22:14:52.787 [I] [server.go:200] tunnel task start mode:httpHostServer port 0/04/10 22:14:52.787 [I] [connection.go:71] web management start, access port is 8080/04/10 22:14:52.789 [I] [connection.go:53] start http listener, port is 8099/04/10 22:14:52.789 [I] [connection.go:62] start https listener, port is 443
如果迟迟没有响应,则需要检查端口号是否被防火墙拦截,如果类似阿里云、华为云,则要看安全组里面是否放行
服务端配置
访问服务端网页配置界面//根据上述打印,查看到web端的端口是8080///04/10 22:14:52.787 [I] [connection.go:71] web management start, access port is 8080通过IP:8080 访问你的web配置界面
登录服务端web界面,默认账号:admin,默认密码:123
登录成功后,在菜单里面选择“客户端”,在客户端列表里面,点击“新增”新增一个客户端。设置好密钥即可新增。
添加客户端成功后,在客户端列表,可以看到我们新增的设备,但这个设备的连接状态还是“离线”
仅仅添加客户端我们还无法通信,我们需要建立隧道和端口映射关系,在“TCP隧道”添加一个隧道
添加隧道时,相关配置信息如下:
客户端ID:是客户端列表里面的ID,如图所示。
服务器端口:是你远程访问的端口,也是公网服务器上要开放的端口。
目标(IP:端口):对应的是本地的IP及本地要开放的端口,一般本地IP地址为127.0.0.1,也可以是你路由器上对应的IP地址。
客户端配置
客户端安装
文件上传:文件上传,我这边采用的是FileZilla上传,各位看官根据自己的习惯挑选工具。也可以选择宝塔的文件上传。软件解压,大家根据下载的软件包,使用不同的解压命令://如果是gz压缩的,才用该命令tar -zxvf linux_arm_v7_client.tar.gz//如果上面的不成功,使用如下命令tar -xvf linux_arm_v7_client.tar.gz
启动软件
//x.x.x.x :你服务器的IP,//8024:服务器开放的端口,可以通过启动服务端打印的日志查看:server start, the bridge type is tcp, the bridge port is 8024。也可以在服务端仪表盘查看到客户端端口//vkey:添加客户端时的唯一验证码//临时启动,断开SSH就会退出./npc -server=x.x.x.x:8024 -vkey=demo123//后台常驻,推荐正式服务使用(./npc -server=x.x.x.x:8024 -vkey=demo123&)
如果你不知道这个命令,可以在“客户端列表”里面,点击ID旁的“+”,即可显示客户端命令,复制到这里运行即可
启动成功后我们能看到相关打印
[root@localhost nps]# ./npc -server=x.x.x.x:8024 -vkey=demo123/04/10 23:07:27.009 [I] [npc.go:231] the version of client is 0.26.10, the core version of client is 0.26.0/04/10 23:07:28.494 [I] [client.go:72] Successful connection with server x.x.x.x:8024
同时,在服务端的web页面,我们可以看到我们的设备连接状态是“在线”了。
添加一个网站试试
我这里用的是宝塔来快速建站的
添加一个网站,添加好后,会自动配置默认的站点,这个时候我们就可以远程测试一下。
访问你的公网IP:端口,就可以访问你的网站了,效果如下:
防火墙
因为客户端不涉及安全组,所有如果我们遇到端口无法使用时,看防火墙是否打开即可:查看开放的端口firewall-cmd --zone=public --list-ports
查看监听的端口
netstat -lnpt
开放端口8024
firewall-cmd --zone=public --add-port=8024/tcp --permanent
关闭端口8024
firewall-cmd --zone=public --remove-port=8024/tcp --permanent
配置立即生效
firewall-cmd --reload
总结
映射端口的时候,一定要检查端口是否开放。可以通过后台命令,启动多个指令,这样你就可以映射多个端口了。在现在的基础上,你可以考虑把SSH、宝塔等端口都影射一下,后期在远程部署环境都不是事情。树莓派3B+安装CentOS 7