使用frp将树莓派穿透到外网

news2024/11/25 13:47:43

引言

frp官网

最近买了一块树莓派 zero 2w,想要它可以进行远程访问,所以想到了frp这个方案进行穿透,后期会使用树莓派搭建音乐服务器,本人手机内存有点小,xxxx云音乐太占空间,有兴趣的话可以关注后续。

一、准备工作

frp文件准备

一台已经可以内网访问的树莓派

一台云服务器(本人使用的京东云)

下载不同架构的frp脚本

使用命令查看架构

arch

x86_64:https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz

arm/aarch:https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_arm64.tar.gz

注意:树莓派的架构和云服务的架构是不一样的,树莓派是arm架构,云服务器是x86_64架构的,下载frp的时候注意甄别

将frps、frps.toml通过SFTP上传至云服务

image-20241006142134930

将frpc、frpc.toml通过SFTP上传至树莓派

image-20241006142222806

!!!一定记住,这是两个不同压缩包的文件,再次提醒注意架构!!!注意架构!!!注意架构!!!

二、准备配置文件

服务端

注意:服务端的所有端口记得防火墙放行,不然是访问不到的,特别是云服务器,一定要提前放行

[common]
bind_port = 7000       #frps服务绑定7000端口
dashboard_port = 7500  #控制台端口
dashboard_user = xxxx  #frps控制台的密码
dashboard_pwd = "xxxx" #frps控制台的密码

vhost_http_port = 7002
vhost_https_port = 7003
max_pool_count = 50

token = "your_token" #这儿可以随笔那填一个token,随便什么都行
tcp_mux = true

#日志相关配置
log_file = "/opt/frps/log/frps.log"
log_level = "info"
log_max_days = 3

privilege_mode = true

启动frp的服务端脚本

./frps -c ./frps.toml

客户端

serverAddr = "你的服务器地址"
serverPort = 7000
auth.method = "token"
auth.token = "服务端填写的token"
loginFailExit=false
[[proxies]]
name= "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000 #树莓派上的22端口绑定服务端的6000端口,也就是说通过访问服务端ip:6000端口就可以访问到树莓派的22端口
[[proxies]]
name = "http"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["192.168.31.214"] #自定义域名可以是树莓派的ip
[log]
to = "/opt/frpc/log"
level= "info"

启动frp客户端脚本

./frpc -c ./frpc.toml

控制台或日志有以下消息便是启动成功

image-20241006143148325

或者是登入服务端的控制台(服务端ip:7500)查看树莓派是否上线

image-20241006143315602

三、测试远程连接树莓派

image-20241006143715272

配置成功后进行访问,成功访问到树莓派!!!

image-20241006143802382

四、可能会遇到的问题

执行脚本不成功

服务端、客户端的脚本最好都先修改权限后再执行

客户端脚本启动时一直在连接0.0.0.0:7000

在配置文件中配置了服务端的ip,但启动客户端脚本时,一直访问0.0.0.0:7000,然后报错,连接被拒绝,这种情况,大概率是客户端的配置文件格式不对,注意,是格式不对,格式,格式,格式,看你用的什么类型的配置文件,建议使用toml

进入不了管理后台或请求被拒绝

先检查防火墙端口有没有放行

想要脚本一直保持再后台运行

使用systemctl进行配置

服务端(客户端同理,只需要修改文件名称和脚本路径):

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

使用systemctl管理frp

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps

设置开机自启

sudo systemctl enable frps

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 window 系统下安装 Ubuntu (虚拟机)

文章目录 零、Ubuntu 和 Vmware workstation 资源一、下载 Ubuntu二、下载 Vmware Workstation Pro三、安装 Vmware Workstation Pro四、创建虚拟机五、配置 Ubuntu 零、Ubuntu 和 Vmware workstation 资源 如果觉得自己下载 Ubuntu 和 Vmware workstation 麻烦,也…

如何在 MySQL 中实现数据压缩

如何在 MySQL 中实现数据压缩 在 MySQL 数据库中,数据压缩可以帮助节省存储空间和提高数据传输效率。本篇文章我就一起来看看关于MySQL数据压缩的相关内容。 一、为什么需要数据压缩 随着数据量的不断增长,数据库的存储空间需求也在不断增加。数据压缩…

【Blender Python】1.概述和基础使用

概述 众所周知,Blender是一款开源免费的3D建模软件(当然不限于3D建模)。在Blender中,可以使用其内置的Python解释器执行Python代码,用于程序化的生成网格以及其他内容。你可以基于此创建Blender插件。 这个系列就是快…

gets和puts

