logo 🤗

技术视野

聚焦科技前沿,分享技术解析,洞见未来趋势。在这里,与您一起探索人工智能的无限可能,共赴技术盛宴。

基于 frp(Fast Reverse Proxy)

目标:1 台服务端 + 2 台客户端,实现内网穿透(SSH 示例)

一、背景知识

FRP 是什么?

FRP 全称是:

Fast Reverse Proxy

你可以把它简单理解成:

让你在外面,也能访问家里或者内网里的设备和服务。

比如:

  • 你想在公司远程 SSH 到家里的 Linux 主机
  • 你想在外面访问家里的 NAS
  • 你想在手机上连接自己内网里的某个服务
  • 你想让两台不在同一个网络里的设备互通

这时候,FRP 就能派上用场。


用一句话理解整体逻辑

你只要先记住这句话:

外面的电脑或手机 → 服务器(frps) → 你家里的设备(frpc)

这里的“外面的设备”不一定非得是电脑,也可以是手机。
如果你平时更常用手机访问,那么客户端 B 也可以理解成手机端。
例如你就可以使用 frp助手 来做访问和管理。


这篇文章里有哪几个角色?

为了方便理解,这篇教程里一共会出现 3 个角色:

角色说明
frps服务端,放在公网服务器上,负责中转和协调
frpc-A客户端 A,放在家里的设备上,负责提供服务
frpc-B客户端 B,放在外面的电脑或手机上,负责访问服务

STCP 和 XTCP 怎么理解?

STCP

STCP 的特点是:

  • 更稳
  • 更适合新手
  • 更容易先跑通

你可以简单理解成:

外面的电脑或手机 → frps → 家里的设备

也就是说,数据会经过服务端中转。

XTCP

XTCP 的特点是:

  • 理论上更快
  • 更接近直连
  • 但不一定成功,和网络环境有关系

你可以简单理解成:

外面的电脑或手机 → 家里的设备

它会尽量尝试让两端直接通信。


安全一定要做:token 和 secretKey

为了防止别人乱连你的服务,至少要配置这两个东西:

  • auth.token:客户端和服务端之间的认证口令
  • secretKey:某个代理服务自己的访问密钥

下面这些值只是示例,你一定要改成自己的,不要长期直接照抄:

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
secretKey = "ChangeMe_STCP_or_XTCP_Key_2026_A8!vK2#q"

建议你自己改成:

  • 更长一点
  • 带大小写字母
  • 带数字
  • 带符号

二、快速入门:公网 IPv4 部署

这个方案最适合新手。
如果你有一台公网 IPv4 服务器,建议先从这个方案开始。

2.1 先理解整体结构

在这一部分里:

  • frps 放在公网服务器上
  • frpc-A 放在家里的电脑、NAS 或 Linux 主机上
  • frpc-B 放在外面的电脑或手机上,用来访问

访问路径大致就是:

客户端 B → frps → 客户端 A

如果 XTCP 成功,则会尽量变成更接近直连的方式。


2.2 先准备这几样东西

开始前,你最好先准备好:

  1. 一台公网 IPv4 服务器
  2. 一台家里的设备(电脑 / NAS / Linux 主机)
  3. 一台外面的访问设备(电脑或手机)
  4. frp 程序文件
  5. 家里的设备上已经开启 SSH(本教程用 SSH 演示)

2.3 手动方式跑通(一定先做)

先不要急着上 Docker。
最适合排错的方法,就是先手动跑通一次。

2.3.1 服务端 frps 配置

先在公网服务器上创建一个文件:frps.toml

bindPort = 7000
# 说明:frps 监听的端口
# 客户端 A 和客户端 B 都要连接这个端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:客户端连接 frps 时使用的认证 token
# 这里是示例值,请务必修改成你自己的

2.3.2 防火墙重点提醒(IPv4)

这是重点:如果服务端防火墙没有放行 bindPort 对应的端口,客户端一定连不上。

比如这里你配置的是:

