高性能的内网穿透工具frp使用场景

目录
  • 什么是 frp
  • 为什么使用 frp
  • 安装
  • 使用
  • 使用场景
    • 统一的服务端配置
    • SSH 连接内网服务器
  • 暴露内网 HTTP 服务
    • TCP 类型
    • HTTP 类型
    • 静态文件下载服务

本文将分享一个很好用的内网穿透工具 frp,以及一些具体的使用场景。

什么是 frp

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么使用 frp

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

安装

可以在 Github 的 Release 页面中进行下载:

curl -LO https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
tar zxf frp_0.37.0_linux_amd64.tar.gz

压缩包里包含了客户端和服务端的两个可执行文件,以及对应的配置文件:

> tree -L 1 frp_0.37.0_linux_amd64
frp_0.37.0_linux_amd64
├── frpc # 客户端程序
├── frpc_full.ini # 对应客户端程序的详细配置文件
├── frpc.ini # 对应客户端程序的简单配置文件
├── frps # 服务端程序
├── frps_full.ini # 对应服务端程序的详细配置文件
├── frps.ini # 对应服务端程序的简单配置文件
├── LICENSE
└── systemd
    ├── frpc.service # 客户端的 systemd 服务配置文件
    ├── frpc@.service # 客户端的 systemd 模板文件
    ├── frps.service  # 服务端的 systemd 服务配置文件
    └── frps@.service # 服务端的 systemd 模板文件

使用

首先,这个工具需要一个公网服务器配置使用,配置文件可以参考详细的配置文件进行编写,后面会讲到自己常用的几个场景下的配置。

先启动服务端:

./frps -c ./frps.ini

再启动客户端:

./frpc -c ./frpc.ini

Tip:如果需要在后台长期运行,可以结合 systemd 或者 supervisor 进行使用。

使用场景

统一的服务端配置

[common]
bind_port = 9999
authentication_method = token
token = yourtokenhere
vhost_http_port = 10001
vhost_https_port = 10002

配置说明:

  • bind_port 是客户端连接使用的端口号。
  • 为了安全起见,会给服务端加上 token 认证,客户端被要求使用服务端配置的 token 才可以连接。
  • vhost_http_port 和 vhost_https_port 在自定义域名访问时需要设置。

下面将都是基于这个服务端配置的一些场景下的客户端配置。

SSH 连接内网服务器

[common]
server_addr = x.x.x.x
server_port = 9999
token = yourtokenhere
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6666

配置说明:

  • server_addr 是服务端所在服务器的公网 IP。
  • remote_port 设置在公网服务器上绑定的端口号。

现在,我们就可以通过 SSH 连接内网服务器:

ssh -p 6666 k8scat@x.x.x.x

暴露内网 HTTP 服务

TCP 类型

这种方式不需要在服务端设置 vhost_http_port 和 vhost_https_port:

[common]
server_addr = x.x.x.x
server_port = 9999
token = yourtokenhere
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 3333
remote_port = 6666

访问:http://x.x.x.x:6666

HTTP 类型

这种方式需要在服务端设置 vhost_http_port = 6666,也就是和客户端配置的 remote_port 相同。

[common]
server_addr = x.x.x.x
server_port = 9999
token = yourtokenhere
[web]
type = http
local_ip = 127.0.0.1
local_port = 3333
remote_port = 6666
custom_domains = x.x.x.x

同样访问:http://x.x.x.x:6666

静态文件下载服务

在没用 frp 之前,使用的是 Nginx 搭建的静态文件服务器,只适用于公网服务器,如果是内网,还是得用 frp!下面是使用 frp 搭建静态文件下载服务的客户端配置:

[common]
server_addr = x.x.x.x
server_port = 9999
token = yourtokenhere
[file-server]
type = tcp
remote_port = 6666
plugin = static_file
plugin_local_path = /home/k8scat/files
plugin_strip_prefix = download
plugin_http_user = k8scat
plugin_http_passwd = yourpasswd

配置说明:

  • plugin_local_path 指定本地文件存放的路径。
  • plugin_strip_prefix 指定下载的 URL 的前缀,比如需要下载 /home/k8scat/files/a.tgz 文件,那么 URL 将会是 http://x.x.x.x:6666/download/a.tgz。
  • plugin_http_user 和 plugin_http_passwd 为了安全起见,可以设置下载时的 HTTP 身份验证。

以上就是高性能的内网穿透工具frp使用场景的详细内容,更多关于内网穿透工具frp的资料请关注我们其它相关文章!

(0)

