将你的内网服务发布到公网 - 使用开源工具FRP进行网络穿透
系统需求
由于采用 Go 语言编写,因此系统需求与最新的 Go 语言对系统和平台的要求一致,具体请参考 Golang System requirements。
下载
您可以从 GitHub 的 Release 页面中下载最新版本的客户端和服务器二进制文件。所有文件都打包在一个压缩包中,还包含了一份完整的配置参数说明。
部署
- 解压下载的压缩包。
- 将
frpc
复制到内网服务所在的机器上。 - 将
frps
复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。
开始使用
编写配置文件,目前支持的文件格式包括 TOML/YAML/JSON,旧的 INI 格式仍然支持,但已经不再推荐。
使用以下命令启动服务器:
./frps -c ./frps.toml
。使用以下命令启动客户端:
./frpc -c ./frpc.toml
。如果需要在后台长期运行,建议结合其他工具,如 systemd 、
nohup
和supervisor
。1
2
3
4
5# 服务端
nohup ./frps -c ./frps.toml &
# 客户端
nohup ./frpc -c ./frpc.toml &
有关如何编写配置文件,详见 配置文件 章节中的内容。
完整的配置项说明,详见 官方文档 - 参考 中的内容。
配置文件
frps.toml
在具有公网 IP 的机器上部署 frps
部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:
1 | bindPort = 7000 |
frpc.toml
在需要被访问的内网机器上部署 frpc
部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置:
1 | serverAddr = "x.x.x.x" |
localIP
和localPort
配置为需要从公网访问的内网服务的地址和端口。remotePort
表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。type
表示连接类型,常用的type包括http
和tcp
:- 常见的Web服务、Server服务都是
http
连接。 - 如ssh、mysql、redis等服务的连接为
tcp
连接。
- 常见的Web服务、Server服务都是
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Aghenim Sanctuary!