frp实现内网穿透极简教程

frp实现内网穿透极简教程

本文是内网穿透极简教程,为求简洁,我们不介绍为什么内网穿透也不介绍其原理,这里假设各位读者都已经明确的知道自己的目的,本文仅介绍如何安装配置 frp 实现内网穿透。

简单来说,内网穿透就是实现将内网的端口转发到公网,从而实现公网对内网资源的访问。为此,我们需要一台具有公网 IP 的 VPS 服务器(各 VPS 服务提供商如阿里云、腾讯云等均可),和一台需要被穿透的内网设备(以下称客户端)。

frp安装

直接去 github 发布页面 下载压缩包,客户端和服务器都需要,按照各自的机器类型下载对应的压缩包,然后解压:

wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
tar xf frp_0.42.0_linux_amd64.tar.gz

服务器端配置

注意:本节操作均在 VPS 服务器端

解压完成后进入目录,可以看到几个可执行文件和 ini 配置文件:

cd frp_0.42.0_linux_amd64/
ls -l
-rw-r--r-- 1 1001  121    11358 Apr 22 11:42 LICENSE
-rwxr-xr-x 1 1001  121 10936320 Apr 22 11:38 frpc
-rw-r--r-- 1 1001  121      126 Apr 22 11:42 frpc.ini
-rw-r--r-- 1 1001  121    10814 Apr 22 11:42 frpc_full.ini
-rwxr-xr-x 1 1001  121 14016512 Apr 22 11:38 frps
-rw-r--r-- 1 1001  121      159 May  4 17:15 frps.ini
-rw-r--r-- 1 1001  121     5460 Apr 22 11:42 frps_full.ini
drwxr-xr-x 2 1001  121     4096 Apr 22 11:42 systemd

其中 frps, frps.inifprc, frpc.ini 是我们主要要用到的可执行文件和对应的配置文件,前两者的 s 表示的是 server ,即服务器;而后两者的 c 表示的是 client 客户端,我们现在是在配置服务器端,自然是关注前者。

编辑 frps.ini

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443
  • bind_port 表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
  • dashboard_port 是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
  • token 是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
  • dashboard_userdashboard_pwd 表示打开仪表板页面登录的用户名和密码,自行设置即可。
  • vhost_http_portvhost_https_port 用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。

没有特殊需要的话端口按默认值配置即可,tokendashborad_userdashboard_password 几项记号并保护好,后面要用。

还有一点要注意的是:确认你的 VPS 服务器是否开放了对应的端口,若未开放需要到服务提供商的控制台开放。

配置完成之后尝试运行:

./frps -c frps.ini

得到类似如下输出,则说明配置基本成功:

2022/05/04 20:52:27 [I] [root.go:200] frps uses config file: frps.ini
2022/05/04 20:52:27 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/05/04 20:52:27 [I] [service.go:237] http service listen on 0.0.0.0:10080
2022/05/04 20:52:27 [I] [service.go:252] https service listen on 0.0.0.0:10443
2022/05/04 20:52:27 [I] [service.go:293] Dashboard listen on 0.0.0.0:7500
2022/05/04 20:52:27 [I] [root.go:209] frps started successfully

我们可以去查看一下 dashboard,打开浏览器输入 URL:xx.xxx.xxx.xx:7500 ,然后输入我们刚才配置的用户名和密码即可进入,大概长这样:

在这里插入图片描述

这一步也没有问题的话服务器端就配置成功了。

我们 Ctrl-C 终止掉刚才的程序,改为后台运行,因为我们总是需要端口转发程序一直运行在,但又不需要操作它,因此放在后台,保存日志文件即可:

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

执行上述命令,frp 服务将运行在后台并将日志输出到 frps.log ,退出当前 terminal 即可。

客户端配置

注意:本节操作均在本地客户端

还是下载对应的压缩包并解压,进入目录,还是那些文件,我们现在是在客户端 client ,因此,我们现在要关注的是 fprc, frpc.ini 这两个文件。

编辑 frpc.ini