bindPort = 7000

那就要确保公网服务器已经放行 TCP 7000

你至少要检查这几层:

  1. 云服务器安全组

    • 阿里云
    • 腾讯云
    • AWS
    • Oracle Cloud
    • 其他云平台
  2. 服务器系统防火墙

    • ufw
    • firewalld
    • iptables
  3. frps 是否真的成功启动并监听了端口

很多新手会以为是 frp 配错了,实际上经常只是端口没开放。

2.3.3 启动服务端

./frps -c frps.toml

如果启动成功,先不要关掉这个终端。

2.3.4 客户端 A 配置(家里的设备,提供 SSH 服务)

假设:

  • 客户端 A 是家里的电脑、NAS 或 Linux 主机
  • 本机已经开启了 SSH
  • SSH 默认端口还是 22

先创建文件:frpc-a.toml

serverAddr = "你的公网服务器IP"
# 说明:这里填写 frps 所在服务器的公网 IPv4 地址

serverPort = 7000
# 说明:这里填写 frps 的端口
# 必须和服务端 frps.toml 里的 bindPort 一致

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:这里必须和服务端 frps.toml 的 token 完全一致

[[proxies]]
name = "ssh-stcp"
# 说明:这是 STCP 这组服务的名字
# 客户端 B 访问时要通过这个名字找到它

type = "stcp"
# 说明:这里表示使用 STCP 模式
# STCP 更稳,更适合新手先跑通

secretKey = "ChangeMe_STCP_Key_2026_R8!pW3@k"
# 说明:这是 STCP 这组服务自己的访问密钥
# 客户端 B 访问 STCP 时也必须填一样的值
# 这是示例值,请你自己改掉

localIP = "127.0.0.1"
# 说明:客户端 A 上要暴露出去的本地服务地址
# 如果你暴露的是本机 SSH,一般就是 127.0.0.1

localPort = 22
# 说明:客户端 A 上要暴露出去的本地服务端口
# 这里是 SSH 默认端口 22

[[proxies]]
name = "ssh-xtcp"
# 说明:这是另一组代理,专门给 XTCP 使用
# 它和前面的 ssh-stcp 是并存关系,不是替换关系

type = "xtcp"
# 说明:这里表示使用 XTCP
# XTCP 会尽量让客户端 B 直接连到客户端 A
# 理论上更快,但不一定成功

secretKey = "ChangeMe_XTCP_Key_2026_P2P_Z7@xD4!m"
# 说明:这是 XTCP 这组服务自己的访问密钥
# 建议和 STCP 分开,不要混用
# 也是示例值,请你自己改掉

localIP = "127.0.0.1"
# 说明:本地服务地址
# 这里还是本机 SSH

localPort = 22
# 说明:本地服务端口
# 这里还是 SSH 的 22

2.3.5 启动客户端 A

./frpc -c frpc-a.toml

2.3.6 客户端 B 配置(外面的电脑或手机,用来访问)

这里的客户端 B,你可以理解成“访问端”。

它可以是:

  • 外面的电脑
  • 你的笔记本
  • 你的另一台远程设备
  • 或者你的手机(例如使用 frp助手 来访问)

先创建文件:frpc-b.toml

serverAddr = "你的公网服务器IP"
# 说明:这里同样填写 frps 所在服务器的公网 IPv4 地址

serverPort = 7000
# 说明:这里填写 frps 的端口
# 必须和服务端保持一致

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:这里必须和 frps、客户端 A 完全一致
# 只要 token 不一致,就会直接连接失败

[[visitors]]
name = "ssh-stcp-visitor"
# 说明:这是客户端 B 这边给 STCP visitor 起的名字
# 这个名字主要是给你自己区分用,方便看配置

type = "stcp"
# 说明:这里表示访问的是 STCP 服务

serverName = "ssh-stcp"
# 说明:这里非常重要
# 它必须对应客户端 A 里 [[proxies]] 的 name
# 也就是前面客户端 A 配置里的 name = "ssh-stcp"

