内网穿透工具 frp

内网穿透工具 frp 

 

网络工具包

授权协议: GPL

开发语言: Google Go

操作系统: 跨平台

收录时间: 2016-08-01

提 交 者: FateDier

收藏1145

 

评论62

 

分享

软件介绍资讯 (8)问答 (2)博客 (99+)

我要提问

 

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

frp 的作用

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

  • 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

  • 可查看通过代理的所有 http 请求和响应的详细信息。(待开发)

开发状态

frp 目前正在前期开发阶段,master 分支用于发布稳定版本,dev 分支用于开发,您可以尝试下载最新的 release 版本进行测试。

目前的交互协议可能随时改变,不能保证向后兼容,升级新版本时需要注意公告说明。

架构

使用示例

    根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。

    将 frps 及 frps.ini 放到有公网 IP 的机器上。

    将 frpc 及 frpc.ini 放到处于内网环境的机器上。

通过 ssh 访问公司内网机器

  1. 修改 frps.ini 文件,配置一个名为 ssh 的反向代理:
    # frps.ini
    [common]
    bind_port = 7000
    
    [ssh]
    listen_port = 6000
    auth_token = 123
  2. 启动 frps:

    ./frps -c ./frps.ini
  3. 修改 frpc.ini 文件,设置 frps 所在服务器的 IP 为 x.x.x.x:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    auth_token = 123
    
    [ssh]
    local_port = 22
  4. 启动 frpc:

    ./frpc -c ./frpc.ini
  5. 通过 ssh 访问内网机器,假设用户名为 test:

    ssh -oPort=6000 test@x.x.x.x

通过指定域名访问部署于内网的 web 服务

有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能,以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

  1. 修改 frps.ini 文件,配置一个名为 web 的 http 反向代理,设置 http 访问端口为 8080,绑定自定义域名 www.yourdomain.com:

    # frps.ini
    [common] bind_port = 7000
    vhost_http_port = 8080
    
    [web]
    type = http
    custom_domains = www.yourdomain.com
    auth_token = 123

     

  2. 启动 frps;

     

    ./frps -c ./frps.ini

     

  3. 修改 frpc.ini 文件,设置 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    auth_token = 123
    
    [web]
    type = http
    local_port = 80

     

  4.  启动 frpc:

     

     ./frpc -c ./frpc.ini

     

  5.  将 www.yourdomain.com 的域名 A 记录解析到 x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。

  6. 通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。

开发计划

计划在后续版本中加入的功能与优化,排名不分先后,如果有其他功能建议欢迎在 issues 中反馈。

  • Dashboard 界面。

  • 流量,连接数等代理信息统计与展示。

  • udp 协议支持。

  • 针对短连接的连接池优化。

  • 特权模式支持端口白名单。

  • 支持泛域名。

  • 支持 url 路由转发。

  • frpc 支持负载均衡到后端不同服务。

  • frpc debug 模式,控制台显示代理状态,类似 ngrok 启动后的界面。

  • frpc http 请求及响应信息展示。

  • 支持 udp 打洞的方式,提供两边内网机器直接通信,流量不经过服务器转发。

热门文章

暂无图片
编程学习 ·

百天打卡计划第四天-Thread之类的加载过程

类的加载过程 类的加载过程一般分为三个大阶段,加载阶段、连接阶段、初始化阶段。 1加载阶段:主要是负责查找并加载类的二进制数据文件,其实就是class文件。 2连接阶段:连接阶段的工作主要分为三个阶段验证:主要是确保类文件的正确性。 准备:为类的静态变量分配内存,并为…
暂无图片
编程学习 ·

TCP协议中的粘包分包问题

使用TCP协议进行网络游戏开发的时候,有粘包和分包两个问题。 粘包和分包是利用Socket在TCP协议下内部的优化机制,在使用TCP协议进行数据的传输进行通讯的时候,会出现粘包分包问题的话,是由于优化导致,即内部的数据传输机制所导致的。 在客户端调用Send()方法传送数据,每传…
暂无图片
编程学习 ·

动态任务

1.任务句柄 /* LED任务句柄 */ static TaskHandle_t LED_Task_Handle; 2.任务创建函数 BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, //任务函数const char * const pcName, //任务名称const uint16_t usStackDepth, //堆栈大小void * const pvParamet…
暂无图片
编程学习 ·

3D体验平台---PEVR软件

