前言
本站关于 frp 内网穿透的相关教程已经非常丰富了,但也有很多新手朋友在配置时遇到各种问题,大多数都是因为客户端 frpc.ini 的配置有误导致失败.本文针对新手用户详细解释下 frpc.ini 的配置方法.
客户端frpc
frpc 为 frp 内网穿透服务的客户端,可以安装到家庭内网中的支持的任意设备中,例如安装到路由器,群晖NAS,Linux服务器或者 docker 容器.安装好客户端后,可以配置整个内网中任意设备
的端口穿透服务.简单来说,你可以在路由器上安装配置 frpc ,为路由器提供管理页面穿透,为群晖NAS提供DSM管理页面穿透,为群晖内各种服务提供穿透,还可以给内网各种服务器的SSH端口提供穿透.
frp 客户端 frpc 支持
群晖NAS
,群晖NAS docker
,Linux服务器
或虚拟机
,OpenWrt路由器
,梅林固件路由器
等多种平台和环境安装部署.群晖NAS docker安装
群晖NAS 一键脚本安装
内网 Linux 服务器或虚拟机 一键脚本安装
参考 stilleshan/frpc 项目中的一键脚本安装命令
内网 Linux 服务器 docker
参考 stilleshan/frpc 项目中的 Linux 服务器 docker 安装
梅林固件路由器安装
配置frpc.ini
先分享一个标准简单的frpc.ini配置示例以供参考:
[common]
server_addr = frp.freefrp.net
server_port = 7000
token = freefrp.net
# 以上为frp服务器信息
# 以下为本地内网客户端信息
# 群晖DS1815+管理页面
[DS1815_DSM_HTTP]
type = http
local_ip = 192.168.1.2
local_port = 5000
custom_domain = nas.ioiox.com
[DS1815_DSM_HTTPS]
type = https
local_ip = 192.168.1.2
local_port = 5001
custom_domain = nas.ioiox.com
# 群晖Drive 桌面客户端
[DS1815_Drive_Desktop]
type = tcp
local_ip = 192.168.1.2
local_port = 6690
remote_port = 46690
custom_domain = drive.ioiox.com
服务器信息
服务器信息分别为服务器地址
,端口
和Token
.示例中的信息是本站提供的免费服务器信息,正确的填写即可正常使用.
[common]
server_addr = frp.freefrp.net
server_port = 7000
token = freefrp.net
HTTP/HTTPS配置
自定义穿透服务名
,命名规则必须唯一
,不能和本地以及服务器上所有用户
的服务名重复,建议取复杂的名字,或者在名字后加上随机字符例如类似 [DSM_HTTP_123hyTgfDG]
.
type
即穿透类型一般分为HTTP
,HTTPS
及TCP
三种,其中HTTP
和HTTPS
是作为Web网站穿透服务,而TCP
一般用于其他服务连接使用,比如Linux服务器的SSH登陆,Windows的3389远程桌面,等无需使用浏览器访问的场景.
local_ip
即本地设备IP为需要穿透的服务或者设备的内网IP地址.例如群晖NAS的内网IP为192.168.1.2
local_port
即本地服务端口,也是需要穿透的服务端口,当上文type =
的值为http
时,此处的本地端口应对应为设备或服务的HTTP默认端口.例如群晖DSM的默认HTTP
端口为5000.你可以尝试在浏览器输入http://192.168.1.2:5000
来检查是否是你需要穿透的服务页面.
custom_domain
即自定义域名,需为此服务准备一个域名,并配置CNAME指向frp服务器地址.例如为群晖DSM管理界面分配一个 nas.ioiox.com 的二级域名.
例如:服务器提供了 frp.com 的泛域名服务,那么设置 subdomain = nas 就可以使用 nas.frp.com 来穿透本条服务,当然主机头也是唯一性的,先到先得.
此种配置多数用于 自建frps服务器 ,方便自己使用一个域名的泛域名来配置穿透.
TCP端口配置
常规情况下内网穿透服务器一般也会提供除了80和443端口以外的其他TCP端口,但服务器端是不支持80/443以外的TCP端口复用
的.例如以下最常见的群晖Drive桌面客户端的TCP端口6690.
[DS1815_Drive_Desktop]
type = tcp
local_ip = 192.168.1.2
local_port = 6690
remote_port = 46690
custom_domain = drive.ioiox.com
type =
类型为tcp
协议时,需要增加remote_port =
远程端口参数,由于每台服务器只有一个6690端口,所以此端口大有可能被第一个使用此端口的用户占用,此时需要自定义一个没有使用
的端口,服务器TCP端口池常规会开放 4000-50000 之间的端口,可以在此之间选择任意未被使用的
端口来使用穿透.例如46690端口.PC和macOS客户端登陆群晖 Drive 时,域名后加上46690
即可连接到你的服务器.
目前只能靠尝试修改remote_port =
的端口号去登陆验证端口是否被占用,如果你使用了6690
,然后登陆Drive时提示账号密码错误,那肯定是6690
端口已经被其他用户的群晖Drive占用,此时你登陆的是他的服务器,自然是提示账号密码错误.请更换remote_port远程端口
直到可以登陆到你的群晖即可.
域名复用
HTTP/HTTPS 域名复用
上文提到http/https
的80/443
端口是支持复用的,各用户都穿透了内网的网站到这台服务器的80/443
端口,当服务器收到80/443
端口的网站访问请求时,frp服务器端会根据访问的域名来识别,是具体访问哪位用户的内网网站.所以配置http/https
的穿透时,域名是不可复用的.
图中同一个域名nas.ioiox.com
被配置过两次http
协议,分别穿透了192.168.1.2 的 DS1815+
和192.168.1.3 的 DS218+
,这种情况下frpc客户端是无法生效,因为当你访问nas.ioiox.com
时,服务器是不知道该转发给哪一台群晖的管理界面.
TCP 协议域名复用
TCP端口穿透时,其域名可以复用
,使用任何解析到此服务器的域名都可以,即使是使用服务器地址free.frp.ioiox.com
也都可以,因为TCP端口的不复用,使得你穿透的remote_port 远程端口
就是唯一供你使用的端口,无需 frp 服务器通过域名来识别请求,服务器仅凭访问的端口号就知道该转发给哪位用户.
结语
本文是针对 frp 内网穿透的新手用户,希望能帮助到大家能够更快的理解端口,转发,穿透等基础原理,然后可以举一反三的配置更多适合自己的服务.更多更高级的 frp 配置方法可以参考 frp 项目官方文档,或者加入本站TG群组讨论:
更多FRP内网穿透相关技巧,教程及信息,请持续关注本站FRP内网穿透专栏:
63 条评论
用另外一个frp的时候成功穿透了,也是照着群晖的配置来自己配置的,但是他的只开放了tcp,没开放http
威联通,同一个配置文件,用低版本的oldiy/frpc v26左右可以启动成功,但是访问不了
换成你的stilleshan/frpc v34版本的启动的时候提示/bin/sh: /frp/frpc: not found 错误。
都是一样的配置和参数
应该不会提示这个吧.NAS的cpu是x86架构的吗?
是的,一致提示这个错误,intel j4125 cpu 威联通的ts-453d-mini
没用过威联通,不知道它的docker是怎么用.
按道理应该通用的,我的容器在Linux服务器和X86群晖上都没问题.
我也觉得是通用的,只是配置项有些不同,群晖的配置简单明了一些,用另外一个frp
其实这个镜像非常简单,除了需要挂载frpc.ini,没其他要配的..看错误信息是找不到 frpc 主程序,所以才奇怪
你这么说,那我知道什么原因了,威联通的不能直接挂载ini文件,是挂目录的,你的最新版本是没有用变量,我挂到/frp,导致把/frp文件给覆盖了,所以一直提示找不到frpc, 刚刚弄了一个没有挂在的,提示内容就变了,是ini的配置不对导致失败的了
嗯,我也猜测过可能是这个问题.没想到威联通无法挂载单独的文件.
来点赞学习!