1、概述

  • 众所周知,局域网内部机器由于没有公网IP,因此无法被局域网外部的客户端直接访问。FRP就是这样一个用于内网穿透的应用,它需要一台拥有公网IP的服务器作为中转,实现访问内网机器的目的。
  • 首先第一步是下载FRP:
    https://github.com/fatedier/frp/releases

2、基本原理

如图所示,现有公网服务器一台(220.181.38.251),
局域网主机两台,局域网地址分别是:
192.168.0.2
192.168.0.3

  • frp下载之后包含两端,frps是安装在公网服务器上的,frpc是安装在局域网内部机器里的。
  • 一个服务器端可以带N台局域网机器,在同一个公网IP下,通过不同的端口区分不同的局域网内部机器以及不同的服务。如上图的,6001和6002端口,就区分了局域网内部的192.168.0.2和192.168.0.3这两台机器的22端口。
  • 对访问者看起来,地址就只有一个,即中转服务器的公网IP,不同的端口对应着不同的局域网内部机器,访问:
    220.181.38.251:6001 相当于访问 192.168.0.2:22
    220.181.38.251:6002 相当于访问 192.168.0.3:22
  • 局域网机器统一通过7000端口与服务器进行数据交换。

3、配置

  1. 中转服务器 220.181.38.251
    运行frps (即frp-server)
    配置文件:frps.ini
[common]
bind_port = 7000

服务器端比较简单,仅监听本机(即220.181.38.251) 的 7000 端口

  1. 局域网分机设置(以192.168.0.2为例):
    运行frpc (即frp-client)
    配置文件:frpc.ini
[common]
server_addr = 220.181.38.251
server_port = 7000[ssh]
type = tcp
local_ip = 192.168.0.2
local_port = 22
remote_port = 6001

在局域网分机上多了一些选项,[common] 一栏注明了中转服务器的地址和7000端口 [ssh] 一栏则具体设置了ssh服务的映射关系:
局域网内部IP : 192.168.0.2 (以此区分局域网内部不同的主机)
本机端口:22
远程端口:6001
也就是:将192.168.0.234 这台主机的 22 端口,映射到服务器的 6001端口。

现在,192.168.0.2 这台局域网分机的设置就已经完成了,另一台机器(192.168.0.3)设置方法完全一样,这里不再赘述。

接下来回到公网服务器(220.181.38.251)上,进行防火墙设置:

  1. 开放 7000 端口 (这是服务器与各个局域网分机交互的总通道)
  2. 开放 6001 端口 (将服务器的6001映射到192.168.0.2:22)
  3. 开放 6002 端口 (将服务器的6002映射到192.168.0.3:22)

配置文件修改完毕后,我们就可以启动frp了,frps和frpc需要同时运行才能生效。

  • 使用方法:
    服务器端(frps):

    frps -c frps.ini
    

    如果需要后台运行:

    nohup frps -c frps.ini >/dev/null 2>&1 &
    

    局域网端(frpc):

    frpc -c frpc.ini
    

    后台运行:

    nohup frpc -c frpc.ini >/dev/null 2>&1 &
    