[common]
server_addr = xx.xxx.xxx.xx
server_port = 7000
token = 12345678[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001  [test]
type = tcp
local_ip = 0.0.0.0
local_port = 7100
remote_port = 7200[xxx]
type = tcp
local_ip = 0.0.0.0
local_port = 7300
remote_port = 7400

common 字段的 server_addr 为服务端公网 IP 地址。其他两项 server_porttoken 就是我们在服务器端配置过的内容,保持一致即可。

其余的 rdpxxx 等字段就是用户可以定义的规则,根据自己转发的是什么服务自行命名即可

  • type 表示转发的协议类型,如 TCP 和 UDP 。
  • local_port 是本地应用的端口号,填入该项服务在本机实际使用的端口号。
  • remote_port 是该项服务在服务端开放的端口号。

与服务器端类似,运行

./frpc -c frpc.ini

出现类似以下输出说明配置成功,

2022/05/04 21:11:10 [I] [service.go:349] [ecc57bb476f85c28] login to server success, get run id [ecc57bb476f85c28], server udp port [0]
2022/05/04 21:11:10 [I] [proxy_manager.go:144] [ecc57bb476f85c28] proxy added: [test]
2022/05/04 21:11:10 [I] [control.go:181] [ecc57bb476f85c28] [test] start proxy success

同样是放到后台运行:

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

测试

我们用一个简单的 flask 服务测试一下端口转发的效果。

先准备一个 hello.py

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'

注意我们在配置的测试端口是:本地为 7100,远程为 7200,因此这里我们应该将服务运行到本地的 7100 端口:

python -m flask run --host 0.0.0.0 -p 7100

frp 会帮我们转发到远程的 7200 端口(打码的地方换成你的服务器 IP):

在这里插入图片描述

并且,我们还可以再去 dashboard 中看一下:

在这里插入图片描述

已经可以查看到我们的测试服务及其流量,即告测试成功。

若有错误或疑问,欢迎留言交流。

Ref:

https://sspai.com/post/52523

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

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

相关文章

图像预处理之warpaffine与双线性插值及其高性能实现

图像预处理之warpaffine与双线性插值及其高性能实现 视频讲解:https://www.bilibili.com/video/BV1ZU4y1A7EG 代码Repo:https://github.com/shouxieai/tensorRT_Pro 本文为视频讲解的个人笔记。 warpaffine矩阵变换 对于坐标点的变换,我们通…

sed 简明教程

sed 简明教程 转自:https://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了。所以 林妹妹跳了个Topless,他的哥哥sed坐不住了&#xf…

[深度][PyTorch] DDP系列第一篇:入门教程

[深度][PyTorch] DDP系列第一篇:入门教程 转自:[原创][深度][PyTorch] DDP系列第一篇:入门教程 概览 想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇! No one knows DDP better than I…

[深度][PyTorch] DDP系列第二篇:实现原理与源代码解析

[深度][PyTorch] DDP系列第二篇:实现原理与源代码解析 转自:https://zhuanlan.zhihu.com/p/187610959 概览 想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇! No one knows DDP better than I do! …

[深度][PyTorch] DDP系列第三篇:实战与技巧

[深度][PyTorch] DDP系列第三篇:实战与技巧 转自:https://zhuanlan.zhihu.com/p/250471767 零. 概览 想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇! No one knows DDP better than I do! – – …

机器学习:系统设计与实现 分布式训练

机器学习系统:设计与实现 分布式训练 转自:https://openmlsys.github.io/chapter_distributed_training/index.html 随着机器学习的进一步发展,科学家们设计出更大型,更多功能的机器学习模型(例如说,GPT-3)…

从零Makefile落地算法大项目,完整案例教程

从零Makefile落地算法大项目,完整案例教程 转自:从零Makefile落地算法大项目,完整案例教程 作者:手写AI 前言 在这里,你能学到基于Makefile的正式大项目的使用方式和考虑,相信我,其实可以很简单…

PyTorch扩展自定义PyThonC++(CUDA)算子的若干方法总结

PyTorch扩展自定义PyThon/C(CUDA)算子的若干方法总结 转自:https://zhuanlan.zhihu.com/p/158643792 作者:奔腾的黑猫 在做毕设的时候需要实现一个PyTorch原生代码中没有的并行算子,所以用到了这部分的知识,再不总结就要忘光了 &a…

给 Python 算法插上性能的翅膀——pybind11 落地实践

给 Python 算法插上性能的翅膀——pybind11 落地实践 转自:https://zhuanlan.zhihu.com/p/444805518 作者:jesonxiang(向乾彪),腾讯 TEG 后台开发工程师 1. 背景 目前 AI 算法开发特别是训练基本都以 Python 为主&…

chrome自动提交文件_收集文档及提交名单统计

知乎文章若有排版问题请见谅,原文放在个人博客中【欢迎互踩!】文叔叔文档收集使用动机在我们的学习工作中,少不了要让大家集体提交文件的情况,举个最简单的例子:收作业。 传统的文件收集流程大致是:群内发出…

惠普800g1支持什么内存_惠普黑白激光打印机哪种好 惠普黑白激光打印机推荐【图文详解】...

打印机的出现让我们在生活和日常工作中变得越来越方便,不过随着科技的发展,打印机的类型也变得非常多,其中就有黑白激光打印机,而黑白激光打印机的品牌也有很多,比如我们的惠普黑白激光打印机,今天小编就给…

控制台输出颜色控制

控制台输出颜色控制 转自:https://cloud.tencent.com/developer/article/1142372 前端时间,写了一篇 PHP 在 Console 模式下的进度显示 ,正好最近的一个数据合并项目需要用到控制台颜色输出,所以就把相关的信息整理下,…

idea连接跳板机_跳板机服务(jumpserver)

一、跳板机服务作用介绍1、有效管理用户权限信息2、有效记录用户登录情况3、有效记录用户操作行为二、跳板机服务架构原理三、跳板机服务安装过程第一步:安装跳板机依赖软件yum -y install git python-pip mariadb-devel gcc automake autoconf python-devel readl…

【详细图解】再次理解im2col

【详细图解】再次理解im2col 转自:https://mp.weixin.qq.com/s/GPDYKQlIOq6Su0Ta9ipzig 一句话:im2col是将一个[C,H,W]矩阵变成一个[H,W]矩阵的一个方法,其原理是利用了行列式进行等价转换。 为什么要做im2col? 减少调用gemm的次数。 重要…

反思 大班 快乐的机器人_幼儿园大班教案《快乐的桌椅》含反思

大班教案《快乐的桌椅》含反思适用于大班的体育主题教学活动当中,让幼儿提高协调性和灵敏性,创新桌椅的玩法,正确爬的方法,学会匍匐前进,快来看看幼儿园大班《快乐的桌椅》含反思教案吧。幼儿园大班教案《快乐的桌椅》…

DCN可形变卷积实现1:Python实现

DCN可形变卷积实现1:Python实现 我们会先用纯 Python 实现一个 Pytorch 版本的 DCN ,然后实现其 C/CUDA 版本。 本文主要关注 DCN 可形变卷积的代码实现,不会过多的介绍其思想,如有兴趣,请参考论文原文: …

蓝牙耳机声音一顿一顿的_线控耳机党阵地转移成功,OPPO这款TWS耳机体验满分...

“你看到我手机里3.5mm的耳机孔了吗”,这可能是许多线控耳机党最想说的话了。确实,如今手机在做“减法”,而厂商们首先就拿3.5mm耳机孔“开刀”,我们也丧失了半夜边充电边戴耳机打游戏的乐趣。竟然如此,那如何在耳机、…

AI移动端优化之Im2Col+Pack+Sgemm

AI移动端优化之Im2ColPackSgemm 转自:https://blog.csdn.net/just_sort/article/details/108412760 这篇文章是基于NCNN的Sgemm卷积为大家介绍Im2ColPackSgemm的原理以及算法实现,希望对算法优化感兴趣或者做深度学习模型部署的读者带来帮助。 1. 前言 …

elementui的upload组件怎么获取上传的文本流、_抖音feed流直播间引流你还不会玩?实操讲解...

本文由艾奇在线明星优化师写作计划出品在这个全民惊恐多灾多难且带有魔幻的2020,一场突如其来的疫情改变了人们很多消费习惯,同时加速了直播电商的发展,现在直播已经成为商家必争的营销之地,直播虽然很火,但如果没有流…

FFmpeg 视频处理入门教程

FFmpeg 视频处理入门教程 转自:https://www.ruanyifeng.com/blog/2020/01/ffmpeg.html 作者: 阮一峰 日期: 2020年1月14日 FFmpeg 是视频处理最常用的开源软件。 它功能强大,用途广泛,大量用于视频网站和商业软件&…