博主时间(上海UTC+8)
摩羯座
发布于 2025-11-09 / 8 阅读
0
0

Frp保姆级教程(包含frps和frpc的搭建与使用)

文章转载自https://blog.hoshiroko.com/archives/37f497acabc8/

frps为服务端,frpc为客户端

1.frps的搭建与配置

1-1.frps常用配置文件介绍

  • 服务端连接端口(必填)

bindPort = 7000   #服务端监听端口,默认7000
  • 服务端身份认证及密码(可选,推荐)
    (OIDC身份认证可参考
    gofrp文档 咱这只讲最常用的token)

auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码
  • 服务端Web界面(可选)
    (如果不配置WebSSL,网页将以http方式呈现)

webServer.port = 7001   #Web页面端口号
webServer.user = "mint"   #(可选)Web页面账号
webServer.password = "mintdesu"   #(可选)Web页面密码
webServer.tls.certFile = "server.pem"   #(可选)WebSSL证书
webServer.tls.keyFile = "server.key"   #(可选)WebSSL私钥
  • 服务端HTTP(s)监听端口(可选)
    (一般都是80和443,如果被nginx什么的占用了那只能填别的)

vhostHTTPPort = 80
vhostHTTPSPort = 443

1-2.在Linux中搭建frps并配置

1-2-1.准备资源

这一步选择的版本是Linux

  • 前往 GitHub 下载frps

  • arm/arm64对应arm架构,amd64对应x86架构

直接 wget 也可以,比如

wget -c https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

比如我要解压到 /usr/local/frps 下,那么输入

tar -zxvf frp_0.65.0_linux_amd64.tar.gz   #解压文件
mv frp_0.65.0_linux_amd64 /usr/local   #将frp目录移动到/usr/local下
mv /usr/local/frp_0.65.0_linux_amd64 /usr/local/frps   #将frp目录改名成frps

到这时,我们文件就准备好了,下面开始配置并部署!

1-2-2.配置frps.toml

第一步我们先安装编辑器,如果已经安装过了请忽略此项

  • Ubuntu/Debian:

sudo apt update
sudo apt install vim

安装好编辑器后 cd 到 /usr/local/frps 目录下后编辑 TOML 配置文件

cd /usr/local/frps
vim frps.toml

这时我们配置 frps.toml 文件

(以下配置文件只是示例,要根据自己的实际情况进行适当的删改)

bindPort = 7000   #服务端监听端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "mint"   #服务端token密码
vhostHTTPPort = 80
vhostHTTPSPort = 443
transport.tls.force = false   #是否只接受启用了TLS的客户端连接
transport.maxPortsPerClient = 20   #每个客户端可以创建多少隧道
allowPorts = [
    { start = 10000, end = 15000 },   #端口范围设置为10000-15000可用
    { start = 30000, end = 40000 },   #同理,可设置多个端口范围开放
    { single = 25565 },   #单端口设置,指定25565端口可用
    { single = 25566 }    #同理,可以设置多个单端口开放
]
1-2-3.设置启动方式

可以cd到 /usr/local/frps 后使用 ./frps -c frps.toml
也可以直接使用

/usr/local/frps/frps -c /usr/local/frps/frps.toml

如果要设置开机自启,请新建一个frps的系统服务

nano /etc/systemd/system/frps.service

然后在 frps.service 内填入:

[Unit]
Description=frps
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.toml   #填写frps的安装目录
Restart=always

[Install]
WantedBy=multi-user.target

保存退出后输入下方内容即可设置frps为开机自启

systemctl enable frps   #开启开机自启动frps服务
systemctl disable frps   #关闭开机自启动frps服务
systemctl start frps   #启动frps服务
systemctl stop frps   #停止frps服务
systemctl status frps   #查看frps服务状态

2-1.frpc常用配置文件介绍

  • 因 frp 0.52.0 版本后支持 TOML、YAML 和 JSON 配置文件,并弃用 INI 配置文件,将在未来版本中删除对 INI 的支持 GitHub公告

  • 所以可能互联网上0.52.0版本以前的教程将在未来全部失效(如果你就用老版本当我没说)

  • 为了稳定与新功能,本篇的frps/frpc将全部采用 TOML 配置文件演示

frpc 是一个轻量级的反向代理客户端,可以实现内网穿透的功能。frpc 需要配合 frps 服务端使用,frpc 部署在需要穿透的内网服务所在的机器上,frps 需要部署在具有公网 IP 的机器上。

  • 连接服务器