4、WEB设置

  • 上面的例子演示了如何将局域网的SSH (22端口) 通过FRP穿透到公网,下面介绍一下如何在局域网上假设一台WEB(80端口) 服务器,然后通过FRP暴露到公网,以让局域网外部用户访问。
  • 第一步:访问你的域名DNS管理界面,添加一个子域名
    • [ 新增一条A记录 ]
    • 主机记录填: abc (即abc.example.com)
    • 记录值填写服务器IP (如我们之前的公网服务器IP:220.181.38.251)
    • 保存退出
  • 第二步:在公网服务器上设置
    编辑:frps.ini (找到common一栏,添加一行)

    [common]
    vhost_http_port = 8000
    

    存盘退出。

  • 第三步:在局域网机器上设置
    编辑:frpc.ini (添加web栏,内容如下)

    [web]
    type = http
    local_port = 80
    custom_domains = abc.example.com
    

    现在,打开浏览器,输入:http://abc.example.com:8000
    就可以访问你在局域网上设置的WEB网站了。

  • API设置
    通过上面的步骤,静态网站这边就已经没有问题了,但是如果网站是具有交互性的,还需要对API接口再进行一些额外的设置:
    回到局域网机器,假设现在我们的配置如下:
  1. 采用 nginx 为WEB服务器方案

  2. API后台服务程序端口:5050

    修改nginx配置文件:/usr/local/nginx/conf/nginx.conf
    在http { } 这一节里添加以下内容:

     location ~ /api/(.*) {proxy_pass http://127.0.0.1:5050/$1;}
    

    存盘退出。

    回到我们的前端代码,假设我们现在用axios来做ajax后台通信,那么baseURL需要设置成这样:

    axios.defaults.baseURL = 'http://abc.example.com:8000/api/'
    
  • 没有域名的情况下如何设置:
    服务器端 frps.ini :

    [common]
    bind_port = 7000
    

    局域网分机 frpc.ini :

    [common]
    server_addr = 服务器ip
    server_port = 7000[tcp_port]
    type = tcp
    local_ip = 192.168.0.2
    local_port = 80
    remote_port = 8080
    

    防火墙设置:
    服务器:开放7000和8080端口,
    局域网机器:开放80端口

    然后在浏览器输入:http://服务器ip:8080
    就可以访问运行在局域网机器上的网站了。
    经测试,在 IE 和 curl 命令下都能正常访问,但是在Chrome和Edge这些所谓 “现代浏览器“ 下面,还是经常会报错,这个坑和frp无关,需要自行研究。


4. 后记

本文只介绍了如何通过FRP实现一个内网穿透的极简框架,FRP还有很多其他功能,比如SSL、TLS设置,HTTPS访问等等,本文都没有涉及,需要大家自行研究。万事开头难,一开始别整那么复杂,先把架子搭起来再慢慢研究不迟。

最简单的FRP内网穿透教程相关推荐

  1. 【保姆级】阿里云服务器frp内网穿透教程

    背景1: 去年买了一台阿里云服务器,轻量应用服务器,2核4G.个人比较喜欢嵌入式,开发板也不少,但是开发板连接路由器后内次都要看一下IP然后去连接(虽然可以在路由器上控设置固定IP),然后最近突发奇想 ...

  2. frp内网穿透教程2022最新(含内网ssh配置与msf联动配置)

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

  3. 黑群晖docker清理缓存_黑群晖 NAS 瞎折腾 篇一:超简单的docker设置frp内网穿透

    黑群晖 NAS 瞎折腾 篇一:超简单的docker设置frp内网穿透 2020-04-15 11:32:08 25点赞 241收藏 27评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇 ...

  4. Frp内网穿透保姆级教程 windows内网穿透

    Frp内网穿透保姆级教程 windows内网穿透 准备工作 一台具有公网ip的云服务器(我的是ubuntu) frp程序 流程 将frps放到具有公网ip的服务器上 将frpc放到需要内网穿透机器上, ...

  5. 简单免费内网穿透教程,利用树莓派实现低成本建站 无需公网

    很多人都想试试自己建站玩一玩 (比如博客.自建网盘.远程下载等),但家里宽带没公网 IP,特意买台服务器又显得浪费.那么有没成本小.可玩性高.又能长期稳定使用的方案呢? 其实,免费的内网穿透工具 (如 ...

  6. (Frp第一篇)Frp内网穿透安装教程#Frps服务端一键安装脚本#

    系统:CentOS7 内存:1G CPU:单核1G 客户端安装教程:(Frp第二篇)Frp内网穿透安装教程#Frp OpenWrt客户端安装#图形化管理 注意事项:记得给使用的端口开放防火墙,开放防火 ...

  7. windows搭建frp服务器_Windows平台下FRP内网穿透的搭建

    咕咕咕!又鸽了好久呢,之前好像说要出个简单的自建内网穿透的教程,由于各种事情,一直鸽到现在,只好今天来补上. Frp一般就两个平台上应用,unix(包括基于Linux的各种设备)和windows,关于 ...

  8. 一分钟用HCaas搭建Frp内网穿透

    前言 对于内网穿透大家并不陌生,不管你是小白还是开发者都需要一些内网穿透服务,如果自己购买服务器苦恼于带宽小(国内主机商普遍都是1M~10M),从而导致穿透效果并不是很理想,最近博主一直在关注网银互联 ...

  9. 阿里云centos7 frp内网穿透

    frp介绍 frp 是一个开源.简洁易用.高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议.frp 项目官网是 https://github.com/fatedi ...

最新文章

  1. python动态生成数据库表 orm_Python自动化 【第十二篇】:Python进阶-MySQL和ORM
  2. 奥特曼传奇英雄存档丢了怎么找回_热血传奇:道士最帅武器—玄天
  3. 12-Flutter移动电商实战-首页导航区域编写
  4. 庖丁解牛|图解 MySQL 8.0 优化器查询转换篇
  5. apollo @value没生效_不问不要紧,一文要人命,绝对的面试加分项配置中心Apollo深度解读...
  6. FtpWebRequest(转)---关于C/S中文件的上传,下载,获得文件列表
  7. proto3与proto2的区别
  8. 计算机控制v90伺服,西门子S7-1200控制V90伺服教程(TIA).pdf
  9. Alex 的 Hadoop 菜鸟教程: 第2课 hadoop 安装教程 (CentOS6 CDH分支 yum方式)
  10. w讠ndows Boot Manager,Win10电脑无法开机提示Windows boot manager的解决方案
  11. java面向对象是什么意思_java什么是面向对象
  12. 傅里叶变换与时域频域关系
  13. 机器学习入门——简单线性回归
  14. Lenovo(IBM) 使用BoMC工具制作微码升级U盘刷新System x系列
  15. list_for_each_entry解析
  16. 2022-2027年中国奶牛养殖行业市场深度分析及投资战略规划报告
  17. 布斯乘法算法的流程图
  18. java爬虫(本地爬虫和网络爬虫)
  19. DeepFM理论与实践
  20. 购物搜索引擎/比较购物网站

热门文章

  1. 单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法
  2. iOS RunTime机制----让catagory能够增加属性
  3. 纯音乐 -《抒情中国系列-烟雨江南》
  4. 机器学习-训练了一个高效快速识别身份证正面关键信息的模型
  5. 6D Pose Estimation各方法对应的经典论文
  6. 在Unity中使用Excel表开发单选题和多选题
  7. 云原生安全之RASP技术(应用运行时自我保护)
  8. 【单调栈】P4147 玉蟾宫
  9. 2、ehcache与springBoot整合
  10. 基于 Holt-Winters季节性预测模型 的时间序列预测