前言

  1. 对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题。
  2. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。

FRP 的作用

  1. 利用处于内网或防火墙后的机器,对外网环境提供 HTTP 或 HTTPS 服务。
  2. 对于 HTTP, HTTPS 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。
  3. 利用处于内网或防火墙后的机器,对外网环境提供 TCP 和 UDP 服务,例如在家里通过 SSH 访问处于公司内网环境内的主机。

  

FRP 安装

  FRP 采用 Go 语言开发,支持 Windows、Linux、MacOS、ARM等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包,并解压就可用。
  这里以 Linux 为例,为了方便管理我们把解压后的目录重命名为 frp :
  $ wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz
  $ tar xzvf  frp_0.30.0_linux_amd64.tar.gz
  $ mv frp_0.30.0_linux_amd64  frp
 

FRP 服务端配置

配置 FRP 服务端的前提条件是需要一台具有**公网 IP **的设备,得益于 FRP 是 Go 语言开发的,具有良好的跨平台特性。你可以在 Windows、Linux、MacOS、ARM等几乎任何可联网设备上部署。
FRP 默认给出两个客户端配置文件,一个是简版的 frpc.ini,另一个是完整版本 frpc_full.ini。
[common]
# frps的ip地址
server_addr = xxx.xxx.xxx.xxx
# frps的端口
server_port =
# 认证token
token = xxx
# 日志
log_file = ./frpc.log
log_level = info
log_max_days =

#远程桌面配置
[dangkou]
type = tcp
local_ip = 127.0.0.1
local_port =
remote_port =
use_encryption = true

#http配置
[web-xinhu]
type = http
# 本地http服务地址
local_ip = 127.0.0.1
# 本地http服务端口
local_port =
# 使用压缩
use_compression = true
# 分配自定义域名访问穿透服务 假如没有域名,则此处请填为frps服务端的服务器(IP)
custom_domains = xxx.xxx.xxx
# 设置认证的用户名
#http_user = abc
# 设置认证的密码
#http_pwd = abc
# 重定向到本地域名
host_header_rewrite = xinhu.test #[ssh]
#type = tcp
#local_port =
#local_ip = 127.0.0.1
# 在服务端注册端口 服务端将监听 ssh root@118.118.118.118 -p 即可代理到本机 ssh 登录
#remote_port =

执行命令 $ ./frpc -c frpc.ini

http/https 服务是在服务端定义的端口,客户端指定协议后会自动关联,ssh 等使用 tcp 的则是在客户端定义好,服务端注意防火墙开放此端口即可。

FRP 默认给出两个服务端配置文件,一个是简版的 frps.ini,另一个是完整版本 frps_full.ini。

[common]
#监听地址
bind_addr = 0.0.0.0
#服务端口
bind_port =
#认证token
token = xxx
#面板界面
dashboard_addr = 0.0.0.0
dashboard_port =
dashboard_user = xxx
dashboard_pwd = xxx
#http服务端口
vhost_http_port =
#https服务端口
vhost_https_port = 7443

 #日志
  log_file = ./frps.log
  log_level = info
  log_max_days = 3

#Web 服务增加自定义二级域名

  subdomain_host = ***.com  #其次在 FRP 客户端配置文件配置 subdomain 参数 通过 subdomain.subdomain_host 就可以访问到内网的 Web 服务

 

放到后台运行:

方式一(终端退出后会被清除):jobs

执行命令 $ ./frps -c frps.ini &

查看后台工作

jobs

将后台暂停的工作恢复到前台执行

fg %工作号

把后台暂停的工作恢复到后台执行

bg %工作号

方式二:screen

$ screen -S frp    #创建一个窗口

$ ./frps -c frps.ini     #启动

ctrl + a + d    #推出当前窗口

$ screen -ls    #查看窗口

$ screen  -X -S frp quit    #删除窗口

https://man.linuxde.net/screen

客户端和服务器起来后第三方通过 访问 xxx.xxx.xxx:7080 就可以访问到内网的 xinhu.test。

推荐

windows下注册服务软件 snnm https://blog.csdn.net/mc_linfen/article/details/82115439

linux下注册服务软件 supervisor

另一款穿墙软件 zeroTier

参考:

https://www.jianshu.com/p/00c79df1aaf0

http://www.chuantou.org/47.html

https://github.com/fatedier/frp/blob/master/README_zh.md

https://www.vediotalk.com/archives/505