serverAddr = "x.x.x.x"   #服务器地址
serverPort = 7000   #服务器端口
  • 服务端身份认证及密码
    (OIDC身份认证可参考
    gofrp文档 咱这只讲最常用的token)

auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
  • 创建TCP隧道

[[proxies]]
name = "xxx"   #隧道名称,可自定义,不能重复
type = "tcp"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = xxx   #本地端口,本地服务端口,比如mc服务器端口25565
remotePort = xxxxx    #远程端口,连接隧道时用的端口

2-2.在Linux中部署frpc并配置

这一步选择的版本是Linux

  • 前往 GitHub 下载frpc

  • arm/arm64对应arm架构,amd64对应x86架构

直接 wget 也可以,比如

wget -c https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz

如果国内GitHub无法下载,那就把文件下载到本地,再手动传到对应目录
无论是上述哪种方式下载,到最后都要解压到某目录下
比如我要解压到
/usr/local/frpc 下,那么输入

tar -zxvf frp_0.65.0_linux_amd64.tar.gz   #解压文件
mv frp_0.65.0_linux_amd64 /usr/local   #将frp目录移动到/usr/local下
mv /usr/local/frp_0.65.0_linux_amd64 /usr/local/frpc   #将frp目录改名成frpc

到这时,我们文件就准备好了,下面开始配置并部署!

2-2-1.配置frpc.toml

第一步我们先安装编辑器,如果已经安装过了请忽略此项

  • Ubuntu/Debian:

sudo apt update
sudo apt install vim   #若安装了nano可以跳过

安装好编辑器后 cd 到 /usr/local/frpc 目录下后编辑 TOML 配置文件

cd /usr/local/frpc
vim frpc.toml

这时我们配置 frpc.toml 文件
示例: (我要把我的SSH端口映射出去,以至于让我在外网可以访问)
注意!以下仅是演示示例,要根据自己的需求编写

serverAddr = "1.1.1.1"   #服务器地址
serverPort = 7000   #服务器端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#默认为true,当配置为true时,无法和vhostHTTPSPort端口复用

[[proxies]]
name = "ssh"   #隧道名称,可自定义,不能重复
type = "tcp"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "127.0.0.1"   #本地IP地址,如果是本机就127.0.0.1
localPort = 22   #本地端口,本地服务端口,比如mc服务器端口25565
remotePort = 20022    #远程端口,连接隧道时用的端口
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy
2-2-2.设置启动方式

可以cd到 /usr/local/frpc 后使用 ./frpc -c frpc.toml
也可以直接使用

/usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml

如果要设置开机自启,请新建一个frpc的系统服务

nano /etc/systemd/system/frpc.service

然后在 frpc.service 内填入:

[Unit]
Description=frpc
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml   #填写frpc的安装目录
Restart=always

[Install]
WantedBy=multi-user.target

保存退出后输入下方内容即可设置frpc为开机自启

systemctl enable frpc   #开启开机自启动frpc服务
systemctl disable frpc   #关闭开机自启动frpc服务
systemctl start frpc   #启动frpc服务
systemctl stop frpc   #停止frpc服务
systemctl status frpc   #查看frpc服务状态

2-3.在Nas系统中部署frpc并配置

2-3-1.使用第三方套件安装

群晖官方套件是没有收录frpc的,我们需要添加第三方套件
这里我们打开 套件中心→右上角设置→套件来源→新增
我们添加
矿神源 名称随便填

https://spk7.imnks.com/   #DSM7.x
https://spk.imnks.com/    #DSM6.x

添加完后点击确定,在左边我们可以看到新增 社群 此时我们打开它,找到 Frpc客户端 后安装即可
安装完成后打开,里面是配置文件填写页面,将配置文件填好后保存即可自动运行。
配置文件示例:(我要把我的DSM端口映射出去,以至于让我在外网可以访问)

注意!以下仅是演示示例,要根据自己的需求编写

serverAddr = "1.1.1.1"   #服务器地址
serverPort = 7000   #服务器端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#默认为true,当配置为true时,无法和vhostHTTPSPort端口复用

[[proxies]]
name = "dsm_http"   #隧道名称,可自定义,不能重复
type = "http"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "127.0.0.1"   #本地IP地址,如果是本机就127.0.0.1
localPort = 5000   #本地端口,本地Web服务端口
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy

[[proxies]]
name = "dsm_https"   #隧道名称,可自定义,不能重复
type = "https"  #隧道类型,可填http, https
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = 5001   #本地端口,本地Web服务端口
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy


评论