杂记 | 使用FRP搭建内网穿透服务(新版toml配置文件,搭配反向代理食用)

news2024/11/17 7:39:38

文章目录

  • 01 需求与回顾
  • 02 下载程序包
  • 03 编辑.toml文件
    • 3.1 编辑frps.toml
    • 3.2 编辑frpc.toml
  • 04 启动服务
    • 4.1 启动服务端
    • 4.2 启动客户端
  • 05 配置反向代理(可选)
  • 06 windows设置为默认启动(可选)
    • 6.1 创建启动脚本
    • 6.2 设置为开机自启


01 需求与回顾

数月前我写过一篇《使用FRP搭建内网穿透服务》的博客,当时用的frp版本为0.49.0,如今随着版本升级,配置方式发生了变化。官网文档地址也发生了变化。

  • 需求场景
    1、有一台云服务器,Linux系统
    2、云服务器有公网ip,公网可以访问
    3、本地电脑是家用笔记本,Windows操作系统
    4、本地电脑没有公网ip,公网无法访问
    需求:将云服务器搭建为一台内网穿透服务器,实现通过外网访问家用电脑(网页)的功能。且即使没有域名也可通过公网ip访问。

  • 项目地址
    GitHub:https://github.com/fatedier/frp
    releases页面:https://github.com/fatedier/frp/releases
    官方文档:https://gofrp.org/zh-cn/

02 下载程序包

前往GitHub Releases页面下载:

在这里插入图片描述
根据自己实际情况选择,我的是x64的windows系统,服务器也是x64架构。选择图中两项。

解压后,在windows端保存frpcfrpc.toml文件,在Linux端保存frpsfrps.toml文件。

03 编辑.toml文件

3.1 编辑frps.toml

服务器端,编辑frps.toml文件:

# frp服务的特定端口,防火墙也需放开该端口
bindPort = 7000
# 自定义的监听的端口,所有对服务器该端口访问将被转发到本地内网,做了反向代理可不处理防火墙放行
vhostHTTPPort = 86

3.2 编辑frpc.toml

客户端,编辑frpc.toml文件:

# 服务器的公网ip
serverAddr = "xxx.xxx.xxx.xxx"
# 7000端口 与frps.toml一致
serverPort = 7000

[[proxies]]
# 自定义名称
name = "web"
# type这里写http
type = "http"
# 本地端口,例如本地启动的服务需要使用8000端口访问,这里就写8000
localPort = 8000
# 服务器的监听端口,与frps.toml一致
remotePort = 86
# 域名或服务器的公网ip,我做了反向代理,这里写的域名
customDomains = ["xxx.xxx.xxx.xxx"]

04 启动服务

4.1 启动服务端

  • 直接启动

    服务器端,传统的启动方式是直接敲命令:

    # 先cd到frps所在目录
    ./frps -c ./frps.toml &
    

    这么写,比较麻烦,而且如果要停止进程也比较麻烦,建议采用构建成服务的方式。

  • 以服务方式启动(推荐)

    安装systemd,通常情况下系统都带得有,没有的情况下使用如下命令安装。

    # 使用 yum 安装 systemd(CentOS/RHEL)
    yum install systemd
    
    # 使用 apt 安装 systemd(Debian/Ubuntu)
    apt install systemd
    

    创建frps.service服务

    # 创建并编辑该文件
    sudo vim /etc/systemd/system/frps.service
    

    写入内容

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target
    
    [Service]
    Type = simple
    # 启动命令,改为实际存放frps的路径
    ExecStart = /path/to/frps -c /path/to/frps.toml
    
    [Install]
    WantedBy = multi-user.target
    

    以服务的方式管理frps

    # 启动frp
    sudo systemctl start frps
    # 停止frp
    sudo systemctl stop frps
    # 重启frp
    sudo systemctl restart frps
    # 查看frp状态
    sudo systemctl status frps
    # 设置为开机自启
    sudo systemctl enable frps
    

4.2 启动客户端

服务端启动之后,在windows客户端的frpc所在目录下,打开cmd命令行,输入命令:

./frpc.exe -c ./frpc.toml

即可启动客户端服务,此时就实现了内网穿透。
假设本地有一个服务需要使用http://127.0.0.1:8000访问,经过内网穿透后,访问http://xxx.xxx.xxx.xxx:86即可。

05 配置反向代理(可选)

