编辑
2024-12-05
个人项目
00
请注意,本文编写于 43 天前,最后修改于 18 天前,其中某些信息可能已经过时。

目录

frp 简介
frp 安装和启动
frp 的配置
基础配置
管理页面
其他问题

如果有部署在内网上的 web 服务,想要通过公网进行访问(比如本地部署的测试),可以借助公有或自建的内网穿透完成。本文使用 frp 进行内网穿透服务的搭建。

相关信息

仓库地址:https://github.com/fatedier/frp

文档说明:https://gofrp.org/zh-cn/docs/

frp 简介

根据 GitHub 上的描述,frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp 安装和启动

在 Release 页面下载客户端和服务端,由于云服务器和个人设备的系统不一致,需要分别下载两个系统上的安装包(安装包内有客户端和服务端的程序)。

服务端保留 frpsfrps.toml 配置文件(linux),而客户端保留 frpc.exefrpc.toml 文件(windows)。

安装完成之后就可以在命令行中启动了。有一点需要注意,由于程序的需要在命令行中启动,我希望在我的 Tabby 终端中添加一个 frp 启动配置,因此配置项应该写成如下形式。

cmd.exe /k frpc.exe -c frpc.toml

cmd.exe 接收要执行的程序,以及该程序的参数(这里是 -c frpc.toml)。使用 /k/c 参数设置要执行的程序,前者在执行的程序退出后命令行继续保留,而后者命令行会退出。

在 Ubuntu 中就直接设置以下命令即可:

./frpc -c frpc.toml

frp 的配置

根据用途的不同,官网给出了不同的配置示例。我们的需求是访问内网的 Web 服务。

注意:

  • 服务端和客户端都需要 -c 参数
  • 不同版本的安装包内默认的配置文件格式不同,所以各个教程中的配置语法也不尽相同
  • 不同版本的配置变量名也有一定的区别,请参考对应的文档

基础配置

  • 服务端配置文件

    toml
    bindPort = 7000 vhostHTTPPort = 8090

    服务端设置内网穿透服务端监听端口 bindPort 和 HTTP 类型代理监听的端口 vhostHTTPPort

  • 客户端配置文件

    toml
    serverAddr = "xxx.xxx.xxx.xxx" serverPort = 7000 [[proxies]] name = "web" type = "http" localPort = 8090 customDomains = ["frp-test.zerolacqua.top"]

    客户端设置连接服务端的地址 serverAddr 和端口 serverPort(与服务端 bindPort 一致)。 每个 [[proxies]] 表示一个代理项,要设置代理的类型、本地端口,customDomains 用于设置 http 类型,可通过 customDomains 访问本地的 localPort

管理页面

frp 可以在指定端口开启管理界面,包括服务端的面板和客户端的管理界面。auth.token 用于验证客户端。webServer 则是相应的面板设置。

  • 服务端配置文件
toml
auth.token = "token" webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "user_name" webServer.password = "password"
  • 客户端配置文件
toml
auth.token = "token" webServer.addr = "127.0.0.1" webServer.port = 7400 webServer.user = "user_name" webServer.password = "password" [[proxies]] name = "admin_ui" type = "tcp" localPort = 7400 remotePort = 7400

如果需要访问客户端(本地)的管理界面,只需将其也进行内网穿透。注意这里使用 tcp 类型。tcp 类型可以配置多端口。

其他问题

如果想让服务端在会话结束后继续运行,可以使用 tmux 进行管理。

本文作者:Zerol Acqua

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!