secretKey = "ChangeMe_STCP_Key_2026_R8!pW3@k"
# 说明:这里必须和客户端 A 里的 STCP secretKey 完全一致
# 只要这里不一致,就算其他都对,也无法访问

bindAddr = "127.0.0.1"
# 说明:frpc 会在客户端 B 本机监听一个地址
# 这里填 127.0.0.1,表示只在本机开放

bindPort = 6000
# 说明:frpc 会在客户端 B 本机监听 6000 端口
# 以后你 ssh 登录时,实际连的就是这个端口

[[visitors]]
name = "ssh-xtcp-visitor"
# 说明:这是给 XTCP 用的 visitor 名字

type = "xtcp"
# 说明:这里表示访问的是 XTCP 服务

serverName = "ssh-xtcp"
# 说明:这里必须对应客户端 A 里 XTCP 那组代理的 name
# 也就是前面客户端 A 里的 name = "ssh-xtcp"

secretKey = "ChangeMe_XTCP_Key_2026_P2P_Z7@xD4!m"
# 说明:这里必须和客户端 A 的 XTCP secretKey 完全一致

bindAddr = "127.0.0.1"
# 说明:同样是在客户端 B 本机监听

bindPort = 6001
# 说明:这里给 XTCP 单独开一个本地端口
# 这样它和 STCP 分开,两个方案可以同时保留

2.3.7 启动客户端 B

./frpc -c frpc-b.toml

2.3.8 开始测试

先测试最稳的 STCP:

ssh 用户名@127.0.0.1 -p 6000

如果能登录,说明 STCP 已经成功。

再测试 XTCP:

ssh 用户名@127.0.0.1 -p 6001

如果能通,说明 XTCP 也成功了。
如果不通,也很正常,继续使用前面的 6000 就行。

你可以把它记成这样:

  • 127.0.0.1:6000 → STCP,稳定保底
  • 127.0.0.1:6001 → XTCP,能通就更快

2.4 Docker 部署(推荐长期运行)

真正长期运行时,大多数用户都会选择 Docker。
因为它更方便迁移、备份、重启和管理。

2.4.1 Docker 运行 frps(服务端)

第 1 步:创建目录

在公网服务器上执行:

mkdir -p ~/frp/frps
cd ~/frp/frps

第 2 步:创建配置文件 frps.toml

例如:

nano frps.toml

把下面内容粘贴进去:

bindPort = 7000
# 说明:frps 监听端口
# 客户端都会连接这个端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:客户端连接 frps 时使用的认证 token
# 一定要改成你自己的值

保存后执行:

ls -l

确认 frps.toml 已经存在。

第 3 步:启动 frps 容器

docker run -d \
  --name frps \
  --restart=always \
  -p 7000:7000 \
  -v ./frps.toml:/etc/frp/frps.toml \
  snowdreamtech/frps -c /etc/frp/frps.toml

这条命令中比较关键的参数:

  • -d:后台运行
  • --name frps:容器名叫 frps
  • --restart=always:Docker 重启后自动拉起
  • -p 7000:7000:映射端口
  • -v ./frps.toml:/etc/frp/frps.toml:挂载配置文件

第 4 步:查看状态和日志

docker ps
docker logs -f frps

如果日志没有报错,一般就说明 frps 已经正常运行。

第 5 步:再次确认防火墙

这是重点:就算容器正常运行,如果公网服务器安全组或系统防火墙没有放行 TCP 7000,客户端照样连不上。

2.4.2 Docker 运行 frpc-A(客户端 A)

第 1 步:创建目录

mkdir -p ~/frp/frpc-a
cd ~/frp/frpc-a

第 2 步:创建配置文件 frpc.toml

nano frpc.toml

内容如下:

serverAddr = "你的公网服务器IP"
# 说明:这里填写 frps 所在服务器的公网 IPv4 地址

