跳至主要內容

树莓派使用NPS实现内网穿透

三思原创大约 4 分钟Linux树莓派内网穿透NPS

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

image
image

树莓派使用NPS实现内网穿透

准备

服务端: 需有公网ip

客户端:

官方文档: 启动 (ehang-io.github.io)open in new window

软件确认下载

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)open in new window

服务端配置

服务端安装

上传文件到服务器,软件解压:

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

image

  1. 登录成功后,在菜单里面选择客户端,在客户端列表里面,点击新增一个客户端. 设置好秘钥即可新增​image

  2. 添加客户端成功后,在客户端列表,可以看到我们新增的设备,但这个设备状态还是离线​image

  3. 仅仅添加客户端我们还无法通信,我们需要建立隧道和端口映射关系,在tcp隧道,添加一个隧道​image

  4. 添加隧道时,相关配置信息如下:
    客户端ID:是客户端列表里面的ID,如图所示。
    服务器端口:是你远程访问的端口,也是公网服务器上要开放的端口。
    目标(IP:端口):对应的是本地的IP及本地要开放的端口,一般本地IP地址为127.0.0.1,也可以是你路由器上对应的IP地址。​image

客户端配置

文件上传,软件解压

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旁的“+”,即可显示客户端命令,复制到这里运行即可

image

启动成功后看到相关打印

image

同时,在服务端的web页面,我们可以看到我们的设备连接状态是“在线”了。

image