今天我们来学习一组新的函数 gets和puts,它们分别对应的是scanf和printf,但在功能和其它方面有着一些差异 1.gets函数 1.char*gets(char*str); 函数功能:简单来说就像上面的格式一样,给他一个地址(送快递总是要留一个…

Omron/TCP 通信过程

1. 首先 TCP 三次握手 2. 客户端向服务器申请节点地址 客户端向服务器发送一个包含Client Node Address字段的数据包 申请节点地址。由于客户端申请的时候还没有节点地址,因此该字段被置为0x00000000。 3. 服务器向客户端确认收到申请 服务器向客户端发送一个确认…

SQL第12课挑战题

1. 返回customers表中的顾客名称(cust_name)和Orders表中的相关订单号(order_num),并按顾客名称再按订单号对结果进行排序。实际上是尝试两次,一次使用简单的等联结语法,一次使用inner join. 2. 让上一题变得更有用一些…

【算法篇】回溯算法类(2)(笔记)

目录 一、LeetCode 题目 1. 子集II 2. 递增子序列 3. 全排列 4. 全排列 II 5. 重新安排行程 6. N皇后 7. 解数独 二、题目思路整理 一、LeetCode 题目 1. 子集II https://leetcode.cn/problems/subsets-ii/description/https://leetcode.cn/problems/subsets-ii/des…

Spring Cloud Netflix Eureka 注册中心讲解和案例示范

在微服务架构中,服务的发现和注册是至关重要的一环。Netflix Eureka 是一个在云端设计的服务注册与发现系统。它允许各个微服务将自身注册到注册中心,并在需要时发现其他服务,从而实现客户端负载均衡、服务容错以及动态扩展。本文将深入分析 …

【Vue】vue-admin-template项目搭建

准备 node环境 node:v16.12.0npm:8.1.0 vue-element-admin下载 官网:https://panjiachen.github.io/vue-element-admin-site/guide/ 我这边下载的是4.4.0版本的,使用其他版本可能会因为所需要的node和npm版本过低或过高导致异常…

C++/CLI编程-属性property的封装实现

1.前言 上一篇博文中提到过C/CLI典型使用场景之一是为native C编写的算法封装接口,进而在C#项目中调用。一种典型的应用是作为Wrapper封装层来封装C库的类和接口、做C/C#类型的转换,然后在C#应用程序中调用,开发便捷易用的应用程序。 C/CLI编…

Bellman-Ford算法和SPFA算法

Bellman-Ford算法 能够处理存在负边权的情况。 算法时间复杂度:O(n*m),n是顶点数,m是边数。 算法实现: 设s为起点,dis[v]即为s到v的最短距离,pre[v]为v前驱。w[j]是边j的长度,且j连接u、v。 dis[s] 0;dis[v] 0x3…

(Linux驱动学习 - 5).Linux 下 DHT11 温湿度传感器驱动编写

DHT11的通信协议是单总线协议,可以用之前学习的pinctl和gpio子系统完成某IO引脚上数据的读与写。 一.在设备树下添加dht11的设备结点 1.流程图 2.设备树代码 (1).在设备树的 iomuxc结点下添加 pinctl_dht11 (2).在根…

探索大型语言模型在文化常识方面的理解能力与局限性

介绍 论文地址:https://arxiv.org/pdf/2405.04655v1 近年来,大型语言模型(LLM)不仅被广泛应用于各个领域,而且通过大量的基准评估,证明它们能够理解人类所拥有的常识(Commonsense)…

FLUX的ID保持项目也来了! 字节开源PuLID-FLUX-v0.9.0,开启一致性风格写真新纪元!

之前的文章已经和大家介绍过字节开源的ID保持项目PuLID。随着FLUX模型的发布,PuLID也开源了 FLUX 版本的模型,不得不说FLUX的强大,两个月生态就赶上了SDXL。这次新发布PuLID-FLUX-v0.9.0模型,它为FLUX.1-dev提供了无需调整的ID定制…

简单部署vue+springboot项目

vue 参考博客 先将vue项目打包 npm run build 再创建项目文件夹front,在front中新建nginx.conf server {listen 80;server_name localhost;# 请求体的大小限制client_max_body_size 50m;# 日志文件存放地址access_log /var/log/nginx/host.access.log main;error…

嵌入式知识点复习(一)

国庆倒数第二天,进行嵌入式课堂测试的复习: 第一章 绪论 1.1 嵌入式系统的概念 嵌入式系统定义 嵌入式系统定位 嵌入式系统形式 嵌入式系统三要素 嵌入式系统与桌面通用系统的区别 1.2 嵌入式系统的发展历程 微处理器的演进历史 单片机的演进历史 …

学习使用Cube软件

一、点亮LED灯 1、新建项目 File → New → STM32 Project搜索芯片信号项目名称 弹窗点击Yes 2、点亮LED 配置GPIO为输出模式 细化配置 保存(ctrl S)自动生成代码 手动生成代码 选择跳转到代码页面

【d60】【Java】【力扣】509. 斐波那契数

思路 要做的问题:求F(n), F(n)就等于F(n-1)F(n-2),要把这个F(n-1)F(n-2)当作常量,已经得到的值, 结束条件:如果是第1 第2 个数字的时候,没有n-1和n-2,所以…

系统设计,如何设计一个秒杀功能

需要解决的问题 瞬时流量的承接防止超卖预防黑产避免对正常服务的影响兜底方法 前端设计 利用 CDN 缓存静态资源,减轻服务器的压力在前端随机限流按钮防抖,防止用户重复点击 后端设计 Nginx 做统一接入,进行负载均衡与限流用 sentinel 等…