树莓派利用frp服务实现内网穿透——一文搞定

frp服务是一个非常好用的内网穿透服务,如果自己有购买云服务器的话,可以使用该服务将树莓派上的域名穿透至广域网上面。
本文将介绍树莓派上frp服务的使用方法,并整理介绍几个常用但网上说得不清楚的frp功能,例如frp服务开机自启、后台运行等,以便于实际应用与个人参考

下载安装

从github上获取frp服务压缩包,我这里安装的是0.20.0版本,目前GitHub上提供的最新版本为0.35.1版本
https://github.com/fatedier/frp/releases

wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz
tar -zxvf frp_0.20.0_linux_amd64.tar.gz

这样你就可以在树莓派下载目录中找到frp_0.20.0_linux_amd64文件夹。我习惯将其放在/home/ubuntu(也就是默认文件夹下,可以根据自己的情况选择文件夹)

配置文件说明

我们会在文件夹中看到这几个文件
frp根目录下的文件
只需要修改frpc.ini和frps.ini即可,其中
frpc.ini是客户端配置文件(树莓派配置这个)
frps.ini是服务器配置文件(服务器配置这个)

客户端配置

修改frpc.ini文件

;此处使用分号“;”作为注释,使用时记得删除
[common]
server_addr = 这里写你的服务器IP地址
server_port = 7000 ;服务器上设置的端口,下文会说明,服务器和客户端设置相同即可
privilege_token = 自定义,与服务器一致即可
login_fail_exit = false ;登录失败是否退出

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 24 ; 本地SSH端口
remote_port = 7979 ; 远程SSH端口

;=======以下是二级域名的设置,非必须==========
[door] ;方括号写二级域名名称
type = http
local_ip = 127.0.0.1
local_port = 8081 ; 本地访问端口
subdomain = door ; 二级域名名称,和方括号保持一致绝对没错
http_user=guest ;这里可以给访问者设置账户密码,此处设置用户名
http_pwd=12345678 ; 此处设置密码

每个参数及其意义我已经在注释中说明了
server_addr有一个技巧,此处可以填写域名代替IP地址(如果觉得IP地址记不住可以用这个方法)

服务器配置

修改frps.ini文件

[common]
bind_port = 7000 ;服务器占用的端口,和客户端server_port 保持一致
vhost_http_port = 8080 ;服务器访问端口,输入域名后必须加上这个端口号才能访问!
privilege_token = 自定义,与客户端一致即可
dashboard_port = 服务器控制台端口
dashboard_user = 控制台用户名
dashboard_pwd = 控制台密码
;以下是二级域名才会使用的配置
subdomain_host=  这里写你的服务器域名
;例如服务器为abc.com ,二级域名为dd,则需要访问dd.abc.com:端口号  才能访问

注意:无论是否为二级域名,服务器域名解析时,都解析到服务器自身的IP地址
到这里所有的配置完毕啦~

运行服务

运行服务的命令为(根据自己的安装路径调整)
服务器:

cd /home/ubuntu/frp_0.20.0_linux_amd64/
./frps -c ./frps.ini

客户端

cd /home/ubuntu/frp_0.20.0_linux_amd64/
./frpc -c ./frpc.ini

这里建议编写一个sh文件(例如frp.sh),这样每次运行只需输入

sh frp.sh

即可运行

服务后台运行以及开机自启动

在完成上述步骤后,frp服务就已经可以运行啦。不过你会发现一个非常棘手的问题,那就是每次运行都需要在服务器和树莓派上输入命令才能运行,这样丝毫没有实际应用价值,必须能够让服务自启动并后台运行才能应用于实际当中。
1、本文使用supervisor服务配置frp服务自启动与后台运行。frp服务的安装可以参见我的另一篇文章
Linux Ubuntu系统 supervisor服务安装方法(亲测可用)

2、在/etc/supervisor/conf.d目录下创建frp.conf文件,在supervisord.conf的include中加入

files = /etc/supervisor/conf.d/*.conf

3、写frp.conf文件如下:

[program:frp]
command = /home/ubuntu/frp_0.20.0_linux_amd64/frps -c /home/ubuntu/frp_0.20.0_linux_amd64/frps.ini
autostart = true

这里我使用sh文件进行控制,会方便很多

4、更新supervisor的配置

ubuntu@VM-16-12-ubuntu:~$ supervisorctl 
supervisor> reload 
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> status 
frp                              RUNNING   pid 31053, uptime 0:00:04

这样我们就可以看到,frp服务已经在运行啦!撒花~
服务器和客户端两边都配置好,就可以实现内网穿透了

摸索了这么久终于找到了完整的方法。限于本人水平问题,如果有什么错误之处还望评论指出~

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elves of Rivendell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值