杂记 | 使用FRP搭建内网穿透服务

news2024/7/7 14:55:45

文章目录

  • 01 需求场景
  • 02 项目地址
  • 03 文件介绍
  • 04 编写配置文件
    • 4.1 编写frps.ini
    • 4.2 编写frpc.ini
  • 05 测试


01 需求场景

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

02 项目地址

GitHub:https://github.com/fatedier/frp
releases页面:https://github.com/fatedier/frp/releases
根据自己的情况下载运行文件,我下载的是图中的2项。
在这里插入图片描述
在这里插入图片描述
下载好后,解压缩。

03 文件介绍

解压后可以看到这样一些文件:
在这里插入图片描述
图左侧是Linux系统的文件,右侧是windows版。
其中:
frps字样的文件是用在服务端,即远程的公网服务器,结尾的字母s是server的意思。
frpc字样的文件是用在客户端,即本地的家用服务器,结尾的字母c是client的意思。
因此,在frp_0.49.0_linux_amd64中挑选出这些文件,上传到云服务器:frps frps.ini frps_full.ini
frp_0.49.0_windows_amd64中挑选出这些文件,保留在本地:frpc.exe frpc.ini frpc_full.ini

04 编写配置文件

本文以HTTP穿透为例,其他类型穿透可参考官方文档:https://gofrp.org/docs/
注意:在实际编写配置文件时,每一行配置中的注释及注释前的空格要删除掉!
例如:
不要这样写:bind_port = 7000 # 服务器接收客户端连接的端口
而要这样写:bind_port = 7000
不然后面所有的内容都会被视为配置的一部分,至少在当前最新的0.49.0版本有这个问题。

4.1 编写frps.ini

首先编写位于云服务器端的frps.ini文件。

[common]
bind_port = 7000				# 服务器接收客户端连接的端口
dashboard_port = 7500			# 后台管理端口
dashboard_user = admin			# 后台登录用户名
dashboard_pwd = admin			# 后台登录密码

vhost_http_port = 80			# http穿透端口(公网服务器的端口)
vhost_https_port = 443			# https穿透端口(公网服务器的端口)

token = abc123					# 身份验证令牌 frpc要和frps一致

log_file = /root/frp/frps.log	# 日志路径
log_level = info				# 日志级别
log_max_days = 3				# 日志文件保留天数

authentication_timeout = 0		# 身份验证超时时间 0表示不验证
subdomain_host = xxx.com		# 注册的主域名 不带前缀 没有域名就写公网ip

启动服务器端的服务

# 在文件所在的目录下输入命令启动
./frps -c ./frps.ini &

完成后可通过http://xxx.com:7500访问后台管理页面,注意发放行相关端口。
在这个示例配置中,需要放行的端口:7000、7500、80、443。

4.2 编写frpc.ini

然后编写本地的frpc.ini文件。

[common]
server_addr = xxx.xxx.xxx.xxx	# 服务器的公网ip地址
server_port = 7000				# 客户端与服务器连接的端口

token = abc123					# 身份验证令牌 frpc要和frps一致
authentication_timeout = 0		# 身份验证超时时间 0表示不验证

[web]							# 添加web节点
type = http						# 访问类型为http
local_ip = 127.0.0.1			# 本地设备ip(*注)
local_port = 8080				# 本地访问的端口
custom_domains = xxx.com		# 指向远程服务器的域名 没有域名就写服务器公网ip

*注:如果是本机,local_ip可以省略不写,或者写127.0.0.1,或者写本机在本地内网的ip,通常为 192.168.xxx.xxx
启动客户端服务:
打开Windows的PowerShell,cd到在frpc.exe所在文件夹。(用PowerShell不用cmd)
输入启动命令:./frpc.exe -c ./frpc.ini即可启动。
配置文件在同一文件夹下且使用默认名称的话,启动命令简化为./frpc.exe
在这里插入图片描述
出现success,表示启动成功!

05 测试

假设本地有一nginx页面,通过本机输入http://127.0.0.1:8080可访问到。
开启内网穿透后,输入http://xxx.com:80http://公网ip:80,查看是否能访问到。(http协议80端口可以省略)
其他类型的内网穿透请参考官方文档:https://gofrp.org/docs/
在这里插入图片描述

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

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

相关文章

AN10833-MIFARE type identification procedure.pdf

1.2范围 本文档描述了如何区分MIFARE接口卡IC系列的成员。ISO/IEC 14443-3描述了类型A的初始化和防冲突程序,该程序为所有MIFARE卡提供卡类型信息。 MIFARE卡与ISO/IEC 14443-3兼容。因此,已经存在的应用可以很容易地扩展到分别使用较新的MIFARE芯片和所…

017、数据库管理之监控

监控工具 TiDB数据库的监控体系TiDB Dashboard数据库监控系统数据流转监控系统访问地址 报警系统报警级别指标系统常用监控指标Service Port Status 常用监控指标PD的常用监控指标TiDB-Server的常用监控指标TiKV 的常用监控指标Dashboard的常用指标 实验: 通过监控工…

Flink 学习六 Flink 窗口计算API

Flink 学习六 Flink 窗口计算API 1.窗口 (window)概念和分类 窗口 window 是处理无限流的核心就是把无界的数据流,按照一定的规则划分成一段一段的有界的数据流(桶),然后再这个有界的数据流里面去做计算; 2.分类体系 2.1 滚动窗口 相邻窗口之间是没有数据重合 window 大小…

Geocomputation (2)Attribute data operations

Geocomputation (2)Attribute data operations 属性数据操作 来源:https://github.com/geocompx/geocompy 1.准备 #| echo: false import pandas as pd import matplotlib.pyplot as plt pd.options.display.max_rows 6 pd.options.disp…