使用npm做的反向代理,其他情况的反代参考即可。
在这里插入图片描述
修改图中红框处,此外,还需要做一些额外的设置才能访问。

在这里插入图片描述

 location / {
    # 内网ip及端口
    proxy_pass http://10.0.8.16:86;
    # 这里写frpc.toml中配置的域名或公网ip,即配置内容最下面那行,我写的域名
    proxy_set_header Host xxx.xxx.xxx.xxx;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

06 windows设置为默认启动(可选)

6.1 创建启动脚本

在frpc所在目录下新建一个run.cmd脚本,并写入以下内容:

:@echo off
:%1(start /min cmd.exe /c %0 :&exit)
cd "C:\Users\xxx\Desktop\frp"
ping -n 10 127.1>nul
frpc.exe -c frpc.toml

其中第3行需要替换成自己的frpc所在目录的绝对路径。
第3行是做了一个延时执行,避免刚开机时网络不稳定时连接失败造成脚本退出。

6.2 设置为开机自启

Win+Q搜索“任务计划程序”

打开“任务计划程序”。

  1. 在“操作”菜单中,选择“创建基本任务…”。
  2. 按照向导设置任务。在“触发器”步骤中,选择“当计算机启动时”。
  3. 在“操作”步骤中,选择“启动程序”,然后浏览选择您的批处理文件。
  4. 在“完成”步骤之前,勾选“打开属性对话框以进行进一步编辑”。
    在属性对话框中,可以选择更多选项,比如“不管用户是否登录都要运行”和“以最高权限运行”。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

【Spring Cloud】声明性REST客户端:Feign

Spring Cloud Feign ——fallback 服务降级 1. Feign 简介2. Feign 的基础使用2.1 普通 HTTP 请求2.2 Feign 远程调用上传文件接口 1. Feign 简介 Feign 是一个声明式的 HTTP 客户端,它简化了编写基于 REST 的服务间通信代码的过程。在 Spring Cloud 中&#xff0c…

你一定要学会的Java语法 -- 【继承】

书接上回,我们已经学完了类和对象,今天内容可能有一点难,相信自己能跨过这道坎。 目录 一. 继承 1.什么是继承 2. 继承的概念 3. 继承的语法 4.父类成员访问 子类和父类成员变量同名 子类和父类成员方法同名 5.super关键字 6.子类构…

POJ 3254 Corn Fields 状态压缩DP(铺砖问题)

一、题目大意 我们要在N * M的田地里种植玉米,有如下限制条件: 1、对已经种植了玉米的位置,它的四个相邻位置都无法继续种植玉米。 2、题目中有说一些块无论如何,都无法种植玉米。 求所有种植玉米的方案数(不种植也…

Vector - CANoe - Vector Hardware Manager基础介绍

经常使用CANoe的人都知道,我们之前使用配置VN系列硬件通道的时候使用的是Vector Hardware Config,非常的方便,不过在Vector Driver Setup驱动版本大于22.14后,为了更好的适用车载以太网相关的配置,以及各个配置之间继承…

kubenetes-kubelet组件

一、kubelet架构 每个节点都运行一个kubelet进程,默认监听10250端口,kubelet作用非常重要,是节点的守护神。 接收并执行 master发来的指令。管理Pod及Pod中的容器。每个kubelet进程会在API Server 上注册节点自身信息,定期向mast…

Java学习_对象

对象在计算机中的执行原理 类和对象的一些注意事项 this关键字 构造器 构造器是一种特殊的方法 : 特殊之处在于,名字必须与所在类的名字一样,而且不能写返回值类型 封装 封装的设计规范:合理隐藏、合理暴露 实体类 成员变量和局部变量的区别 …

程序员的护城河:职业发展的关键元素

目录 1. 技术深度与广度 2. 项目经验与实际操作 3. 沟通与团队协作 4. 持续学习与自我更新 5. 社区参与与开源贡献 6. 创新思维与解决问题的能力 7. 职业规划与自我管理 结语 在科技日新月异的今天,程序员的竞争已经不再仅仅依赖于技术水平,而是…

Citespace的使用

CiteSpace CiteSpace的相关介绍运行CiteSpace CiteSpace的相关介绍 CiteSpace作为一款优秀的文献计量学软件,能够将文献之间的关系以科学知识图谱的方式可视化地展现在我们面前。简单来说,面对海量的文献,CiteSpace能够迅速锁定自己需要关注…

使用openvc进行人脸检测:Haar级联分类器

1 人脸检测介绍 1.1 什么是人脸检测 人脸检测的目标是确定图像或视频中是否存在人脸。如果存在多个面,则每个面都被一个边界框包围,因此我们知道这些面的位置 人脸检测算法的主要目标是准确有效地确定图像或视频中人脸的存在和位置。这些算法分析数据…

如何从零开始手写一个消息中间件(从宏观角度理解消息中间件的技术原理)

如何从零开始手写一个消息中间件(从宏观角度理解消息中间件的技术原理) 什么是消息中间件消息中间件的作用逐一拆解消息中间件的核心技术消息中间件核心技术总览IOBIONIOIO多路复用AIOIO多路复用详细分析selectpollepoll Java中的IO多路复用 协议序列化消…

阿里云严重故障,影响阿里系、淘宝、饿了么、语雀等都崩了...

作者:JavaPub 编程学习一条龙:http://luxian.javapub.net.cn 就在一年一度的双十一剁手节火热进行时,阿里云服务出现了严重故障。 关键是前不久刚发生了语雀事件,不了解的朋友阅读这里 阿里语雀突发P0级事故,一度崩溃…

ASP.NETWeb开发(C#版)-day1-C#基础+实操

目录 .NET实操:创建项目执行 C#基础语法数据类型变量实操001_变量如何在一个解决方案 中创建另一个项目实操002结构实操003-if else实操004-多分支多行注释按钮实操:循环 面向对象基础如何在同一个项目下创建新的.cs文件实操-类的定义与访问实操-练习实操…

基于springboot实现驾校管理系统项目【项目源码】

基于springboot实现驾校管理系统演示 JAVA简介 JavaScript是一种网络脚本语言,广泛运用于web应用开发,可以用来添加网页的格式动态效果,该语言不用进行预编译就直接运行,可以直接嵌入HTML语言中,写成js语言&#xff0…

加班把数据库重构完毕

加班把数据库重构完毕 本文的数据库重构是基于 clickhouse 时序非关系型的数据库。该数据库适合存储股票数据,速度快,一般查询都是 ms 级别,不需要异步查询更新界面 ui。 达到目标效果:数据表随便删除,重新拉数据以及指…

基于C#+WPF编写的调用讯飞星火大模型工具

工具源码:https://github.com/lishuangquan1987/XFYun.SparkChat 工具效果截图: 支持流式输出: 其中ApiKey/ApiSecret/AppId需要自己到讯飞星火大模型官网去注册账号申请,免费的。 申请地址:https://xinghuo.xfyun.cn/ 注册之…

NetSuite 固定资产报表自定义原理及应用

NetSuite固定资产模块一直处于功能迭代更新中,目前23.2的版本能够支持报表的局部自定义,比如增加原值或已折旧期间,甚至固定资产自定义字段等。但是当我们在实际项目中,会遇到一些挑战,例如: 固定资产原值…

Java Web——前端HTML入门

目录 HTML&CSS3&JavaScript简述 1. HTML概念 2. 超文本 3. 标记语言 4. HTML基础结构 5. HTML基础词汇 6. HTML语法规则 7. VS Code 推荐使用的插件 8. 在线帮助文档 HTML&CSS3&JavaScript简述 HTML 主要用于网页主体结构的搭建,像一个毛坯…

【FAQ】Gradle开发问题汇总

1. buildSrc依赖Spring Denpendency时报错 来自预编译脚本的插件请求不能包含版本号。请从有问题的请求中删除该版本,并确保包含所请求插件io.spring.dependency-management的模块是一个实现依赖项 解决方案 https://www.5axxw.com/questions/content/uqw0grhttps:/…

怎么做到高性能网络IO?

为什么要做高性能网络IO。主要是解决c10,c10M问题 最开始的时候我们走的内核协议栈,走内核协议栈其实性能比较低,因为我们之前介绍的时候需要拷贝两次 但是我们采用用户态协议栈可以少拷贝一次,可以大大提高效率, 步骤…

阿里系APP崩了?回应来了!

最近,阿里云遭遇了一场可怕的疑似故障,引起了广泛的关注和热议。各种消息纷传,阿里云盘崩了,淘宝又崩了,闲鱼也崩了,连钉钉也不幸中招。这一系列故障让人不禁发问:阿里系的APP都崩了&#xff0c…