前言

  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. Python 之路

    Python之路[第一篇]:Python简介和入门 Python之路[第二篇]:Python基础(一) Python之路[第三篇]:Python基础(二) Python之路[第四篇]:模块 Pytho ...

  2. concat merge

    # concat import numpy as np import pandas as pd from pandas import Series,DataFrame df1 = DataFrame( ...

  3. plotly线上绘图和离线绘图的区别

    1.线上绘图 import plotly import plotly.plotly as py import plotly.graph_objs as go plotly.tools.set_cred ...

  4. 什么是buffer?

    Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存. Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全 ...

  5. Scrapy 命令

    Scrapy提供了两种类型的命令.一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令).全局命令在项目中运行时的表现可能会与在非项目中运 ...

  6. c# 调用c++sdk时结构体与byte数组互转

    /// <summary> /// 由结构体转换为byte数组 /// </summary> public static byte[] StructureToByte<T ...

  7. 喵星之旅-狂奔的兔子-svn安装及使用

    一.服务端安装配置 1.安装svn 创建版本库并配置 以root用户登录,或者具有sudo权限的用户,这里选择root. yum install subversion 都选择y 2.创建版本库并配置 ...

  8. 抽取JDBC工具类

    package com.wbytts.util; import java.io.IOException; import java.io.InputStream; import java.sql.Con ...

  9. 【代码学习】PYTHON字典(Dictionary)

    一.什么是字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key->value)对用(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如下 d ...

  10. WinForm开发(5)——DataGridView控件(3)——DataGridView控件操作

    一.禁止用户改变DataGridView的列宽.行高.列头高度 1.// 禁止用户改变DataGridView1的所有列的列宽 DataGridView1.AllowUserToResizeColum ...