chatgpt赋能python:Python搜索函数:快速、高效的搜索利器

Python 搜索函数:快速、高效的搜索利器 如果你经常使用 Python 编程语言,那么你应该知道搜索数据集的重要性。用于搜索的函数在 Python 中是关键而常用的工具。Python 搜索函数是一种高效、快速的搜索利器,它可以让你轻松地找到你需要的数据…

C生万物 | 聊聊枚举与联合体的用法

文章目录 枚举1、枚举类型的定义2、枚举的使用3、枚举的优点 联合体1、联合体类型的定义2、联合体的特点3、联合体大小的计算一道经典面试题:判断当前计算机的大小端存储 总结与提炼 本文,我们就来谈谈C语言中的枚举和联合体,因为这两块知识点…

6月21日第壹简报,星期三,农历五月初四

6月21日第壹简报,星期三,农历五月初四坚持阅读,静待花开1. 中国LPR“对称降息”10个基点,房贷迎今年首次“降息”。2. 孟加拉国正式申请加入金砖国家,中方:欢迎更多伙伴早日加入金砖大家庭。3. 历时近2年波…

7、DuiLib动态创建控件

文章目录 1、动态创建控件2、纯代码方式动态创建控件3、基于构建好的 XML 动态创建控件(CDialogBuilder) 1、动态创建控件 在实际业务场景中,并不是所有界面元素都可以通过 XML 预先定义好的,有时候我们需要根据数据库或者服务器…

【计算机组成原理】主存储器

目录 一、存储体系基本概念 二、主存储器的基本组成 三、SRAM和DRAM 四、只读存储器ROM 五、主存储器与CPU的连接 六、双端口RAM和多模块存储器 一、存储体系基本概念 一个二进制位(bit)是构成存储器的最小单位;字节(8bit&…

总结uwsgi的安装、配置与设置开机自启

一、uwsgi的安装与测试 1、uwsgi安装 pip install uwsgi# 查看uwsgi版本号 uwsgi –version 如果服务器安装anconda,有可能安装不上去,建议使用以下命令: conda install -c conda-forge uwsgi 2、测试uwsgi 创建test.py文件,并写下以下…

C++基础(2)——函数高级和函数对象

前言 本文主要介绍了C中函数高级相关的内容 3.1:函数默认参数 在函数定义的时候可以给形参赋初值,如果函数在调用的时候有传入参数,就使用传入的参数,如果没有就用默认的。 注意事项 1:如果某个参数有了默认值&…

Scilab安装与入门

说明:Scilab主要是用于信号处理,我本次用它来进行滤波仿真 地址: Scilab 2023.1.0 | Scilab https://www.scilab.org/download/scilab-2023.1.0 下载好了,进行安装看看 下一步,接受许可协议 选择安装路径到D盘下了…

chatgpt赋能python:Python数值互换:让你的编程更加高效

Python数值互换:让你的编程更加高效 Python是一种高级编程语言,其灵活性和易于学习的特点使其在科学计算、数据分析和人工智能等领域变得非常流行。作为Python的用户,很多时候你可能需要将数值类型之间进行转换,这样可以提高你的…

第6章 面向对象

第6章 面向对象 6.1. Scala包 ​ 包的命名 ​ 包的导入 Scala中基本的import导入语法和Java完全一致 import java.util.List import java.util._ // Scala中使用下划线代替Java中的星号Java中import导入的语法比较单一,Scala对此进行扩展,Scala中的im…

Cadence Allegro PCB设计88问解析(二十八) 之 Allegro中使用Anti Etch分割平面

一个学习信号完整性仿真的layout工程师 最近看到关于Anti Etch的设置,因为本人之前在layout设计是使用过这个命令。后来去到别的公司就不用了,从网上看到说这个命令是用来负片设计的。在这里在说下正片和负片的概念: 正片:是指在a…

Git团队代码规范

Git团队代码规范 1. 分支的定义2. 约束2.1 远程命名2.2 拉取代码2.3 新建Issues2.3 代码规范2.4 MR提交 本文章讲解Git代码管理中团队应该遵守的一些规则,让大家可以愉快的一起开发工作。 本篇文章需要结合Git代码提交规范-实践篇 一起食用哟~ 上一节我们已经讲了如…

Vue----Vue属性绑定

【原文链接】Vue----Vue属性绑定 通过v-bind:xxx 的方式即可实现Vue的属性绑定&#xff0c;比如如下代码&#xff0c;为div标签增加class属性&#xff0c;class的属性值通过msg变量提供 <template><div v-bind:class"msg">测试属性绑定</div> &l…

Java XML

目录 XML简介 XML文档结构 XML组成部分 XML规范 解析XML DOM4J解析实战 1.XML简介 &#xff08;1&#xff09;定义&#xff1a;可扩展标记语言 &#xff08;2&#xff09;特点&#xff1a;跨平台&#xff0c;跨语言/系统 &#xff08;3&#xff09;作用&#xff1a;传…

windows编译运行es源码1

一. 基础搭载环境 win10 jdk 11 \ jdk8 idea 2022 gradle 8.1.1 【建议4.5.1以上】 elasticsearch 7.8.0 源码及安装包 二. 安装gradle 1. 官网下载链接&#xff1a;https://gradle.org/releases/ 2. 解压设置环境变量 (1) GRADLE_HOME 环境变量指向你的 Gradle…

利用jmeter java sample端口转发实现对远程数据库的压力测试

1 需求背景 对数据库进行压力测试时&#xff0c;需要模拟同一时间大量的sql请求发送&#xff0c;借助于jmeter的 sql请求可以实现&#xff0c;但是对RDS来说&#xff0c;需要进行端口映射(跳板机)访问远程数据库,对于单线程手工测试来说&#xff0c;可以直接通过CRT进行端口跳转…