树莓派通过 frp 穿透内网远程控制
先展示效果,你可以随时随地访问和控制放在家中的树莓派,只需要一个 Shell
工具,可以是办公电脑上的 PowerShell
,也可以是智能手机上的 Juice-ssh
:
为什么要穿透内网?
说来话长,内网穿透即 NAT
穿透。
我们知道 IP
地址由于 IPv4
的数量限制分为公网地址和私网地址。私网中的大量的客户机通过唯一(或有限)的公网地址连接到位于公网中的服务器,使用的就是各种各样的 NAT
(网络地址转换)技术。NAT
设备可以将私网地址和公网地址按一定的规则进行相互转换,比如把不同私网地址上的通讯映射到同一公网地址不同的端口号上,这样就可以实现私网中的客户端自由得与公网中的服务器进行通讯。但从公网来看,一个私网中所有的设备只有一个公网 IP
地址,网络地址转换规则仅保存在 NAT
设备中且规则可能还是动态的,即私网中的通讯设备全部隐藏在 NAT
设备之内,它们无法作为服务器被公网或其它私网中的客户机访问。
frp
工作原理
frp
是一个反向代理工具,它通过位于公网的 frps
服务器将 client
对 server
的请求,转化为 frps
对 frpc
的请求。由于 frpc
是 frps
的客户端,且两者一直处于连接状态,所以可以实现对内网的穿透。
使用 SakuraFrp
穿透内网
SakuraFrp 是一款免费好用的 frp
服务器,推荐大家使用。注册后按下面步骤配置即可完成内网穿透。
创建隧道。选择服务器和隧道类型,设置本地端口号(一般
ssh
默认为22
)及远程端口号(frp
服务器开启的端口号,需要设置为未被占用的端口,可能需要多次尝试):
隧道创建完成后,可以通过配置文件查询usr:id
和服务器域名:连接服务。根据操作系统处理器架构选择合适的客户端程序
frpc
下载,通过以下命令运行frpc
并连接服务器:frpc -f usr:id
也可以配置
systemd
服务:# /etc/systemd/system/frpc@.service [Unit] Description=SakuraFrp Service After=network.target [Service] Type=idle User=nobody Restart=on-failure RestartSec=60s ExecStart=/usr/local/bin/frpc -f %i WorkingDirectory=/usr/local/etc/natfrp [Install] WantedBy=multi-user.target
通过以下命令开启和注册服务:
systemctl start frpc@usr:id systemctl enable frpc@usr:id
以上过程可以通过安装
AUR
中的sakura-frp
完成,需要注意的是安装过程中如果LICENSE
的校验和报错,需要在PKGBUILD
中手动修改。通过以下命令注册服务:systemctl enable sakura-frpc-f@usr:id
配置自己的域名解析记录。如果嫌
frp
服务器域名或IP
地址太 Low,可以申请自己的域名并创建A
或CNAME
解析记录:
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: