差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
is:cos:centos服务搭建-04-运用frps服务搭建黑群晖nas的frpc [2025/02/18 01:20] – A.L | is:cos:centos服务搭建-04-运用frps服务搭建黑群晖nas的frpc [2025/03/07 12:30] (当前版本) – [搭建手记] A.L | ||
---|---|---|---|
行 1: | 行 1: | ||
- | * **FRP (Fast Reservation Protocol高性能反向代理应用)**:可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。 | + | 概述: |
- | | + | |
+ | * 作用 | ||
* 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。 | * 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。 | ||
* 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。 | * 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。 | ||
行 6: | 行 7: | ||
* 可查看通过代理的所有 http 请求和响应的详细信息。(待开发) | * 可查看通过代理的所有 http 请求和响应的详细信息。(待开发) | ||
- | ==== CentOS 7安装frps端 ==== | + | ====== CentOS 7安装frps端 |
* 本次安装服务应用于群晖系统,客户端为frpc0.26.0,因此,frps端使用同版本 | * 本次安装服务应用于群晖系统,客户端为frpc0.26.0,因此,frps端使用同版本 | ||
< | < | ||
行 62: | 行 63: | ||
< | < | ||
- | ====== 《frps.service》文档 | + | ==== 《frps.service》文档 ==== |
* 注意点:/ | * 注意点:/ | ||
* 注意点:/ | * 注意点:/ | ||
行 81: | 行 82: | ||
</ | </ | ||
- | ====== frps.service自启动 | + | ===== frps.service自启动 ===== |
* vim编辑退出:Esc,# | * vim编辑退出:Esc,# | ||
* 启动并设为开机自启。 | * 启动并设为开机自启。 | ||
行 98: | 行 99: | ||
</ | </ | ||
- | ====== frps.service自启动进程查看 | + | ==== frps.service自启动进程查看 ==== |
* 查看frp是否启动: | * 查看frp是否启动: | ||
< | < | ||
行 123: | 行 124: | ||
* 内网机器上面执行 tail -f nohup.out 查看启动命令的执行结果akerlu | * 内网机器上面执行 tail -f nohup.out 查看启动命令的执行结果akerlu | ||
- | ====== firewall常用命令 | + | ==== firewall常用命令 ==== |
* 安装firewall命令 | * 安装firewall命令 | ||
< | < | ||
行 174: | 行 175: | ||
* 查看是否开机自启:systemctl is-enable firewalld | * 查看是否开机自启:systemctl is-enable firewalld | ||
- | ==== NAS端安装FRPC ==== | + | ====== NAS端安装FRPC |
* 下载安装docker | * 下载安装docker | ||
* docker注册表,选用frpc 0.26.0版本(可自行选择容易下载的版本,但服务端frps必须对应同版本或者同大版本号的,如:0.34.1的话,可以用0.34.2) | * docker注册表,选用frpc 0.26.0版本(可自行选择容易下载的版本,但服务端frps必须对应同版本或者同大版本号的,如:0.34.1的话,可以用0.34.2) | ||
* docker注册表下载后,在映像中可以看到。选择映像中的frpc进行启动编辑,启动编辑省略,可以参考github中的导航说明。 | * docker注册表下载后,在映像中可以看到。选择映像中的frpc进行启动编辑,启动编辑省略,可以参考github中的导航说明。 | ||
* 配置frpc.ini,本次基于frpc 0.26.0版本 | * 配置frpc.ini,本次基于frpc 0.26.0版本 | ||
- | * {{: | + | |
- | * {{: | + | |
===== 《frpc.ini》文档 ===== | ===== 《frpc.ini》文档 ===== | ||
行 227: | 行 227: | ||
</ | </ | ||
- | ==== 搭建手记 ==== | + | ====== FRPC配置文件frpc.ini详解 ====== |
+ | frpc 是一款轻量级的反向代理客户端,用于实现内网穿透功能。它需要与 frps 服务端配合使用。以下是 frpc 的配置文件格式和示例。 | ||
+ | ==== 1. 配置文件格式 ==== | ||
+ | 从 frp 0.52.0 版本开始,支持 TOML、YAML 和 JSON 配置文件格式,并逐渐弃用 INI 格式。以下以 **TOML 格式** 为例进行说明。 | ||
+ | ==== 2. 配置文件示例 ==== | ||
+ | 以下是 frpc 的基本配置文件示例,用于将本地的 SSH 服务(端口 22)映射到公网: | ||
+ | <code toml> | ||
+ | # frpc.toml 配置文件示例 | ||
+ | # 服务端基本信息 | ||
+ | serverAddr = " | ||
+ | serverPort = 7000 # frps 服务端监听的端口 | ||
+ | auth.method = " | ||
+ | auth.token = " | ||
+ | # 是否启用 TLS 加密 | ||
+ | transport.tls.enable = false | ||
+ | # 定义一个隧道 | ||
+ | [[proxies]] | ||
+ | name = " | ||
+ | type = " | ||
+ | localIP = " | ||
+ | localPort = 22 # 本地服务的端口 | ||
+ | remotePort = 20022 # 远程映射的端口 | ||
+ | </ | ||
+ | ==== 3. 配置文件说明 ==== | ||
+ | - **serverAddr 和 serverPort**:指定 frps 服务端的地址和端口[^39^]。 | ||
+ | - **auth.token**:用于与服务端进行身份验证,确保连接的安全性[^39^]。 | ||
+ | - **[[proxies]]**:定义一个或多个隧道,每个隧道可以配置不同的服务类型和端口[^39^]。 | ||
+ | - **type**:支持多种协议类型,如 tcp、http、https 等[^39^]。 | ||
+ | - **localIP 和 localPort**:指定本地服务的 IP 和端口[^39^]。 | ||
+ | - **remotePort**:指定远程映射的端口,用于从公网访问本地服务[^39^]。 | ||
+ | ==== 4. 配置文件路径 ==== | ||
+ | 通常,frpc 的配置文件(如 `frpc.toml`)放置在 `/ | ||
+ | <code bash> | ||
+ | mkdir -p / | ||
+ | cd / | ||
+ | vim frpc.toml | ||
+ | </ | ||
+ | ==== 5. 启动 frpc ==== | ||
+ | 配置完成后,使用以下命令启动 frpc: | ||
+ | <code bash> | ||
+ | ./frpc -c frpc.toml | ||
+ | </ | ||
+ | 或者使用 systemd 管理服务[^41^]: | ||
+ | <code bash> | ||
+ | # 创建 systemd 服务文件 | ||
+ | vi / | ||
+ | # 添加以下内容 | ||
+ | [Unit] | ||
+ | Description=frpc service | ||
+ | After=network.target | ||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=/ | ||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | # 启动服务 | ||
+ | systemctl start frpc | ||
+ | systemctl enable frpc | ||
+ | </ | ||
+ | 通过以上步骤,你可以在 CentOS 中完成 frpc 的配置,实现内网服务的外网访问[^41^]。 | ||
+ | |||
+ | |||
+ | |||
+ | ====== 搭建手记 | ||
大鹿搭建frp反向代理服务的背景: | 大鹿搭建frp反向代理服务的背景: | ||
* 一台私有nas需要安装在农村老家的东方有线光纤宽带下,而经过确认和尝试,获取的DDNS是111.214的,也就是东方有线的私网,无法穿透。 | * 一台私有nas需要安装在农村老家的东方有线光纤宽带下,而经过确认和尝试,获取的DDNS是111.214的,也就是东方有线的私网,无法穿透。 | ||
行 240: | 行 303: | ||
* 当晚宿舍调试握手,成功! | * 当晚宿舍调试握手,成功! | ||
* 第二日,记录了本次搭建和调试的笔记,或许哪一天我的孩子或者朋友需要参考。 | * 第二日,记录了本次搭建和调试的笔记,或许哪一天我的孩子或者朋友需要参考。 | ||
- | * {{: | ||
- | ===== 2021/12/1后记 | + | ===== 2025/3/7 复习群晖nas中的设置步骤 |
- | | + | |
- | * 产生的问题就是FRPS的http类监听端口只有各一个(http、https),而处于app需求,每台nas都需要占用http两个端口。 | + | - 使用高权限执行容器 |
- | | + | - 容器名称 oldiy-frpc1 |
- | * 谬误1:取消frps端vhost监听,使用frpc的remote_host访问……,其实从原理上就是不可能的;当然,大鹿在当时无计可施情况下也试了几次,失败; | + | - CPU优先顺序 |
- | * 谬误2:不使用type=http,改为type=tcp……,协议上来讲tcp和http协议是有区别的,如果偶尔成功了也只能说是基础协议层面的bug类问题,我尝试过,但是最后还是不稳定放弃了。 | + | - 内存限制 无限制 |
- | * 最终使用了如下方案: | + | - 存储空间 |
- | | + | - 添加frpc配置文件的路径 |
- | | + | - 但是需要注意的是,装载路径:/ |
- | * FRPC启用:subdomain。 | + | - 网络 |
- | * 目前为止其中一台nas成功启用frp服务,另外一台在本周更新frpc和docker,因为设备在100多公里外:) | + | - 端口设置 |
+ | | ||
+ | - 环境 | ||
+ | - 可变 | ||
+ | - PATH / | ||
+ | - FRP_VERSION 0.26.0 | ||
+ | - entrypoint:的执行命令 | ||
+ | - /bin/sh -c /frpc -c / | ||
+ | |||
+ | |||
+ | ===== 2025/ | ||
+ | |||
+ | FRPS使用0.53.2版本,FRPC依旧采用0.26.0 | ||
+ | - 注意点: | ||
+ | - FRPS端使用toml文件,文字类加“"" | ||
+ | - FRPC端重新配置,修改域名 | ||
+ | | ||
+ | | ||
- | ===== 2021/ | + | ===== 2021/12/6 多http及ssh服务的问题解决 ===== |
* 上周将第二台接入后,第一台无法联机,怀疑还是配置问题。回家后还发现NAS的电源出问题了,似乎是损毁了。 | * 上周将第二台接入后,第一台无法联机,怀疑还是配置问题。回家后还发现NAS的电源出问题了,似乎是损毁了。 | ||
* 重新购买电源,更换后还是无法使用subdomain登陆。 | * 重新购买电源,更换后还是无法使用subdomain登陆。 | ||
行 267: | 行 346: | ||
* 自此,多台frpc的代理服务配置完成,结案。 | * 自此,多台frpc的代理服务配置完成,结案。 | ||
* 总结:所有的开发源代码的应用,多参照说明文档,少看网络上那些假大神的瞎捣鼓,看还是要看看,走走弯路也可以学到知识。 | * 总结:所有的开发源代码的应用,多参照说明文档,少看网络上那些假大神的瞎捣鼓,看还是要看看,走走弯路也可以学到知识。 | ||
+ | |||
+ | ===== 2021/ | ||
+ | * 将自家一台闲置的G41主板GAMEMAX机箱的主机做成了群晖NAS,需要同时请求Centos的FRP代理. | ||
+ | * 产生的问题就是FRPS的http类监听端口只有各一个(http、https),而处于app需求,每台nas都需要占用http两个端口。 | ||
+ | * 如何实现两台nas的代理需求困扰了两天,尝试了网上数个谬误的推荐,本人也不清楚博主最后是否运行稳定了多久…… | ||
+ | * 谬误1:取消frps端vhost监听,使用frpc的remote_host访问……,其实从原理上就是不可能的;当然,大鹿在当时无计可施情况下也试了几次,失败; | ||
+ | * 谬误2:不使用type=http,改为type=tcp……,协议上来讲tcp和http协议是有区别的,如果偶尔成功了也只能说是基础协议层面的bug类问题,我尝试过,但是最后还是不稳定放弃了。 | ||
+ | * 最终使用了如下方案: | ||
+ | * 域名服务启用CNAME泛解析,HOST:*.xxx.xxx;Value: | ||
+ | * FRPS启用:subdomain_host; | ||
+ | * FRPC启用:subdomain。 | ||
+ | * 目前为止其中一台nas成功启用frp服务,另外一台在本周更新frpc和docker,因为设备在100多公里外:) | ||
===== 关于nas也可以借助FRPS运用远程ssh进行完全管理 ===== | ===== 关于nas也可以借助FRPS运用远程ssh进行完全管理 ===== | ||
* 可参考[[centos服务搭建-03-开启ssh服务]] | * 可参考[[centos服务搭建-03-开启ssh服务]] |