frp 配置的更多相关文章

  1. frp 配置多个 web 项目,无需购买域名 (访问内网可视化界面,jupyter noterbook, visdom, tensorboard)

    frp 配置多个 web 项目,无需购买域名 简单配置,参考 前言: 网上也有很多教程包括官方文档,都需要购买域名,并且把 frpc.ini 中 [web]节配置的  custom_domains 的 ...

  2. 使用FRP配置Windows远程控制

    一款很好用的内网穿透工具--FRP 前言 使用内网穿透工具--FRP,以及一台云服务器当做服务端,进行简单配置后即可远程访问 配置 FRP 服务端的前提条件是需要一台具有公网 IP 的设备,得益于 F ...

  3. frp配置

    frps配置 --------------------------------------------------------------------------------------------- ...

  4. 【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制

    背景 今年 8 月份左右,打折价买了一个阿里云主机,比平常便宜了 2000 多块.买了之后,本想作为一个博客网站的,毕竟国内的服务器访问肯定快一些.满心欢喜的下单之后,却发现 http 服务,外网怎么 ...

  5. 通过 frp 实现群晖的 drive 远端同步

    通过 frp 实现 drive 同步 其实其他的也类似, 只是指定 tcp 的端口不一致就可以. frp 实现的外网端口映射"肥肠"方便. 也推广下 frp 的地址 frp-git ...

  6. 浅析web网站反向代理的配置

    一.背景 最近在部署项目到web服务器上时,该项目有一个打开视频监控的功能,视频的服务器是一台内网的服务器,不允许设置外网端口访问,网站服务器和视频服务器在同一个局域网内,可以相互联通.网络拓扑图如下 ...

  7. frp内网穿透学习

    前言 因为自己在内网,但是目标站在外网,这时候可以通过内网穿透工具,将接收到的请求转发到内网,实现在内网的msf可以控制外网的靶机. 也看了一些Ngrok,花生壳的,发现Ngrok.cc这个看文章说有 ...

  8. 内网穿透—使用 frp 实现内外网互通

    前言 什么是内网穿透? 内网穿透,又叫 NET 穿透,是计算机用语.用通俗的说法就是你家里的个人电脑,可以直接被外网的人访问.例如你在公司,不通过远程工具,直接也可以访问到家里的电脑(本文章特指 we ...

  9. 【网络】内网穿透方案&FRP内网穿透实战(基础版)

    目录 前言 方案 方案1:公网 方案2:第三方内网穿透软件 花生壳 cpolar 方案3:云服务器做反向代理 FRP简介 FRP资源 FRP原理 FRP配置教程之SSH 前期准备 服务器配置 下载FR ...

随机推荐

  1. 详解Django中Request对象的相关用法

    原文链接:http://www.jb51.net/article/69624.htm 1.从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时 ...

  2. mapreduce课上实验

    今天我们课上做了一个关于数据清洗的实验,具体实验内容如下: 1.数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中: 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (v ...

  3. Spring 7种事务传播类型

    转载:https://www.cnblogs.com/originate918/p/6226342.html PROPAGATION_REQUIRED及其他6种事务传播行为种类. Spring在Tra ...

  4. 【译】高级T-SQL进阶系列 (四)【上篇】:使用游标进行行级别处理

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 正常来说,使用游标并不是处理记录集的最佳方式.然而当一个经验丰富的程序员第一次开始写TSQL时,他们经常会寻找其 ...

  5. phpRedis函数使用总结【分类详细】

    <?php /*1.Connection*/ $redis = new Redis(); $redis->connect('127.0.0.1',6379,1);//短链接,本地host, ...

  6. 刷题15. 3Sum

    一.题目说明 题目非常简洁15. 3Sum,读懂题目后,理解不难. 但 实话说,我们提交代码后,Time Limit Exceeded,最主要的是给了非常长的测试用例,我本地运行后87秒,确实时间非常 ...

  7. pytest-conftest.py作用范围

    1.conftest.py解释 conftest.py是pytest框架里面一个很重要的东西,它可以在这个文件里面编写fixture,而这个fixture的作用就相当于我们unittest框架里面的s ...

  8. ubuntu 16 “无法获得锁”解决方案

    强制解锁,命令 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock

  9. PAT T1025 Keep at Most 100 Characters

    删除字符的镜像问题,状态转移方程一样~ #include<bits/stdc++.h> using namespace std; ; ; string s; long long dp[ma ...

  10. java模板字符串功能的简单实现

    package com.Interface.util; import lombok.extern.slf4j.Slf4j; /** * 测试类 * * @author 华文 * @date 2019年 ...