linux下frp实现内网穿透

news2024/11/15 15:27:39

frp简介

frp是什么?
frp采用Golang语言编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。
frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP,UDP,HTTP,HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。
市面上一些主流的内网穿透工具有:Ngrok,Natapp,花生壳,Ssh、autossh,Frp,Lanproxy,Spike。

这里介绍使用frp工具。

安装frp

1.准备

我的frp是在局域网内实现的,如要实现公网,可以参考别的教程

一台服务器,服务器端,如IP为:192.168.80.133.
一台客户端服务器,客户端,如IP为:192.168.80.132.

2:下载解压安装包

gitlab地址:https://github.com/fatedier/frp,可以在 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。
在这里插入图片描述
找到自己Linux合适的版本,下载,主流Linux版本基本上都是amd64。

#下载
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
#解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
#进入目录
cd frp_0.44.0_linux_amd64/

进入文件夹,有两个名称文件frpc(c结尾代表client)和frps(s结尾代表server),分别是服务端程序和服务端配置程序。

需要将frpc拷贝至客户端,即内网服务器,或者在客户端直接下载也可以,客户端只需要使用frpc文件即可。

在这里的话,我就直接在两台linux上都下载了frp,方便互传

三:配置服务器端和客户端,及启动

1:配置服务器端

这里是为服务端配置frp 只关注frps和frps.ini即可,原始最简单配置为。

cat frps.ini
[common]
#隧道通道,服务器和客户端通过此端口通讯
bind_port = 7000

2:配置客户端

只关注frpc和frpc.ini即可,修改frpc.ini。

vim frpc.ini

原始配置已经有ssh的端口配置,所以修改server_addr为服务器IP即可。

[common]
server_addr = 123.32.12.32
server_port = 7000

[ssh]
type = tcp
#本机IP
local_ip = 127.0.0.1
#本机需要映射的端口22
local_port = 22
#远程服务器映射的端口为6000
remote_port = 6000

3:分别启动服务器端和客户端

注:服务器,如有防火墙,请开启7000端口和有需要的端口。

服务器运行启动:

./frps -c frps.ini

客户端运行启动:

./frpc -c frpc.ini

可以看到提示,都已经启动成功
在这里插入图片描述
测试ssh连接,这里直接使用linux的ssh工具:
在这里插入图片描述
浏览器打开web管理界面,http://192.168.80.133:7500/,可查看端口映射相关情况。
其他更多参数参考中文文档:https://gofrp.org/docs/

4:后台启动

当然对于正式环境,可以配置后台启动,并报存日志输出到相关文件。
服务端:

nohup  ./frps -c frps.ini > /usr/local/frp/frp.log 2>&1  &

客户端:

nohup ./frpc -c frpc.ini > /usr/local/frp/frp.log 2>&1  &

下面设置frp服务开机自启:

这里只演示客户端单向连接服务端,如需双向连接,请移步其他博客

客户端设置:

进入文件夹:

cd /etc/systemd/system

创建启动文件:

vim frp.service

编写启动文件,其中启动路径是自己的路径:

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
ExecReload=/usr/local/frp/frps reload -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target

保存退出之后,设置开机自启:

systemctl start frp.service
systemctl enable frp.service

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

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

相关文章

Android开发之Fragment

Fragment可以看作一种灵活的子Activity,其依附于Activity运行。一个Activity下可以依附多个Fragment,从而实现一个页面多个窗口,而同一个Fragment也能被多个Activity复用,因此Fragment是Android开发中相当重要的板块。 文章目录 …

Docker-compose容器编排

Docker-Compose介绍 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关…

Visual Studio 2022 程序员必须知道高效调试手段与技巧(中)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 调试的时候查看程序当前信息💭 查看临时变量的值💭 查…

实验报告-Sublime配置默认语法,以配置Verilog语法为例

实验报告-Sublime配置默认语法,以配置Verilog语法为例 1,下载Verilog语法环境2,Sublime配置语法工作环境,以Verilog语法环境为例。3,打开一个新的Sublime,验证编辑器配置Verilog为默认语法成功!4,Sublime汉化1,下载Verilog语法环境 参考文献: 1,Sublime Text 4加载…

29.Git版本控制工具

1.Git简介 Git是一开源的分布式版本控制系统,提供了存储代码、管理版本历史、分支和合并等功能。 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。它的主要目的是跟踪和记录软件开发过程…

【2500. 删除每行中的最大值】

来源:力扣(LeetCode) 描述: 给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。 执行下述操作,直到 grid 变为空矩阵: 从每一行删除值最大的元素。如果存在多个这样的值,删除其…

手把手教你写代码——基于控制台的通讯录管理系统(单表)

