内网穿透神器frp推荐!教你如何一劳永逸的对外暴露内网服务

背景创业公司为节约运维成本,往往把应用服务放在阿里云等平台上 。除了对外服务,公司还存在一些对内的测试环境、监控等服务,如果这些内部服务同时也有外网访问的需求 。直接用云平台构建也蛮省事,但对于初创公司而言,会是一笔不小的成本 。本文章将介绍一种更好的方式:基于frp开源工具,构建一个外网可访问的内网穿透环境 。
前提条件外网可访问,必须要有一个外网的固定ip 。这个ip可以是运营商安装网络时给的(一般运营商网络多是浮动ip,要固定网络ip需额外掏钱购买),也可以是一台阿里云服务器(云服务器上有绑定对外的固定ip) 。本文以一台阿里云主机作为内网穿透的跳板接入入口 。即构建环境必须满足以下两个条件:

  1. 一台阿里云主机
  2. 内网环境至少一台机器能访问外网(运营商网络可以是浮动ip)
方案原理以阿里云主机作为外网访问的跳板入口,通过内网穿透工具frp,转发请求到内网环境,以达到内网环境服务对外开放的目的 。其中云主机上需安装frp内网穿透server端,公司内网环境安装frp client端,依靠frp server 到 client的连接作为内外网数据交换的通道 。
frp地址frp官方地址:
GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
frp下载地址:
Releases · fatedier/frp · GitHub
安装Frp使用Go语言开发,支持linux、window、mac等操作系统 。安装非常方便,选择平台下载相应安装包,解压即可使用 。本文以Linux centos系统为例介绍 。
安装目录执行以下命令:
wget https://github.com/fatedier/frp/releases/download/v0.31.0/frp_0.31.0_linux_amd64.tar.gztar xzvf frp_0.31.0_linux_amd64.tar.gzmv frp_0.31.0_linux_amd64 frpcd frp目录
【内网穿透神器frp推荐!教你如何一劳永逸的对外暴露内网服务】 
内网穿透神器frp推荐!教你如何一劳永逸的对外暴露内网服务

文章插图
 
其中frps前缀是服务端相关文件,frpc前缀为客户端相关文件 。
服务端配置编辑服务端frps.ini配置文件
vi frps.ini
内网穿透神器frp推荐!教你如何一劳永逸的对外暴露内网服务

文章插图
 
bind_port:frps服务端监听端口,用于frpc客户端建立连接时使用 。
vhost_http_port:http访问监听端口,可根据需要自行调整其他端口 。
vhost_https_port:https访问监听端口,可根据需要自行调整其他端口 。
subdomain_host:子域名地址定义 。用于服务端请求域名地址转发,如***.com
dashboard:一个简单的frp服务监控面板设置 。
注意:以上配置端口,在云主机上需开放对应端口访问权限,否则服务将无法正常访问 。
 
完成配置后,启动frps服务
nohup ./frps -c frps.ini &
客户端配置编辑frpc.ini客户端配置
内网穿透神器frp推荐!教你如何一劳永逸的对外暴露内网服务

文章插图
 
server_addr:frps服务端ip地址,对应云主机外网访问ip地址 。
server_port:对应frps服务端监听端口,这里7000与上一步配置端口对应 。
[web]:转发规则配置分组 。
type:协议类型 。http或https等 。
local_port:请求转发端口 。
subdomain:请求转发子域名域名地址 。frps.ini文件subdomain_host定义了***.com子域名,这里实际对应test.***.com格式的域名请求地址 。
注意:以上配置端口,需开放防火墙对应端口限制,否则访问可能失败 。
完成配置后,启动frpc服务
nohup ./frpc -c frpc.ini &
小结完成以上步骤,内网服务器上启动相关服务 。浏览器访问test.***.com域名服务,即可在外网访问内部服务 。
本文介绍了内网穿透工具frp的使用背景,构建方式 。通过简单的frp服务端和客户端配置,实现了内网服务的外网域名访问 。实际frp的实现远远不止http/https域名的穿透访问,它也支持ssh、tcp、udp等路由功能,有兴趣的小伙伴可以自行参考官网介绍 。这里仅做抛砖引玉,欢迎一起深入讨论 。




    推荐阅读