serverPort = 7000
# 说明:这里填写 frps 的端口
# 必须和服务端 frps.toml 里的 bindPort 保持一致

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:这里必须和 frps 的 auth.token 完全一致

[[proxies]]
name = "ssh-stcp"
# 说明:这是 STCP 服务的名字

type = "stcp"
# 说明:STCP 是更稳定的模式
# 推荐先使用它

secretKey = "ChangeMe_STCP_Key_2026_R8!pW3@k"
# 说明:这是 STCP 服务自己的访问密钥

localIP = "127.0.0.1"
# 说明:要暴露出去的本地服务地址

localPort = 22
# 说明:要暴露出去的本地端口

[[proxies]]
name = "ssh-xtcp"
# 说明:这是 XTCP 服务的名字

type = "xtcp"
# 说明:XTCP 会尽量让访问端直连到客户端 A

secretKey = "ChangeMe_XTCP_Key_2026_P2P_Z7@xD4!m"
# 说明:这是 XTCP 服务自己的访问密钥

localIP = "127.0.0.1"
# 说明:本地服务地址

localPort = 22
# 说明:本地服务端口

保存后执行:

ls -l

确认文件已经存在。

第 3 步:启动 frpc-A 容器

docker run -d \
  --name frpc-a \
  --restart=always \
  --network=host \
  -v ./frpc.toml:/etc/frp/frpc.toml \
  snowdreamtech/frpc -c /etc/frp/frpc.toml

其中:

  • --network=host:直接使用宿主机网络,更省心
  • -v ./frpc.toml:/etc/frp/frpc.toml:挂载配置文件

第 4 步:查看状态和日志

docker ps
docker logs -f frpc-a

2.4.3 Docker 运行 frpc-B(客户端 B)

这里的客户端 B,依然可以理解成:

  • 外面的电脑
  • 你的笔记本
  • 你的另一台设备
  • 或者你的手机(例如使用 frp助手 来访问)

第 1 步:创建目录

mkdir -p ~/frp/frpc-b
cd ~/frp/frpc-b

第 2 步:创建配置文件 frpc.toml

nano frpc.toml

内容如下:

serverAddr = "你的公网服务器IP"
# 说明:这里填写 frps 所在服务器的公网 IPv4 地址

serverPort = 7000
# 说明:这里填写 frps 的监听端口
# 必须和 frps.toml 里的 bindPort 一样

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:这里必须和 frps、客户端 A 的 token 完全一致

[[visitors]]
name = "ssh-stcp-visitor"
# 说明:这是客户端 B 上 STCP visitor 的名字

type = "stcp"
# 说明:这里表示访问的是 STCP 模式

serverName = "ssh-stcp"
# 说明:这里必须对应客户端 A 里 STCP 那组代理的 name

secretKey = "ChangeMe_STCP_Key_2026_R8!pW3@k"
# 说明:这里必须和客户端 A 里 STCP 的 secretKey 完全一致

bindAddr = "127.0.0.1"
# 说明:frpc-B 会在本机监听一个地址

bindPort = 6000
# 说明:frpc-B 会在本机监听 6000 端口
# 这对应的是 STCP 方案

[[visitors]]
name = "ssh-xtcp-visitor"
# 说明:这是客户端 B 上 XTCP visitor 的名字

type = "xtcp"
# 说明:这里表示访问的是 XTCP 模式

serverName = "ssh-xtcp"
# 说明:这里必须对应客户端 A 里 XTCP 那组代理的 name

secretKey = "ChangeMe_XTCP_Key_2026_P2P_Z7@xD4!m"
# 说明:这里必须和客户端 A 里 XTCP 的 secretKey 完全一致

bindAddr = "127.0.0.1"
# 说明:同样是在客户端 B 本机监听

bindPort = 6001
# 说明:给 XTCP 单独开一个本地端口
# 这样 STCP 和 XTCP 可以同时存在

保存后执行:

ls -l

确认 frpc.toml 已经存在。

第 3 步:启动 frpc-B 容器

