树莓派使用NPS实现内网穿透
原创大约 4 分钟
本文介绍了如何在树莓派上使用NPS实现内网穿透,包括服务端和客户端的配置步骤。通过配置服务端并添加客户端、建立隧道和端口映射关系,实现在公网访问树莓派内网服务的功能。

树莓派使用NPS实现内网穿透
准备
服务端: 需有公网ip
客户端:
官方文档: 启动 (ehang-io.github.io)
软件确认下载
liunx通过命令查询cpu
cat /proc/cpuinfo
其中,model name 就是cpu信息
root@vultr:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 61
model name : Intel Core Processor (Broadwell, no TSX, IBRS)
stepping : 2
microcode : 0x1
cpu MHz : 2394.454
cache size : 16384 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds
bogomips : 4788.90
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
软件下载
Releases · ehang-io/nps (github.com)
服务端配置
服务端安装
上传文件到服务器,软件解压:
tar -zxvf linux_386_server.tar.gz
启动软件:
//临时启动,断开SSH就会退出
./nps
//后台常驻,推荐正式服务使用
(./nps&)
如果提示端口被占用,修改配置文件,可以通过命令修改:
//打开文件
vim conf/nps.conf
//修改端口为你可以使用的端口
http_proxy_port=8099
显示以下提示,启动成功:
root@vultr:~# ./nps
2023/11/20 03:35:12.257 [I] [nps.go:202] the version of server is 0.26.10 ,allow client core version to be 0.26.0
2023/11/20 03:35:13.772 [I] [server.go:200] tunnel task start mode:httpHostServer port 0
2023/11/20 03:35:13.772 [I] [connection.go:71] web management start, access port is 8080
2023/11/20 03:35:13.792 [I] [connection.go:36] server start, the bridge type is tcp, the bridge port is 8024
2023/11/20 03:35:13.794 [I] [connection.go:62] start https listener, port is 443
2023/11/20 03:35:13.795 [I] [connection.go:53] start http listener, port is 80
打开防火墙,云服务安全组放行:
#Debian
#查看状态
ufw status
#放开端口
ufw allow 80
ufw allow 8080
服务端配置
访问服务端网页配置页面
2023/11/20 03:35:13.772 [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地址。
客户端配置
文件上传,软件解压
tar -zxvf 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旁的“+”,即可显示客户端命令,复制到这里运行即可
启动成功后看到相关打印
同时,在服务端的web页面,我们可以看到我们的设备连接状态是“在线”了。