FRP内外穿透

一、VPS部署服务端 frps

1.登录并下载 FRP
用 SSH 连上vps。在命令行里依次执行下面两句命令(这是下载并解压目前最新的 FRP):

1
2
3
wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_amd64.tar.gz
tar -zxvf frp_0.56.0_linux_amd64.tar.gz
cd frp_0.56.0_linux_amd64

2.修改服务端配置文件
我们现在要编辑 frps.toml 文件。执行:

1
nano frps.toml

把里面的内容全部删掉,改成下面这段代码(注意修改你的专属密码):

1
2
3
4
5
6
7
8
# 服务端与客户端通信的端口
bindPort = 7000

# 身份验证密码(自己编一个复杂的,比如 88888888)
auth.token = "这里换成你自己的密码"

# 穿透出来的网页访问端口(因为 80 端口可能被占用,咱们用 8080)
vhostHTTPPort = 8080

如果屏幕上跳出 frps started successfully,说明成功了!按 Ctrl+C 先停掉它。
咱们让它在后台永远运行,执行这个命令:

1
nohup ./frps -c ./frps.toml >/dev/null 2>&1 &

(云端搞定!记住vps公网 IP,下面要用)

3.vps防火墙
以GCP为例

谷歌云的防火墙默认是全部拦截的,你必须去网页后台放行咱们刚才设置的 7000 和 8080 端口。

3.1登录谷歌云网页后台 ➡️ 左侧菜单找 VPC 网络 ➡️ 防火墙。

3.2点击顶部的 创建防火墙规则。

3.3按下面这样填:

  • 名称: allow-frp

  • 流量方向: 入站

  • 对匹配项执行的操作: 允许

  • 目标: 网络中的所有实例

  • 来源 IPv4 范围: 0.0.0.0/0

  • 协议和端口: 勾选 指定的协议和端口,勾选 TCP,在框里输入 7000,8080。

  • 点击 创建。

二、Terxum部署客户端 frpc

1.下载同样的 FRP
执行命令(如果你的手机是 ARM 架构,链接得换成 arm64,我默认你用的是这个):

1
2
3
wget https://github.com/fatedier/frp/releases/download/v0.56.0/frp_0.56.0_linux_arm64.tar.gz
tar -zxvf frp_0.56.0_linux_arm64.tar.gz
cd frp_0.56.0_linux_arm64

2.域名添加A记录

把需要穿透的服务在cloudflare域名中添加A记录,ipv4为vps的IP,并关闭小云朵。

3.修改客户端配置文件
编辑 frpc.toml 文件:

1
nano frpc.toml

清空里面的内容,换成下面这段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 填你谷歌云的公网 IP
serverAddr = "35.212.240.126"
serverPort = 7000

# 必须和刚才云端设置的密码一模一样!
auth.token = "xxsky1127"

# ==================================
# 1. 把本地的 AList / OpenList 穿透出去
# ==================================
[[proxies]]
name = "openlist_web"
type = "http"
localIP = "127.0.0.1"
localPort = 5244
customDomains = ["op.363689.xyz"]

# ==================================
# 2. 把本地的 Emby 穿透出去
# ==================================
[[proxies]]
name = "emby_web"
type = "http"
localIP = "127.0.0.1"
localPort = 8096 # 这是 Emby 的默认端口,如果你改过,请换成你的真实端口
customDomains = ["huu.cc.cd"] # 给 Emby 专属的新域名

保存退出(Ctrl+O, 回车, Ctrl+X)。
4.启动本地客户端

1
./frpc -c ./frpc.toml

如果屏幕显示 start proxy success,恭喜你,穿透成功了!

如果toml文件格式错误,用电脑传过去再

1
cp ~/storage/downloads/frpc.toml ~/frp_0.56.0_linux_arm64/

三、vpn设置
以flclash为例
1.添加 Fake-IP 过滤(防止 DNS 被劫持)
这一步是为了告诉 FlClash:“这两个域名你别瞎管,用我本地真实的 DNS 去解析出谷歌云的真实 IP!”

打开 FlClash,找到 配置 / 代理 / 高级设置(根据你的界面,找到 Fake-IP 过滤 / Fake-ip Filter)。

在里面添加下面这两行:

1
2
op.363689.xyz
huu.cc.cd

(注:如果你想图省事,连带着以后可能加的子域名一起直连,也可以写成 *.363689.xyz 和 *.huu.cc.cd,但我建议精准放行,就填上面那两行。)

2.添加附加规则(强制流量直连)
这一步是定海神针,直接命令底层的 Clash 内核:只要是去往这两个域名的流量,必须走 DIRECT!

在 FlClash 里找到 附加规则 / 自定义规则 / 规则集。

添加以下两行规则(注意逗号是英文半角):

1
2
DOMAIN,op.363689.xyz,DIRECT
DOMAIN,huu.cc.cd,DIRECT

终极防漏网之鱼绝招:
为了防止有时候域名解析太快,导致 IP 直接裸奔出去被代理接管,极其建议你把你谷歌云的真实公网 IP 也加进直连规则里!
在刚才那两行下面,再加一行:

1
IP-CIDR,你的谷歌云公网IP/32,DIRECT

(比如你的谷歌云 IP 是 34.12.34.56,你就填 IP-CIDR,34.12.34.56/32,DIRECT)
见证奇迹的“重启”
全加上之后,千万别忘了最重要的一步:
关闭 FlClash 的代理开关 ➡️ 把后台彻底划掉 ➡️ 重新打开 FlClash ➡️ 开启代理。

这样是为了强制清空它肚子里的旧 DNS 缓存。

现在,你拿手机连接 5G 网络,分别打开这两个域名。然后去 FlClash 的 “连接” 页面里查一下水表,如果看到它们俩后面都跟着灰色的 DIRECT,那恭喜你,这套双引擎直连方案已经被你彻底玩明白了!

四、静默启动所有服务

你直接在 Termux 里复制并执行下面这整段代码,它会直接覆盖更新你原来的 start.sh 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
cat > ~/start.sh << 'EOF'
#!/bin/bash
echo "🚀 正在唤醒所有追更矩阵服务 (含双路穿透)..."

cd ~/openlist && nohup ./openlist server >/dev/null 2>&1 &
echo "✅ OpenList 已启动"

nohup cloudflared tunnel --protocol http2 --config ~/.cloudflared/config.yml run emby_tunnel > ~/tunnel.log 2>&1 &
echo "✅ Cloudflare 隧道已启动 (备用通道)"

# ================= 新增的 FRP 服务 =================
nohup ~/frp_0.56.0_linux_arm64/frpc -c ~/frp_0.56.0_linux_arm64/frpc.toml >/dev/null 2>&1 &
echo "✅ FRP 直连穿透已启动 (主力通道)"
# ===================================================

aria2c --conf-path=$HOME/.config/aria2/aria2.conf -D
echo "✅ Aria2 已启动"

crond
echo "✅ 定时任务 (crond) 已启动"

nohup python ~/tg_bridge.py > /dev/null 2>&1 &
echo "✅ TG 监控通知已启动"

cd ~ && nohup python auto_189.py > run.log 2>&1 &
echo "✅ TG 追剧转存已启动"

echo "🎉 矩阵全面复活!双通道已就绪,可以退出了。"
EOF
1
bash ~/start.sh