docker run -d \
  --name frpc-b \
  --restart=always \
  --network=host \
  -v ./frpc.toml:/etc/frp/frpc.toml \
  snowdreamtech/frpc -c /etc/frp/frpc.toml

第 4 步:查看状态和日志

docker ps
docker logs -f frpc-b

第 5 步:开始测试

先测试最稳的 STCP:

ssh 用户名@127.0.0.1 -p 6000

再测试 XTCP:

ssh 用户名@127.0.0.1 -p 6001

建议顺序永远是:

  1. 先测 6000
  2. 6000 通了,再测 6001

如果 6001 不通,继续使用 6000 就可以了。


2.5 docker-compose 部署(NAS 用户常用)

如果你是:

  • NAS 用户
  • 家庭服务器用户
  • 想把配置文件和容器都放在一个目录里统一管理

那 docker-compose 会更舒服。

2.5.1 docker-compose 运行 frps(服务端)

第 1 步:创建目录

mkdir -p ~/frp/frps-compose
cd ~/frp/frps-compose

第 2 步:创建配置文件 frps.toml

nano frps.toml

内容如下:

bindPort = 7000
# 说明:frps 监听端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:客户端连接 frps 时使用的认证 token
# 一定要改成自己的

第 3 步:创建 docker-compose.yml

nano docker-compose.yml

内容如下:

version: "3.8"

services:
  frps:
    image: snowdreamtech/frps
    container_name: frps
    restart: always
    ports:
      - "7000:7000"
    volumes:
      - ./frps.toml:/etc/frp/frps.toml
    command: -c /etc/frp/frps.toml

第 4 步:启动

docker compose up -d

第 5 步:查看状态和日志

docker compose ps
docker compose logs -f

第 6 步:再次确认防火墙

这是重点:compose 启动成功,不等于外网一定能连通。

你仍然要确保:

  • 云服务器安全组放行了 TCP 7000
  • 系统防火墙放行了 TCP 7000

2.5.2 docker-compose 运行 frpc-A(客户端 A)

第 1 步:创建目录

mkdir -p ~/frp/frpc-a-compose
cd ~/frp/frpc-a-compose

第 2 步:创建配置文件 frpc.toml

nano frpc.toml

内容如下:

serverAddr = "你的公网服务器IP"
# 说明:这里填写 frps 所在服务器的公网 IPv4 地址

serverPort = 7000
# 说明:这里填写 frps 的端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:这里必须和 frps 一致

[[proxies]]
name = "ssh-stcp"
# 说明:STCP 服务名

type = "stcp"
# 说明:稳定模式,推荐优先用

secretKey = "ChangeMe_STCP_Key_2026_R8!pW3@k"
# 说明:STCP 服务密钥,客户端 B 必须一致

localIP = "127.0.0.1"
# 说明:本机 SSH 地址

localPort = 22
# 说明:本机 SSH 端口

[[proxies]]
name = "ssh-xtcp"
# 说明:XTCP 服务名

type = "xtcp"
# 说明:直连模式,可能更快,但不一定成功

secretKey = "ChangeMe_XTCP_Key_2026_P2P_Z7@xD4!m"
# 说明:XTCP 服务密钥,客户端 B 必须一致

localIP = "127.0.0.1"
# 说明:本机 SSH 地址

localPort = 22
# 说明:本机 SSH 端口

第 3 步:创建 docker-compose.yml

nano docker-compose.yml

内容如下:

version: "3.8"

services:
  frpc-a:
    image: snowdreamtech/frpc
    container_name: frpc-a
    restart: always
    network_mode: host
    volumes:
      - ./frpc.toml:/etc/frp/frpc.toml
    command: -c /etc/frp/frpc.toml

第 4 步:启动

docker compose up -d

第 5 步:查看状态和日志

docker compose ps
docker compose logs -f

2.5.3 docker-compose 运行 frpc-B(客户端 B)

