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

文章目录

  • 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.mzph.cn/news/139927.shtml

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

相关文章

Liunx命令汇总

一.用户相关命令 1.1账号管理 创建用户: useradd (选项) 用户名用户口令: passwd (选项) 用户名修改用户: usermod 选项 用户名删除用户: userdel (选项) 用…

加班把数据库重构完毕

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

elastic-job 完结篇

一 elastic-job 1.1 案例场景分析 1.设置4个分片,10秒执行一次。 分片弹性扩容缩容机制测试: 测试1:测试窗口1不关闭,再次运行main方法查看控制台日志,注意修改application.properties中的 server.port&#xf…

Vant 移动端UI 组件自动引入

Vue项目中安装Vant # Vue 3 项目,安装最新版 Vant npm i vant 组件按需引入配置 Vant按需引入- - -安装:unplugin-vue-components 插件 unplugin-vue-components 插件可以在Vue文件中自动引入组件(包括项目自身的组件和各种组件库中的组件&…

7.运算符

目录 一.算数运算符 1、算术运算符 2、比较运算符 1、等号()用来判断数字、字符串和表达式是否相等。 2、安全等于运算符(<>) 3、不等于运算符(<>或者!) 4、小于或等于运算符(<) 5、小于运算符(<) 6、IS NULL(IS NULL)&#xff0c;IS NOT NULL 运算…

2352 智能社区医院管理系统JSP【程序源码+文档+调试运行】

摘要 本文介绍了一个智能社区医院管理系统的设计和实现。该系统包括管理员、护工和医生三种用户&#xff0c;具有社区资料管理、药品管理、挂号管理和系统管理等功能。通过数据库设计和界面设计&#xff0c;实现了用户友好的操作体验和数据管理。经过测试和优化&#xff0c;系…

WorkPlus Meet:局域网内部使用的高效视频会议系统

随着全球化和远程办公的趋势&#xff0c;视频会议已成为现代企业和机构不可或缺的沟通工具。而现在&#xff0c;大多数政企单位或者涉密强的企业&#xff0c;都会使用局域网部署的音视频会议系统&#xff0c;提供更高的安全性和隐私保护。因为音视频会议中可能涉及到公司机密和…

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

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

C++: 内存管理 (new / delete)

文章目录 一. C/C 内存分布二. C 语言中动态内存管理方式: malloc/calloc/realloc/free三. C内存管理方式1. new / delete 操作内置类型2. new / delete 操作自定义类型 四. operator new 与 operator delete 函数五. new 和 delete 的实现原理1. 内置类型2. 自定义类型 六. 定…

【中间件篇-Redis缓存数据库02】Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

Redis高级特性和应用(慢查询、Pipeline、事务、Lua) Redis的慢查询 许多存储系统&#xff08;例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间&#xff0c;当超过预设阀值,就将这条命令的相关…

互联网大厂招兵买马开发鸿蒙应用,移动开发的春天又来了?

日前&#xff0c;美团拟开发鸿蒙系统APP的多个相关岗位正招聘开发人员引发业内关注。事实上&#xff0c;鸿蒙开发者已经成为京东、WPS、凤凰新闻、微博等互联网大厂争相招聘的人才&#xff0c;且招聘岗位众多。也就是说&#xff0c;这些公司正在加快鸿蒙化开发&#xff0c;为鸿…

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

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

【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法2】

文章目录 概要Gray-world AlgotithmGround Truth Algorithm结论&#xff1a; 概要 随着数字图像处理技术的不断发展&#xff0c;白平衡算法成为了图像处理中一个关键的环节。白平衡的目标是校正图像中的颜色偏差&#xff0c;使得白色在图像中呈现真实的白色&#xff0c;从而提…

利用MSF设置代理

1、介绍&#xff1a; 通过MSF拿到一个机器的权限后&#xff0c;通过MSF搭建socks代理&#xff0c;然后通内网。 拿到目标权限&#xff0c;有很多方法&#xff0c;比如&#xff1a;①ms17-010 ②补丁漏洞 ③MSF生成后门 在此直接使用MSF生成后门 MSF中有三个代理模块&#x…

【ATTCK】MITRE Caldera - 测试数据泄露技巧

CALDERA是一个由python语言编写的红蓝对抗工具&#xff08;攻击模拟工具&#xff09;。它是MITRE公司发起的一个研究项目&#xff0c;该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的&#xff0c;能够较真实地APT攻击行为模式。 通过CALDERA工具&#xff0c;安全…

【函数讲解】pygmo中的函数 fast_non_dominated_sorting() + 利用支配关系,学习一个SVM分类器,将解分为两类

这个函数是用来执行非支配排序的&#xff0c;可以分层构建Pareto&#xff0c;并返回每一层的解以及每个解支配其他解的索引、解被其他解支配的次数、解所在的非支配层级。这个函数对这些解进行非支配排序&#xff0c;并返回四个数组&#xff1a;ndf, dl, dc, 和 ndr。 ndf (Non…

基于单片机设计的智能风扇(红外线无线控制开关调速定时)

一、项目介绍 在炎热的夏季&#xff0c;风扇成为人们室内生活中必不可少的电器产品。然而&#xff0c;传统的风扇控制方式存在一些不便之处&#xff0c;比如需要手动操作开关、无法远程控制和调速&#xff0c;以及缺乏定时功能等。为了解决这些问题&#xff0c;设计了一款基于…

红黑树-RBTree

目录 1. 红黑树的概念2. 红黑树的性质3. 结点的定义4. 结点的插入5. 整体代码 1. 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式…

长安链可验证数据库,保证数据完整性的可信存证方案

近日&#xff0c;长安链发布“可验证数据库”实现了链上链下协同存储及数据完整性保证&#xff0c;显著提升长安链存储能力的可扩展性。 可信存证是联盟链最典型的应用场景&#xff0c;被广泛应用在司法、工业、农业、贸易等领域。联盟链的存证应用主要分为两个阶段&#xff1…

通过easyexcel导出数据到excel表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出&#xff0c;使用之前easyui构建的歌曲列表crud应用&#xff0c;添加一个导出按钮&#xff0c;点击的时候直接连接后端接口地址&#xff0c;在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…