前言
本站之前介绍过在群晖中安装 frpc 客户端来实现内网穿透,很多新手不会使用命令行的方式来安装,本文将介绍如何使用 Docker 来简单安装配置 frpc 客户端。
frps 服务器端
freefrp.net 提供了免费 frp 内网穿透服务为广大用户提供测试试用服务。
VIP 服务器信息
免费服务器信息
- 服务器地址:
frp.freefrp.net
- 端口:
7000
- Token:
freefrp.net
- 提供端口:
80 443 10001-50000
- frps 版本为
0.56.0
- frp 信息的更新请访问和收藏专题站点 https://freefrp.net
frpc 客户端安装
完成整个配置大致需要三部
- 配置域名解析
- 编写配置文件
- 启动群晖容器
1. 域名解析
首先,将需要使用的域名在服务商控制台设置 CNAME
指向 frps 服务器地址.
下图以阿里云
为例.
2. 编写 frpc 配置文件
目前 frp 已经更新到0.56.0
版本,新版本修改了配置文件语法格式。所以本文教程也更新到最新版本。
创建 frpc.txt 文件
配置文件使用什么后缀都不影响,例如frpc.ini / frpc.txt / frpc.toml
都是可以的,只是由于群晖的文本编辑器
无法默认打开.toml
后缀文件,所以选择.txt
方便在群晖内直接修改,当然你也可以在电脑上创建编写完毕后在上传到群晖中。后续挂载至 docker 内部时为 toml 格式即可。
使用文本编辑器
来创建一个frpc.txt
文件。
本文以/Docker/frpc/frpc.txt
为例
编辑配置
serverAddr = "frp.freefrp.net"
serverPort = 7000
auth.method = "token"
auth.token = "freefrp.net"
[[proxies]]
name = "web1_nas"
# name 唯一字段,不能和服务器上其他用户的服务名重复。
type = "http"
# http 协议
localIP = "192.168.1.8"
# 需要穿透出去的服务 IP,例如群晖的 IP。
localPort = 5000
# 需要穿透出去的服务端口,例如群晖默认的 http 服务端口 5000。
customDomains = ["nas.yourdomain.com"]
# 自定义域名,上述已经修改过 CNAME 解析的域名,例如 nas.yourdomain.com。
[[proxies]]
name = "linux1_centos7"
# name 唯一字段,不能和服务器上其他用户的服务名重复。
type = "tcp"
# tcp 协议
localIP = "192.168.1.21"
# 需要穿透出去的服务 IP,例如我内网的一台 centos7 服务器的 IP。
localPort = 22
# 需要穿透出去的服务端口,例如 centos7 服务器的 ssh 登录端口。
remotePort = 22222
# 远程穿透端口,此端口不能和服务器上其他用户重复,也要遵循 frps 服务允许的端口范围。
frpc 的配置正确与否是容器能否正常启动的关键,大多网友留言咨询容器启动错误,几乎都是配置不规范导致的。针对新手小白用户,这里详细讲解每一行该如何配置。
如果你复制上述我提供的参考配置,你需要删除上述 # 号行的文字,否则 frpc 会报字符编码错误,建议删除后将文本修改为 UTF-8 或 简体中文(GB18030)。
frpc解读
第一段服务器信息一般不会出错,正确填写提供的信息即可。
第二段详细解读
name = "web1_nas"
必须修改,避免与你自己或者服务器上其他人的名称重复,由于无法知晓其他人设置的名称,建议使用你自己的域名+数字形式,例如[nas_xxx_com_3745283]
。这样能够有效的避免此问题。
type = "http"
穿透的协议,一般是 http 和 https 两种,对应的端口也不同,一定要确保你所选的协议和该协议的端口号保持一致。
localIP = "192.168.1.8"
需要穿透的设备的内网 IP,例如你群晖的内网 IP,注意 frpc 是运行在容器中,请不要填写 127.0.0.1 这样的 IP
。
localPort = 5000
此处也是容易出错的地方,这里为需要穿透的设备的 http 或者 https 协议对应的端口,例如群晖的是 5000 和 5001,那么上述 type 协议选择 http,此处就填写 5000,上述 type 协议如果选择 https,此处填写 5001。如果你曾经在群晖的控制面板内修改过端口,那么就需要改为修改过的端口。另外,内网穿透是无视路由器的端口转发配置,无论你是否设置过路由器,都可以忽略不管。
customDomains = ["nas.yourdomain.com"]
同一个域名可以配置两个协议,http 和 https,由于可能出现的手误,少打一个 s,就会导致同一个域名配置了 2 个相同 http,从而也可能会导致容器出错。请再三检查确保无误。
当第一个配置成功运行,并正常访问后,在来尝试添加更多条配置.
常见错误
- 名称与自己其他配置重复,或者与服务器上重复。
- 协议与域名重复
- 协议与端口配置错误
- frpc.ini 编码问题
3. 创建容器
由于国内网络对官方 docker hub 不太友好,建议无法下载镜像的用户可以修改注册表。
注册表 - 设置 - 新增
注册表名称随意填写
注册表 URL:https://index.docker.io
Docker 镜像下载
注册表 - 搜索 frpc - 选择 stilleshan/frpc - 下载
选择 latest 为最新版本
映像中查看已完成下载
创建容器
选择映像运行
勾选自动重启,也可不勾选。
选择添加文件
弹出本地文件,选择刚才在docker/frpc
文件夹内创建的frpc.txt
右边填写框,请填写 /frp/frpc.toml 不要修改,这个地址是镜像内部 frpc.toml 的路径。
填写完毕下一步完成
容器 - 选中刚才启动的 frpc 容器 - 详情
查看日志连接成功
结语
更多群晖 NAS 相关技巧,教程及信息,请持续关注本站群晖 Synology 专栏:
413 条评论
内网穿透是不是还需要做端口转发
不用
没启动成功
HFY_WT_20200830 重复了
frp已经是连接成功了.
而且访问http会自动跳转到5001的端口,说明已经到达群晖了.
检查下本地nas问题吧
博主,请问这个问题有可能出在哪里呢?和群晖所处的网络配置有关系吗?还是群晖内部的设置问题?有点迷茫
老哥,我碰到一个问题,我按你的教程搭建好frps。但是群晖docker的frpc老是意外停止,frpc.ini配置样本是按您的来的,您要是有时间帮我看看问题出这哪里。
frps的配置:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001
kcp_bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_addr = 0.0.0.0
dashboard_port = 8888
dashboard_user = admin
dashboard_pwd = admin
log_file = ./frps.log
log_level = info
log_max_days = 3
disable_log_color = false
token = 12345678
allow_ports = 2000-3000,3001,3003,4000-50000
max_pool_count = 5
max_ports_per_client = 0
subdomain_host = beigu.co
tcp_mux = true
群晖的frpc:
[common]
server_addr = 94.199.102.20
server_port = 7000
token = 12345678
[file]
type = http
local_ip = 127.0.0.1
local_port = 66
custom_domains = file.beigu.pro
文件夹路径及名称一定要对,我当时就是不停自动重启,后来改好了就ok,还有type类型不能用http,改回tcp就正常启动,用http就启动不了,不知道啥原因!用frp能远程连接dsm,emby,qb等,就是远程访问wordpress被拒绝,不知道啥原因?
要看群货docker的日志.
在就是你这个IP我访问显示不是frp的界面,有安装nginx啊
请问一下群晖上的MariaDB数据库 frp穿透 后连接不上,是我哪里出了问题呀
我开启了远程连接,配置文件测试其他端口是没有问题的
感觉这个和远程的ssh是一类问题,我看一些教程是把type改成了tcp,但还是不行,不知道哪里还需要再改动一下
是啊,就是tcp端口,本地和远程端口要配置对.你可以贴下你的frpc.ini 的ID 我查看下
配置确实没问题吗? 测试过其他服务之类没?
我最开始用的是free.frp的那个,后来看了发现这个没开tcp,现在改成frp2,你看看我的问题处在那
[common]
server_addr = frp2.ioiox.com
server_port = 7007
token = www.ioiox.com
[datameichuantk]
type = tcp
local_ip = 127.0.0.1
local_port = 3307
remote_port = 3307
custom_domains = data.meichuan.tk
我在后台看你的48XXX的端口是通的,已经没问题了.
你连接的服务器地址用 frp2.ioiox.com 就可以了.
另外free的tcp端口也开了
远程tcp端口池为 4000-50000 自己选一个,如果冲突了就是别人用了,继续换个能用的
明白了,是不是我只需要修改 remote_port = 3307 找到一个合适的就可以,server_port = 7007和其他的都不用改对么
是的
不过看你的域名cname还没指向frp服务器,tcp的通讯是可以直接用我提供的服务器域名.
我换了很多端口,他的报错是
Can't connect to MySQL server on 'data.meichuan.tk' (101 "Network is unreachable")
这是不是端口不可用的意思啊
还是要理解点基础吧.
data.meichuan.tk 改了解析吗?都解析到什么地方去了
是我sb了,我说为什么连不上。。。尴尬尴尬,见笑了
我改了一下。但找到现在还没找到可以用的端口。。。(ó﹏ò。)
frpc 容器无法启动,提示
2020-07-19 02:53:16 stdout dial tcp 127.0.0.1:7000: connect: connection refused
2020-07-19 02:53:16 stdout 2020/07/19 02:53:16 [1;33m[W] [service.go:101] login to server failed: dial tcp 127.0.0.1:7000: connect: connection refused[0m
按教程一路下来,始终无法启动容器,请求帮助,谢谢。
没有连上服务器,frpc.ini贴下
[common]
server_addr = free.frp.ioiox.com
server_port = 7007
token = www.ioiox.com
[pns.nas.bili]
type = http
local_ip = 10.0.3.232
local_port = 5200
custom_domains = nas.bili.shop
[pns.nas.bilis]
type = https
local_ip = 10.0.3.232
local_port = 5201
custom_domains = nas.bili.shop
连接不到服务器.你测试ping下服务器看看
ping free.frp.ioiox.com -t
正在 Ping free.frp.ioiox.com [47.74.212.187] 具有 32 字节的数据:
来自 47.74.212.187 的回复: 字节=32 时间=84ms TTL=48
来自 47.74.212.187 的回复: 字节=32 时间=84ms TTL=48
来自 47.74.212.187 的回复: 字节=32 时间=84ms TTL=48
来自 47.74.212.187 的回复: 字节=32 时间=84ms TTL=48
来自 47.74.212.187 的回复: 字节=32 时间=85ms TTL=48
来自 47.74.212.187 的回复: 字节=32 时间=83ms TTL=48
这个问题的确存在过,目前也没法搞清楚到底是哪个问题.也有可能是防火墙之类的.
你可以换个平台或者其他方式来排查问题.
是的,我换了一个平台测试frpc完全正常,应该是群晖的问题。
我在Docker里下载了其它的frpc 全部都不能启动。
其它容器,例如Frps可以正常启动。
好的,我再试试看,谢谢博主。(☆ω☆)