使用FRP搭建内网穿透web服务

原文:杂记 | 使用FRP搭建内网穿透服务(新版toml配置文件,搭配反向代理食用)

引言

在现代网络环境中,内网穿透技术允许我们安全地访问内网资源,这对于远程工作和资源共享至关重要。FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,它可以帮助我们轻松实现内网穿透。本文将介绍如何使用FRP搭建内网穿透服务,并配置反向代理以优化访问体验。

需求与回顾

在开始之前,我们需要明确几个基本条件:

  1. 一台具有公网IP的云服务器,操作系统为Linux。(如果没有可以去阿里云购买一个)
    在这里插入图片描述

  2. 本地电脑(如家用笔记本),操作系统为Windows,但没有公网IP。

  3. 需求是通过云服务器访问本地电脑上的服务(如网页)。(我是通过vue项目创建一个页面,比如我在本地的页面访问地址就如下,但此时只能你自己的电脑本地访问)
    在这里插入图片描述

下载FRP程序包

首先,我们需要从FRP的GitHub Releases页面下载FRP的最新版本。根据你的操作系统架构,选择合适的程序包进行下载。

在这里插入图片描述
解压后,在windows端只使用frpcfrpc.toml文件,在Linux端只用frpsfrps.toml文件。

其中只有.toml文件需要我们编辑

编辑.toml配置文件

下载完成后,需要对FRP的配置文件进行编辑,以适应我们的内网穿透需求。

服务端配置(frps.toml)

在服务器端,编辑frps.toml文件,配置FRP服务端的端口和反向代理端口。

bindPort = 7000
vhostHTTPPort = 86

客户端配置(frpc.toml)

在客户端,编辑frpc.toml文件,配置FRP客户端与服务端的通信信息,以及本地服务的映射。

serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "web"
type = "http"
localPort = 5173
remotePort = 86
customDomains = ["xxx.xxx.xxx.xxx"]

这两段TOML配置文件分别定义了FRP(Fast Reverse Proxy)服务端和客户端的配置。TOML(Tom’s Obvious, Minimal Language)是一种简单的配置文件格式,它易于人类阅读和编写,同时也易于机器解析和生成。下面是对这两段TOML配置的详细介绍:

服务端配置(frps.toml)

bindPort = 7000
vhostHTTPPort = 86
  • bindPort = 7000:此配置项指定FRP服务端监听的端口号。FRP客户端将通过此端口与服务端建立连接。这意味着所有来自客户端的流量都会发送到这个端口,服务端将在此端口上等待客户端的连接请求。
  • vhostHTTPPort = 86:此配置项定义了FRP服务端用于处理虚拟主机HTTP代理请求的端口。如果客户端配置了HTTP代理类型,并且希望服务端能够将流量转发到指定的域名或IP,服务端将通过此端口接收和处理这些HTTP请求。

客户端配置(frpc.toml)

serverAddr = "xxx.xxx.xxx.xxx"
serverPort = 7000

[[proxies]]
name = "web"
type = "http"
localPort = 5173
remotePort = 86
customDomains = ["xxx.xxx.xxx.xxx"]
  • serverAddr = "xxx.xxx.xxx.xxx":此配置项指定FRP服务端的IP地址。客户端将连接到这个IP地址上的FRP服务端。
  • serverPort = 7000:此配置项指定FRP服务端监听的端口号,客户端将通过此端口与服务端建立连接。这个端口号必须与服务端配置文件中的bindPort一致。
  • proxies:这是一个数组,用于定义多个代理配置。每个代理配置都包含以下信息:
  • name = "web":为代理配置指定一个名称,这通常用于标识代理的用途或服务。
  • type = "http":指定代理的类型为HTTP,这意味着客户端将通过HTTP协议与服务端通信。
  • localPort = 5173:指定客户端上要暴露的服务的端口号。在这个例子中,客户端上的服务将在本地的5173端口上监听。
  • remotePort = 86:指定服务端用于接收和转发客户端流量的端口。这个端口号必须与服务端配置文件中的vhostHTTPPort一致。
  • customDomains = ["xxx.xxx.xxx.xxx"]:定义一个域名列表,这些域名将被映射到客户端的本地服务。当用户访问这些域名时,流量将被转发到客户端的localPort。这里使用的是IP地址,你也可以使用已购买并配置好的域名。

在实际部署时,确保服务端和客户端的配置文件正确无误,并且所有端口号和IP地址都已正确设置。此外,还需要确保服务器的防火墙规则允许这些端口的流量,以及如果使用域名,DNS解析已正确设置。

启动服务

服务端和客户端的配置完成后,我们需要启动FRP服务。

服务端启动

服务端可以通过直接启动或以服务方式启动。推荐使用服务方式启动,以便于管理和自动启动。

安装systemd,通常情况下系统都带得有,没有的情况下使用如下命令安装。

# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd

# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd

创建frps.service服务

# 创建并编辑该文件
sudo vim /etc/systemd/system/frps.service

在frps.service里写入如下内容,注意要修改ExecStart的路径,比如我就是在/root/frps里放入的2个文件

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动命令,改为实际存放frps的路径
ExecStart = /root/frps/frps -c /root/frps/frps.toml

[Install]
WantedBy = multi-user.target

以服务的方式管理frps

# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置为开机自启
sudo systemctl enable frps

如果出错的话给frps文件夹加权限

chmod +x frps

客户端启动

服务端启动之后,在windows客户端的frpc所在目录下,打开cmd命令行,输入命令:

.\frpc.exe -c frpc.toml

即可启动客户端服务,此时就实现了内网穿透。

假设本地有一个服务需要使用http://127.0.0.1:5173访问(这只能在你的电脑上访问),经过内网穿透后,访问http://xxx.xxx.xxx.xxx:86即可(只要电脑能联网都能访问)。

配置反向代理(可选)

为了优化访问体验,我们可以配置反向代理。这可以通过修改Nginx配置或使用其他反向代理工具来实现。

设置为默认启动(可选)

为了方便管理,我们可以将FRP服务设置为开机自启动。

结语

通过上述步骤,我们成功搭建了一个内网穿透服务,并通过反向代理优化了访问体验。这不仅提高了工作效率,也增强了资源的可访问性。FRP作为一个强大的工具,其灵活性和高性能使其成为内网穿透的优选方案。

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值