这里的客户端 B,同样可以是:

  • 外面的电脑
  • 外面的另一台设备
  • 或者手机(例如使用 frp助手 来访问)

第 1 步:创建目录

mkdir -p ~/frp/frpc-b-compose
cd ~/frp/frpc-b-compose

第 2 步:创建配置文件 frpc.toml

nano frpc.toml

内容如下:

serverAddr = "你的公网服务器IP"
# 说明:这里填写 frps 所在服务器的公网 IPv4 地址

serverPort = 7000
# 说明:这里填写 frps 的端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:这里必须和 frps、客户端 A 一致

[[visitors]]
name = "ssh-stcp-visitor"
# 说明:客户端 B 上 STCP visitor 的名字

type = "stcp"
# 说明:访问 STCP 模式

serverName = "ssh-stcp"
# 说明:这里必须对应客户端 A 的 STCP 服务名

secretKey = "ChangeMe_STCP_Key_2026_R8!pW3@k"
# 说明:这里必须和客户端 A 的 STCP 密钥一致

bindAddr = "127.0.0.1"
# 说明:在客户端 B 本机监听

bindPort = 6000
# 说明:以后通过本机 6000 端口访问 STCP

[[visitors]]
name = "ssh-xtcp-visitor"
# 说明:客户端 B 上 XTCP visitor 的名字

type = "xtcp"
# 说明:访问 XTCP 模式

serverName = "ssh-xtcp"
# 说明:这里必须对应客户端 A 的 XTCP 服务名

secretKey = "ChangeMe_XTCP_Key_2026_P2P_Z7@xD4!m"
# 说明:这里必须和客户端 A 的 XTCP 密钥一致

bindAddr = "127.0.0.1"
# 说明:在客户端 B 本机监听

bindPort = 6001
# 说明:以后通过本机 6001 端口访问 XTCP

第 3 步:创建 docker-compose.yml

nano docker-compose.yml

内容如下:

version: "3.8"

services:
  frpc-b:
    image: snowdreamtech/frpc
    container_name: frpc-b
    restart: always
    network_mode: host
    volumes:
      - ./frpc.toml:/etc/frp/frpc.toml
    command: -c /etc/frp/frpc.toml

第 4 步:启动

docker compose up -d

第 5 步:查看状态和日志

docker compose ps
docker compose logs -f

第 6 步:开始测试

STCP:

ssh 用户名@127.0.0.1 -p 6000

XTCP:

ssh 用户名@127.0.0.1 -p 6001

2.6 systemd 部署(适合熟悉 Linux 的用户)

如果你不想用 Docker,也可以直接把 frps / frpc 做成系统服务。

这部分更适合:

  • 比较熟悉 Linux
  • 不想用容器
  • 想直接管理二进制进程

这里只给一个最小示例。

[Unit]
Description=frps
After=network.target

[Service]
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=always

[Install]
WantedBy=multi-user.target

启动:

systemctl daemon-reload
systemctl enable frps
systemctl start frps

frpc 同理,把可执行文件和配置路径改成自己的即可。


三、进阶配置:公网 IPv6 + DDNS 部署

3.1 这个方案适合谁

这个方案适合:

  • 家里网络支持公网 IPv6
  • 不想买公网 IPv4 服务器
  • 愿意稍微折腾一点

3.2 先简单说一下 DDNS

很多家庭宽带的 IPv6 地址不是永久固定的。
所以一般不会直接把 IPv6 地址写死,而是会这样用:

域名 → 当前 IPv6 地址

DDNS 的作用,就是当 IPv6 地址变化时,自动把域名解析更新过去。

这不是本教程重点,所以这里只点到为止。
你可以自己搜索:

IPv6 DDNS 教程

3.3 IPv6 方案怎么改

如果你已经看懂了前面的 IPv4 教程,那么 IPv6 版本其实只改几处关键地方。

3.3.1 frps 改成监听 IPv6

bindAddr = "::"
# 说明:监听所有 IPv6 地址

bindPort = 7000
# 说明:frps 的监听端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:认证 token,客户端必须一致

