树莓派通过 frp 穿透内网远程控制

先展示效果,你可以随时随地访问和控制放在家中的树莓派,只需要一个 Shell 工具,可以是办公电脑上的 PowerShell ,也可以是智能手机上的 Juice-ssh

为什么要穿透内网?

说来话长,内网穿透即 NAT 穿透。
我们知道 IP 地址由于 IPv4 的数量限制分为公网地址和私网地址。私网中的大量的客户机通过唯一(或有限)的公网地址连接到位于公网中的服务器,使用的就是各种各样的 NAT(网络地址转换)技术。
NAT 设备可以将私网地址和公网地址按一定的规则进行相互转换,比如把不同私网地址上的通讯映射到同一公网地址不同的端口号上,这样就可以实现私网中的客户端自由得与公网中的服务器进行通讯。但从公网来看,一个私网中所有的设备只有一个公网 IP 地址,网络地址转换规则仅保存在 NAT 设备中且规则可能还是动态的,即私网中的通讯设备全部隐藏在 NAT 设备之内,它们无法作为服务器被公网或其它私网中的客户机访问。

frp 工作原理

frp 是一个反向代理工具,它通过位于公网的 frps 服务器将 clientserver 的请求,转化为 frpsfrpc 的请求。由于 frpcfrps 的客户端,且两者一直处于连接状态,所以可以实现对内网的穿透。
树莓派通过 frp 穿透内网远程控制

使用 SakuraFrp 穿透内网

SakuraFrp 是一款免费好用的 frp 服务器,推荐大家使用。注册后按下面步骤配置即可完成内网穿透。

  1. 创建隧道。选择服务器和隧道类型,设置本地端口号(一般 ssh 默认为 22 )及远程端口号(frp服务器开启的端口号,需要设置为未被占用的端口,可能需要多次尝试):
    树莓派通过 frp 穿透内网远程控制
    隧道创建完成后,可以通过配置文件查询 usr:id 和服务器域名:
    树莓派通过 frp 穿透内网远程控制

  2. 连接服务。根据操作系统处理器架构选择合适的客户端程序 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
  3. 配置自己的域名解析记录。如果嫌 frp 服务器域名或 IP 地址太 Low,可以申请自己的域名并创建 ACNAME 解析记录:

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!