0%

树莓派 - frp内网穿透搭建

参考

以下Server端为阿里云服务器,Client为树莓派

下载

分别在Client和Server端下载合适的frp资源包

https://github.com/fatedier/frp/releases

资源

1
2
3
4
5
6
7
8
9
10
11
LICENSE 

frpc #(树莓派Client使用)
frpc.ini #(树莓派Client使用)
frpc_full.ini #(树莓派Client使用)

frps #(云服务器Server使用)
frps.ini #(云服务器Server使用)
frps_full.ini #(云服务器Server使用)

systemd

这里可以根据自己的主机选择对应的资源下载,可以通过如下命令查看

1
uname -a
主机 下载类型
阿里云Server frp_0.37.1_linux_amd64
树莓派Client frp_0.37.1_linux_arm

配置

Server

阿里云服务器中的 frp_0.37.1_linux_amd64/frps.ini进行如下配置

1
2
3
4
5
6
7
8
9
[common]
bind_port = 7000
dashboard_port = 7500
token = xxxxx
dashboard_user = xxxx
dashboard_pwd = xxxx
vhost_http_port = 80
vhost_https_port = 443
subdomain_host = juneleo.cn
  • bind_port:frp服务器启动占用的端口
  • dashboard_port:frp服务器web看板占用的端口
  • dashboard_user:web看板用户名
  • dashboard_pwd:web看板密码
  • token:Client连接时需要使用的token
  • vhost_http_port:设置监听http端口 5212 主要是给家庭私有云使用
  • vhost_https_port:设置监听https端口
  • subdomain_host:二级域名

Client

树莓派中的frp_0.37.1_linux_arm/frpc.ini 进行如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[common]
server_addr = 39.106.87.9
server_port = 7000
token = xxxx

[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7003

[cloud resource]
type = tcp
remote_port = 7005
plugin = static_file
plugin_local_path = /root/toshiba
plugin_strip_prefix = static
plugin_http_user = xxx
plugin_http_passwd = xxx

[blog http]
type = http
local_ip = 127.0.0.1
local_port = 8000
subdomain = www

[cloud http]
type = http
local_port = 5212
local_ip = 127.0.0.1
subdomain = cloud
  • server_addr 阿里云服务器的ip地址
  • server_port = frp服务端占用的端口
  • token = frp服务端 frps.ini配置文件中设置的token

启动

Server

1
./frps -c frps.ini

Client

1
./frpc -c frpc.ini

SSH连接

配置

1
2
3
4
5
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7003
  • type:tcp模式
  • local_ip:本地ip
  • local_port:本地端口
  • remote_port:服务端端口

连接

1
ssh -p 7003 pi@39.106.87.9
  • -p 7003 为服务器的端口
  • pi为树莓派的用户名
  • 39.106.87.9 为服务器ip地址

文件访问

配置

1
2
3
4
5
6
7
8
[cloud resource]
type = tcp
remote_port = 7005
plugin = static_file
plugin_local_path = /root/toshiba
plugin_strip_prefix = static
plugin_http_user = xxx
plugin_http_passwd = xxx
  • plugin: 静态文件访问插件
  • plugin_local_path:客户端访问的文件路径
  • plugin_strip_prefix:域名前缀
  • plugin_http_user:访问时用户名
  • plugin_http_passwd:访问时用户密码

连接

1
http://39.106.87.9:7005/static/

Http网站

配置

1
2
3
4
5
[blog http]
type = http
local_ip = 127.0.0.1
local_port = 8000
subdomain = www
  • local_port:本地端口,这个端口使用nginx部署了一个blog web
  • custom_domains:域名

8000 为私人博客web服务占用的端口,这里主要是将内网的blog web服务穿透到外网

连接

1
2
www.juneleo.cn
juneleo.cn

家庭私有云

1
2
3
4
5
[cloud http]
type = http
local_port = 5212
local_ip = 127.0.0.1
subdomain = cloud

5212 为家庭私有云占用的端口,这里将家庭私有云进行了穿透

连接

1
cloud.juneleo.cn

博客和家庭私有云共用80端口,通过二级域名来区分