相关推荐

  • Nodejs实现内网穿透服务

    也许你很难从网上找到一篇从代码层面讲解内网穿透的文章,我曾搜过,未果,遂成此文. 1. 局域网内代理 我们先来回顾上篇,如何实现一个局域网内的服务代理?因为这个非常简单,所以,直接上代码. const net = require('net') const proxy = net.createServer(socket => { const localServe = new net.Socket() localServe.connect(5502, '192.168.31.130') // 局域网

  • 超好用的免费内网穿透工具【永久免费不限制流量】

    目录 1. 安装cpolar内网穿透工具 1.1 Windows系统 1.2 Linux系统 1.2.1 安装 国内使用 1.2.2 向系统添加服务 1.2.3 启动服务 1.2.4 查看服务状态 2. 创建隧道映射内网端口 对于开发人员来讲,演示内网web站点.本地开发微信公众号.小程序开发.调试第三方支付系统对接等开发环境,往往需要一个环境可以进行调试. 而解决办法很简单,用内网穿透工具就可以,不需要自己搭建服务,也不需要公网IP.市面上内网穿透工具有很多,这里推荐一款简单又好用的————c

  • 详解使用内网穿透工具Ngrok代理本地服务

    目录 1.官网地址 2.下载 3.添加白名单 4.使用 5.访问 我们在微信开发过程中,需要不断调试,微信服务器无法访问我们本地的接口,那么我们就需要一个内网穿透的工具,将我们本地的服务暴露出去使外部能够访问,内网穿透成功后,我们自己开发的电脑就相当于一台云服务器.常用的内网穿透工具有:ngrok.花生壳.Natapp.小米球等等,我平常使用的就是 ngrok 了. 1.官网地址 https://ngrok.com/ 在官网可以下载 ngrok 的安装包,和我使用的版本不一样,推荐使用我的资源文

  • SSH端口转发实现内网穿透的实现

    我们局域网的机器能够访问外网,但是外网不能访问内网.因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址.(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持.不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh也是这个方法. 使用ssh命令链接公网服务器 1.首先在外网服务器上编辑sshd的配置文件 vim /etc/ssh/sshd_config #将GatewayPorts 开关打开 GatewayPorts yes 重启sshd

  • 高性能的内网穿透工具frp使用场景

    目录 什么是 frp 为什么使用 frp 安装 使用 使用场景 统一的服务端配置 SSH 连接内网服务器 暴露内网 HTTP 服务 TCP 类型 HTTP 类型 静态文件下载服务 本文将分享一个很好用的内网穿透工具 frp,以及一些具体的使用场景. 什么是 frp frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公网. 为什么使用 frp 通过在具有公网 IP 的节点上

  • 使用Python+Flask开发博客项目并实现内网穿透

    目录 前言 1.个人的注册与登录模块 2.首页文章展示模块 3.文章详情展示模块 4.文章发布模块 5.文章添加分类模块 6.文章分类管理模块 7.文章管理模块 8.用户个人信息注销模块 9.信息管理模块 10.程序启动模块 11.内网穿透模块 12.总结 前言 Flask是一个使用python编写的轻量级Web框架,对比其他相同类型的框架而言,这个框架更加的灵活轻便.并且具有很强的定制性,用户可以根据自己的需求添加功能,有强大的插件库,这也是为什么这个框架在python领域一直火热的原因.这篇

  • 公网使用SSH远程登录macOS服务器的过程(内网穿透)

    目录 前言 1. macOS打开远程登录 2. 局域网内测试ssh远程 3. 公网ssh远程连接macOS 3.1 macOS安装配置cpolar 3.2 获取ssh隧道公网地址 3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址 4.1 保留一个固定TCP端口地址 4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 前言 macOS系统自带有Secure Shell 客户端,它可让您登录到侦听传入SSH连接的远程服务器和台式机.我们可以用ssh user

  • 详解基于docker搭建lanproxy内网穿透服务

    文档更新说明 2018年04月06日 v1.0 内网穿透相信是后端开发者经常遇到的需求,可是怎么实现呢?其实有现成的服务:花生壳.ngrok等,但是,最近花生壳宣布,免费版的内网穿透将不支持80端口映射了,而免费版的ngrok也不够稳定,于是乎,我就开始需找新的解决方案了 本文使用了docker.nginx,要全部搞懂的话需要一定的后端基础(当然,基本上入个门就可以了),个人认为还是有一定阅读门槛的,但是你如果只是想把服务搭建起来,按照步骤来做是不难的 1.概述 内网穿透其实就是用服务器做一个中

  • vscode远程开发使用SSH远程连接服务器的方法「内网穿透」

    目录 1.安装OpenSSH 2.vscode配置ssh 3. 局域网测试连接远程服务器 4. 公网远程连接 4.1 ubuntu安装cpolar 4.2 创建隧道映射 4.3 测试公网远程连接 5. 配置固定TCP端口地址 5.1 保留一个固定TCP端口地址 5.2 配置固定TCP端口地址 5.3 测试固定公网地址远程 远程连接服务器工具有很多,比如XShell.putty等,可以通过ssh来远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码后再将源代码传送到服务器运行.服务器上

  • 使用PLSQL远程连接Oracle数据库的方法(内网穿透)

    目录 1.前言 2.Oracle数据库的安装 2.1 Oracle下载安装 2.2 Oracle连接测试 2.3 Cpolar下载安装 3.Cpolar端口设置 3.1 Cpolar云端设置 3.2.Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据库作为十分重要的资料管理和存储库,一致都受到各软件大厂关注:而为了更好的管理和组织越来越庞大的数据库里的数据,又衍生出不同派系的数据模型(如关系和非关系.层次和网状模型.面向对象和半结构化等等),令人眼花缭乱.随着数据库在现代社会中的作

随机推荐