3D体验平台---PEVR软件背景概述产品介绍优势及亮点官网**公司背景**pevr实机画面 背景概述 pevr设计的出发点是为通用的3D互动软件和简单3D游戏的开发提供一个平台,它集成了3D互动所需的各种触发类型机制,以及各种类型的响应功能。同时允许使用者自行摆放触发,并编辑触发的响…
暂无图片
编程学习 ·

ssm

目录User.javaUserController.javaUserDao.javaUserService.javaIUserService.javaUserMapper.xmlapplicationContext.xmldb.propertiesspring-mvc.xmlapplicationContext.xmlweb.xmlfailure.jspIndex.jspok.jsp pring 1.控制反转-》控制权的转移 2.依赖注入 DI 3.面向切面 aop…
暂无图片
编程学习 ·

windows 搭建es 集群 使用cerebro

1.2.一次修改三个节点下配置文件具体操作:主节点nodecluster.name: my-applicationnode.name: nodenode.master: truenode.attr.rack: r1network.host: 127.0.0.1http.port: 9200transport.tcp.port: 9300discovery.seed_hosts: ["127.0.0.1:9300","127.0.0.1:…
暂无图片
编程学习 ·

C#中String字符串去空格的问题

1.Trim() 最常见的就是trim,trim是清除字符串前,后的空格. " A BC “被TRIM之后是"A BC” 2.LTrim(),RTrim() 分别是清除字符串前面的空格,和清除字符串后面的空格. L = Left左边 R = Right右边 3.replace() s=s.replace(" “,”") 第三种方…
暂无图片
编程学习 ·

Android MVVM Demo

AndroidMvvm练习AndroidMVVM 是Google推出的,网上介绍也有很多,我就不废话了,公司项目中使用的mvvm,我整理个小demo练习记录一下1.DataBinding配置dataBinding {enabled = true}在XML中使用, 原先的布局还是照常写<layout xmlns:android="http://schemas.android.c…
暂无图片
编程学习 ·

OSPF路由协议详情和实验!带大家手把手理解OSPF的协议!还有超详细的OSPF三台路由器的实验!

文章目录前言:一、OSPF的基本概念和工作过程1、OSPF路由协议概述1.1、自治系统(AS)1.2、内部网关协议(IGP)1.3、外部网关协议(IGP)1.4、OSPF是链路状态路由协议2、OSPF工作过程2.1、建立邻居列表2.2、链路状态数据库2.3、形成路由表3、OSPF基本概念3.1、OPSF区域3.2、Ro…
暂无图片
编程学习 ·

OpenCV读取中文路径图像

引言 这几天做点小东西,涉及到OpenCV读取中文图像的问题如果直接读取中文路径的图像,往往返回[]import cv2cv_im = cv2.imread(‘老干妈.jpg’)缘起偶然发现opencv 读取图像,解决imread不能读取中文路径的问题文章,代码简单有效,im = cv2.imdecode(np.fromfile(im_name,dt…
暂无图片
编程学习 ·

UE4学习-添加机关并添加代码控制

文章目录添加机关代码编写给密室添加屋顶打印日志控制系统角色创建一个新游戏模式替换DefaultPawn添加抓取组件获取起点和终点物体拾取,碰撞属性设置今日完整代码 添加机关 首先向场景里面添加一个聚光源添加聚光源以后,可以对其属性进行修改,如图:然后需要给聚光源添加一个…
暂无图片
编程学习 ·

美团数据库高可用架构的演进与设想

本文介绍最近几年美团MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新。同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望。在2015年之前,美团(点评侧)长期使用MMM(Master-Master replication manage…
暂无图片
编程学习 ·

openpyxl3.0官方文档(13)—— 甜甜圈图

甜甜圈图表与饼图类似,只是它们使用了一个环而不是一个圆,还可以绘制出若干系列的数据作为中心环。from openpyxl import Workbookfrom openpyxl.chart import (DoughnutChart,Reference,Series,)from openpyxl.chart.series import DataPointdata = [[Pie, 2014, 2015],[Pla…
暂无图片
编程学习 ·

java项目异常处理设计

项目结构 异常设计 公司项目,项目分三层使用ssi(struts2.spring.ibatis),种种原因异常处理比较模糊,目前编程人员对异常处理没有概念,统一梳理以作记录.xxxDao–interface–throws Exception xxxBo–interface–throws Exception xxxBoImpl–class–try()catch{}–throws Excep…