栏目介绍 本栏目专为入门java学习者设计的一些简单的入门项目 功能介绍 本项目为简单的基于控制台的通讯录管理系统,所需要的环境仅仅为jdk以及mysql(版本不限)!只有一个简单的eclipse软件以及我们的mysql可视化工具(视…

企业网关:打开商业大门的关键

企业网关:打开商业大门的关键 在当今数字化时代,企业网关的重要性变得越来越明显。作为连接企业内外的关键枢纽,企业网关不仅提供了安全可靠的网络连接,还为企业提供了更高效的业务运营和更好的客户体验。本文将深入探讨企业网关…

Vue-路由

一、目标 能够说出前端路由工作的过程能够知道如何在vue3中配置路由能够知道如何使用嵌套路由能够知道如何实现动态路由匹配能够知道如何使用编程式导航能够知道如何使用导航守卫 二、目录 前端路由的概念与原理vue-router的基本使用vue-router的高级用法后台管理案例 前端…

linux下的questasim安装和与vivado的关联

一、questasim安装 参考链接 IC验证工具:Ubuntu下Questasim10.7安装(64bit)全攻略 参考2 易特创芯 linux环境下questasim 10.7的安装总结_limanjihe的博客-CSDN博客 前面操作参照的第一个链接,后面激活文件参考的第二个 另外…

JavaScript 常用数组方法之数组扁平化「赶紧收藏」

一、什么是数组扁平化 数组扁平化,就是将一个复杂的嵌套多层的数组,一层一层的转化为层级较少或者只有一层的数组。 比如: // 多维数组 var arr [1,2,[3,4,5,[6,7,8],9],10,[11,12]]; // 数组扁平化 [1,2,3,4,5,6,7,8,9,10,11,12]二、实现…

关于在Python的for循环中改变列表的值问题探究

案例一: def test():a [1, 2]for i in a:print(i, id(a))if i 5:breaka [a[0]2, a[1]2] 输出: 1 4313456192 2 4313269056 解释: 在for循环语句中的变量a使用的内存地址为4313456192,这个地址以及存储的值不会因为a的重新赋…

ceph-mon运行原理分析

一、流程:ceph-deploy部署ceph-mon组建集群 1.ceph-deploy部署ceph-mon的工作流程及首次启动 1)通过命令创建ceph-mon,命令为:ceph-deploy create mon keyring def mon(args):if args.subcommand create:mon_create(args)elif…

【Jenkins系列】-Pipeline语法全集

Jenkins为您提供了两种开发Pipeline的方式:脚本式和声明式。 脚本式流水线(也称为“传统”流水线)基于Groovy作为其特定于域的语言。而声明式流水线提供了简化且更友好的语法,并带有用于定义它们的特定语句,而无需学习…

金融行业软件测试面试题及其答案

下面是一些常见的金融行业软件测试面试题及其答案: 1. 什么是金融行业软件测试? 金融行业软件测试是针对金融领域的软件系统进行验证和确认的过程,旨在确保软件在安全、稳定、可靠和符合法规要求的条件下运行。 2. 解释一下金融软件中的风险…

golang,gin框架的请求参数(一)--推荐

golang,gin框架的请求参数(一) gin框架的重要性不过多的强调,重点就gin使用中的参数传递,获取进行梳理文件,满足使用需求。 获取前端请求参数的几种方法: 一、获取参数【浏览器地址获取参数】…

linux的一些基本指令第二期

rm rm -r 你要删除的目录名 加了-r 之后表示递归删除你要删除的目录 使用这个命名之后,他会一边递归到叶子节点,一边询问你是否要删除,然后会递归回来,在回来的途中删除: rm -rf 你要删除的目录名 强制执行删除操作…

权威认证!伙伴云入选亿欧2023AIGC应用场景创新TOP50榜单

近日, 知名科技与产业创新服务平台【亿欧】发布2023年度AIGC应用场景创新TOP50榜单。 伙伴云作为行业领先的零代码应用搭建平台,率先推出AI智能搭建系统功能,并将Chat GPT应用嵌入伙伴云应用在解决方案层,最终凭借前沿的技术创新力和突出的数…

【NVMe2.0d 17 - 1】Reservation 核心命令

文章目录 Reservation RegisterReservation AcquireReservation ReportReservation Release Reservation Register Reservation Register命令用于注册、取消注册或替换reservation key。 该命令使用Command Dword 10和内存中的Reservation Register data structure 如果该命…

基于seaborn.countplot的柱状图显示Y值及填充形状

参考链接: seaborn 柱状图上显示y值的方法 python柱形图填充 figs,ax plt.subplots(figsize(10,4)) fig sns.countplot(x"状态",hue"等级", datadatas)// 不可通过设置hatch参数来设置 marks ["o","---","***&quo…