从互联网访问树莓派之二:frp内网穿透
发布日期:2021-05-20 15:08:13 浏览次数:18 分类:原创文章

本文共 3386 字,大约阅读时间需要 11 分钟。

本期将介绍从互联网访问树莓派的第二期——frp内网穿透。实现内网穿透的软件有很多,有商业的,也有开源免费的,比如花生壳、nps、ngrok、frp。我也均有尝试体验,综合比较下来,frp的配置是相对简单的,而且方便扩展使用,本期主要介绍frp实现内网穿透远程访问树莓派。当然了,了解了如何实现内网穿透之后,你还可以通过frp实现其他方面的内网穿透访问。但请时刻谨记,不要随便穿透商业企业内网,除非你了解其中的安全风险或者设置好相应的安全措施。


1. frp内网穿透概述


frp是一个免费开源的用于内网穿透的反向代理应用,可以称为新一代高性能内网穿透工具,它支持TCP、UDP协议,也为http和https协议提供了额外的支持。当然要实现对内网的访问,你还是需要一台能够在公网访问的服务器来布置frp服务端,作为你的中转站,帮你实现公网←→frp服务器(中转站)←→内网的连接,让内网里的设备也可以被公网访问到。


frp本身是一个开源项目,作者是个中国人,在github上开源( ),也有很详细的中文文档介绍。


2. 服务端配置


服务端配置以腾讯云轻量服务器(lighthouse)为例,系统为Ubuntu 18.04 LTS。


首先,到github选择适合服务端的版本,选择frp_0.36.2_linux_amd64.tar.gz 。然后登录到云服务器进行设置。


wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gztar -xzvf frp_0.36.2_linux_amd64.tar.gz

然后可以看到相关文件目录。


frp_0.36.2_linux_amd64/frp_0.36.2_linux_amd64/frps_full.inifrp_0.36.2_linux_amd64/frps.inifrp_0.36.2_linux_amd64/frpcfrp_0.36.2_linux_amd64/frpc_full.inifrp_0.36.2_linux_amd64/frpsfrp_0.36.2_linux_amd64/LICENSEfrp_0.36.2_linux_amd64/frpc.inifrp_0.36.2_linux_amd64/systemd/frp_0.36.2_linux_amd64/systemd/frpc@.servicefrp_0.36.2_linux_amd64/systemd/frpc.servicefrp_0.36.2_linux_amd64/systemd/frps.servicefrp_0.36.2_linux_amd64/systemd/frps@.service

其中,frpc为客户端程序,frps为服务端程序,*.ini是配置文件,*.service是systemd服务配置文件。


先看一下systemd服务配置文件,frps.service内容如下:


[Unit]Description=Frp Server ServiceAfter=network.target[Service]Type=simpleUser=nobodyRestart=on-failureRestartSec=5sExecStart=/usr/bin/frps -c /etc/frp/frps.ini[Install]WantedBy=multi-user.target

frps_full.ini配置文件内容很长,有兴趣大家可以自行查看学习,本处只是介绍ssh远程访问树莓派的相关配置,具体如下:


//frps.ini[common]bind_port = 7000

端口可以自行填写,但要注意打开云服务相关安全策略,将相应端口打开。


接下来,根据服务配置文件,将服务端程序frps放到/usr/bin/目录下,将frps.ini放到/etc/frp/目录下,将frps.service放到/etc/systemd/system/目录下。具体的程序位置你也可以选择自己设置的目录,但要注意修改服务文件中相应的目录地址。


//相应命令均以root权限运行mv frps /usr/bin/mkdir /etc/frpmv frps.ini /etc/frp/mv frps.service /etc/systemd/system/systemctl daemon-reload    //更新服务systemctl enable frps.service  //开启服务

这样就通过systemd服务实现了服务端frps程序开机自动启动。服务端至此已经配置完成。对于ssh远程访问,我们在服务端也只是配置了frp的远程访问端口就够了。


3.客户端配置


客户端上我们以树莓派设置为例,首先选择客户端版本frp_0.36.2_linux_arm.tar.gz 。然后登陆树莓派进行配置。


由于基本配置与服务端基本一致,可参照下方命令进行配置。


 wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_arm.tar.gz  #下载程序版本 tar -xzvf frp_0.36.2_linux_arm.tar.gz #解压

客户端frpc.service内容如下:


[Unit]Description=Frp Client ServiceAfter=network.target[Service]Type=simpleUser=nobodyRestart=on-failureRestartSec=5sExecStart=/usr/bin/frpc -c /etc/frp/frpc.iniExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini[Install]WantedBy=multi-user.target

修改并设置frpc.ini内容如下:


[common]server_addr = x.x.x.x #服务器ip地址server_port = 7000 #服务器端口[ssh_pi] #服务设置名称,中括号内可自行命名type = tcp #服务类型local_ip = 127.0.0.1 #本地ip地址local_port = 22 #本地端口,ssh本地端口号remote_port = 9999 #内网穿透外网访问端口,可自行设置,但需将服务器端相应端口打开

接下来,按照如下命令完成配置。


//相应命令均以root权限运行mv frpc /usr/bin/mkdir /etc/frpmv frpc.ini /etc/frp/mv frpc.service /etc/systemd/system/systemctl daemon-reload    //更新服务systemctl enable frpc.service  //开启服务

这样就通过systemd服务实现了服务端frpc程序开机自动启动。树莓派客户端至此已经配置完成。


对于树莓派ssh远程访问,可以通过ssh -p 9999 pi@x.x.x.x即可实现通过互联网的远程访问。


同样的,对于其他类型的服务只需相应修改客户端或服务端配置即可。


#frpc.ini[vnc_pi] #远程vnc服务type = tcplocal_ip = 127.0.0.1local_port = 5900remote_port = 1111[pi4_smb] #远程smb服务type = tcplocal_ip = 127.0.0.1local_port = 445remote_port = 2222[msdp] #windows远程访问type = tcplocal_ip = 127.0.0.1local_port = 3389remote_port = 3333

以上这些只需修改客户端即可。


本期内容就到这里,Enjoy!


欢迎关注我的公众号,持续更新中~~~



上一篇:CentOS 7 安装 MySQL5.7
下一篇:c语言实现将文件中小写字母转为大写字母

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年05月06日 18时52分25秒