电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
用树莓派搭建内网穿透家庭入口
分 享
扫描二维码分享
用树莓派搭建内网穿透家庭入口
树莓派
FRP
内网穿透
摸鱼之家
关注
发布时间: 2019-07-23
丨
阅读: 2680
通过FRP服务可以实现内网穿透,这样就能使树莓派获得一个公网ip,这样就能通过树莓派进行内网资源的访问,如内网的服务器,NAS等资源。当然了,FRP还是对具有公网ip的服务器带宽有一定的需求 ## FRP内网穿透原理简介 ### 原理部分 ![](https://cf03.ickimg.com/bbsimages/201907/13d4a284540558a82fdc1781098d3398.png) FRP的工作原理很简单,我将数据发送给FRP的服务端,FRP服务端通过我访问的端口号判断这个数据是发送给哪个FRP客户端的,客户端收到数据之后,在将这个数据送给我们树莓派上的一个特定的进程,比如ssh,或者web服务器Apche中,返回的数据依旧原路返回给我们。在这个过程中,其实我们主机的感觉这个转发数据的过程是“透明的”。这就像,我们点了个外卖,饭店(相当于我们的客户端),外卖小哥(FRP服务端),我们(任意的外部主机),饭店把外卖(数据)交给外卖小哥,然后外卖小哥把外卖交给我们。中间外卖小哥怎么送外卖的过程我们是不需要了解的。 ### 实例 上文我们说到了“透明的”,这里我们借助一个例子详细解释一下 比如我们经常用的SSH服务吧,现在,我们在云服务器上配置好了frp的服务端,打开了一个给frp客户端准备的端口7000。然后我们在客户端的配置文件中写上我们需要的端口比如6000,同时也写上frp服务端的ip和端口号7000.这样我们就等于持续不断的给云服务器的7000端口发送请求,一直告诉我们的frps服务端“访问云服务器6000端口的数据统统转发给我”,这样我们传送给云服务器6000端口的数据就能顺利的送达FRP客户端了。 接下来,我们在FRP客户端的配置信息填写我们需要将数据送达的进程的端口号22,这样数据就送给我们的SSH进程啦。 我们接下来要进行SSH链接,只需要填写服务器IP:6000 即可完成ssh链接,就相当于我们的树莓派在公网上可以直接链接一样,这个例子其实也是“透明传输”这个概念的一个实例。 ## 准备工作 1.树莓派3B+(预先烧好最新的raspbian操作系统) 2.具有公网ip的服务器一台,我使用的是腾讯云的服务器 3.下载FRP的服务端与客户端(项目地址 https://github.com/fatedier/frp/releases) ![](https://cf03.ickimg.com/bbsimages/201907/e93bb2c410763cdeb195e4b5007f5d82.png) 在服务端上下载x86平台的release,在树莓派上下载arm用的release,版本为0.27.1 ## 搭建FRP服务端 ### 登录服务器,解压相关文件 `cd /opt ` #进入opt文件夹 `sudo wget https://github.com/fatedier/frp/releases/download/v0.27.1/frp_0.27.1_linux_amd64.tar.gz` `tar -xzvf frp_0.27.1_linux_amd64.tar.gz`#解压文件 进入相关文件夹后可以看到一系列文件,如下: ![](https://cf03.ickimg.com/bbsimages/201907/3161326541e3d20db6a39cf7b70418a3.png) ## 赋予相关文件相应的权限 其中frpc为frp的客户端,frps为frps的服务端,这里我们要记得给他们加上相关的权限: `sudo chmod -R 755 ./` ## 进行配置信息的设置 之后我们修改frps.ini文件,内容如下: ``` [common] bind_port = 7000 #frp服务端进程的端口,我们的frp客户端就需要链接这个端口 token = icxbk.com #随意设置的一个token,作用类似于密码 ``` 保存文件后,启动FRPs: `./frps -c frps.ini` ![](https://cf03.ickimg.com/bbsimages/201907/a754148191c5432f5f3ee853f9f45da1.png) 成功连接后会出现一系列的运行日志 ### 保持程序的运行状态 如果是刚接触linux的同学,可能会发现当我们关掉ssh客户端的时候,我们当前运行的进程也会被kill掉,这时候我们引入一款新的工具,tmux,使用方式如下: `tmux` #打开一个新的虚拟终端 ![](https://cf03.ickimg.com/bbsimages/201907/3b700606badb3f656c7d6156886536d7.png) 这样我们就有一台虚拟终端啦,在这个虚拟终端里面运行frps,之后先按ctrl+b,再按下D键,就能退出虚拟终端了,但是虚拟终端里运行的进程以及不会关闭 ## 进行frp客户端的配置工作 在树莓派上,上述下载文件赋予权限的操作都是一样的,主要区别为,在树莓派上我们与运行的是frpc这个可执行文件。 ### 配置frpc文件 frpc的配置文件比较复杂,具体格式如下 ``` [common] server_addr = 127.0.0.1 #你的frps服务器的ip server_port = 7000 #我们之前设置的端口 token=icxbk.com #我们之前设置的token [tag] type = local_ip = 127.0.0.1 #这里暂时不需要设置,如果你的内网里面还有其他的机器需要使用frp,这里填写机器的ip就好了如192.168.1.105 local_port = #你希望透传的端口 remote_port = #你希望你公网服务器和你本地端口建立链接的端口 ``` 我的配置文件只涉及到ssh服务,端口配置如下: ``` [common] server_addr = 127.0.0.1 #云服务器ip地址如193.xx.xx.xx,这里为了安全没有填真实的 server_port = 7000 token = icxbk.com [ssh] type = tcp local_ip = 127.0.0.1 #代表给本机 local_port = 22 remote_port = 6100 #这样写意味着,访问我服务器的6100端口,相当于访问我本地的22端口 ``` 保存配置文件之后,运行frpc: `./frpc -c frpc.ini` 运行完成后,出现一系列提示信息,如下: ![](https://cf03.ickimg.com/bbsimages/201907/339a3641e51cd6ef8cbc4dae399c5ac6.png) ## 连通性测试 配置一下SSH客户端的信息(注意哦,这里我填的127.0.0.1是为了安全而隐去了我真实云服务器的地址,配置的时候应该填的是自己服务器真实的ip) ![](https://cf03.ickimg.com/bbsimages/201907/f2bf67c4e8178600a7fb7f782cb621cd.png) 接下来就是激动人心的时刻啦,点击连接 ![](https://cf03.ickimg.com/bbsimages/201907/47e5a63003e11d5542a9ad34a98879da.png) 连接成功~~,我们就在公网上成功部署了我们的树莓派服务器 这样我们就实现内网穿透了,使用树莓派用过ssh使其成为一个管理入口,可以实现远程管理家中设施的功能,通过修改配置文件,还可以实现web代理之类的功能 ## TIPS ### 官方文档 [中文文档](https://github.com/fatedier/frp/blob/master/README_zh.md) ### 安全性提醒 因为树莓派的22端口已经穿透到公网了,所以一定要记得提前修改密码,不要用默认的pi raspbian了,很容易被人入侵,一旦你公网的树莓派被人拿下了,那么你家里所有的设备都可能受安全威胁。建议使用10位以上的随机生成的密码 ### **树莓派4(4G)秒杀429元活动正在进行中,数量有限,扫码抢购** ![](https://cf03.ickimg.com/bbsimages/201909/9ba04e7ba842973d286236329a9412d7.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
1
)
摸鱼之家
擅长:消费电子
关注
评论
(1)
登录后可评论,请
登录
或
注册
512aaf2a89263414
247
天前...
厉害!
0
回复
发布
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交