3.3.2 客户端里不再填公网 IPv4,而是填域名

serverAddr = "你的域名"
# 说明:这里不再填写 IPv4 地址
# 而是填写已经配置好 DDNS 的域名
# 这个域名应该能解析到你当前的 IPv6 地址

serverPort = 7000
# 说明:frps 端口

auth.token = "ChangeMe_FRP_Token_2026_X9#7pLm@Q"
# 说明:必须和 frps 一致

除此之外:

  • stcp 配置不变
  • xtcp 配置不变
  • Docker 和 docker-compose 的写法也基本不变

3.3.3 防火墙重点提醒(IPv6)

这是重点:家庭 IPv6 环境下,不只是 NAS 本机防火墙要放行,路由器和光猫上的 IPv6 防火墙也可能拦截端口。

你至少要检查这几层:

  1. NAS / 家里服务器本机防火墙
  2. 路由器上的 IPv6 防火墙
  3. 光猫上的 IPv6 防火墙

尤其是家庭 IPv6:就算 NAS 本机已经放行端口,如果路由器或光猫的 IPv6 防火墙没有放行,外网依然连不进来。

如果你的 frps 用的是:

bindPort = 7000

那就要确保 IPv6 的 TCP 7000 可以从外网访问。


四、总结

4.1 常见问题

这篇教程里为什么同时保留 STCP 和 XTCP?

因为这样你可以同时保留:

  • 127.0.0.1:6000 → STCP 稳定方案
  • 127.0.0.1:6001 → XTCP 直连方案

如果 XTCP 不通,也不会影响你继续使用 STCP。

为什么 token 和 secretKey 要写复杂一点?

因为很多人会直接复制教程里的示例值。
如果示例太简单,比如:

123456
abc

那就很容易被直接复用,不安全。

所以教程里最好也给出“像真实配置”的示例,同时明确提醒用户要改掉。

如果我想在手机上访问怎么办?

也没问题。
这篇文章里的“客户端 B”,不一定非得是电脑。

它也可以是:

  • 手机
  • 平板
  • 其他移动设备

例如你就可以在手机侧使用 frp助手 来做访问或管理。
这样整套思路仍然成立,只是“访问端”的设备换成了手机而已。

XTCP 不通怎么办?

很正常,继续用 STCP 即可。
XTCP 成功与否,和网络环境、NAT 类型等因素有关。

所以不要把 XTCP 当成唯一方案。


4.2 最终推荐

新手最稳妥的方案

公网 IPv4 + STCP + Docker 或 docker-compose

想继续优化速度的方案

公网 IPv4 + STCP + XTCP 同时保留

家里本身就有公网 IPv6 的方案

公网 IPv6 + DDNS + STCP

4.3 后续可以继续扩展的内容

这篇文章先聚焦最常用、最容易上手的两个场景:STCPXTCP

如果你已经跑通了这篇教程,后面还可以继续扩展这些内容:

  • TLS 加密
  • Dashboard 面板
  • 多用户隔离
  • 一键安装脚本
  • RDP / NAS / Web 等更多服务映射示例

建议先把这篇文章里的内容跑通,再逐步折腾这些进阶玩法。


如果你是第一次接触 FRP,我建议你不要一下子把所有功能都学完。
最好的顺序其实很简单:

  1. 先把 IPv4 + STCP 跑通
  2. 再额外加上 XTCP
  3. 如果家里有公网 IPv6,再研究 DDNS 和 IPv6 方案
  4. 最后再去探索 FRP 更多高级玩法

这样会轻松很多,也更不容易中途放弃。

版权属于:tlntin
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2026年03月18日 10:57


49 文章数
7 分类数
50 页面数
已在风雨中度过 2年305天23小时21分
目录
来自 《FRP 超简单入门教程:公网 IPv4 / IPv6 双方案》
暗黑模式
暗黑模式
返回顶部
暗黑模式
暗黑模式
返回顶部