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 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按下面这样填:
二、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 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.启动本地客户端
如果屏幕显示 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)。
在里面添加下面这两行:
(注:如果你想图省事,连带着以后可能加的子域名一起直连,也可以写成 *.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
五、FRPS容器安装 以GCP为例说明
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 cat > docker-compose.yml <<EOF services: caddy: image: caddy:latest container_name: caddy ports: - "80:80" - "443:443" - "443:443/udp" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./caddy_data:/data restart: unless-stopped # 哪吒面板服务 nezha: image: ghcr.io/nezhahq/nezha:latest container_name: nezha ports: - "8008:8008" volumes: - ./nezha_data:/dashboard/data restart: unless-stopped # openlist服务 openlist: image: openlistteam/openlist:latest container_name: openlist ports: - "5244:5244" environment: - TZ=Asia/Shanghai - OPENLIST_ADMIN_PASSWORD=xxsky1127 # 请务必修改 volumes: - ./oplist_data:/opt/openlist/data restart: unless-stopped # Typecho 博客服务 typecho: image: joyqi/typecho:nightly-php8.2-apache container_name: typecho ports: - "8383:80" environment: TZ: Asia/Shanghai volumes: # 重点:挂载到 /var/www/html,这样配置文件才会存在你的硬盘上 - ./typecho_data:/var/www/html depends_on: - db restart: always # 数据库服务 db: image: mariadb:10.6 container_name: typecho-db environment: MYSQL_ROOT_PASSWORD: xxsky1127 MYSQL_DATABASE: typecho MYSQL_USER: typecho MYSQL_PASSWORD: xxsky1127 TZ: Asia/Shanghai volumes: # 重点:指向你那个存有 ibdata1 的 db 文件夹 - ./db:/var/lib/mysql restart: always # ========================================== # 🌟 新增:FRP 服务端 (用于内网穿透 Emby) 🌟 # ========================================== frps: image: snowdreamtech/frps:0.56.0 container_name: frps ports: - "7000:7000" # 只暴露底层通讯端口给手机 volumes: - ./frps.toml:/etc/frp/frps.toml # 挂载我们写好的 FRP 配置文件 restart: unless-stopped networks: default: name: app_network EOF
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 cat > Caddyfile <<EOF { # 使用 Google Trust Services (GTS) acme_ca https://dv.acme-v02.api.pki.goog/directory acme_eab { key_id b33a63ed1f543dc239aeb8ee19968fa4 mac_key da4XKFaLRa9-oURHGEB8yf2i7rawv0ozDJK99nEkYbkDJdkBAR-fGWmdSLz4EpUtAHUq4ADNFC53EgKhKxLkBg } email xuhxjxhk@gmail.com } # 哪吒面板的反向代理配置 mb.hxjx.hidns.co { reverse_proxy nezha:8008 } # 哪吒面板的反向代理配置2 nzha.cc.cd { reverse_proxy nezha:8008 } # Openlist 的反向代理配置 oplist.cc.cd { reverse_proxy openlist:5244 } # Openlist 的反向代理配置2 oplist.hxjx.hidns.co { reverse_proxy openlist:5244 } # Typecho博客的反向代理配置 tych.cc.cd { reverse_proxy typecho:80 } # Typecho博客的反向代理配置2 tych.hxjx.hidns.co { reverse_proxy typecho:80 } # Emby、openlist 域名套上HTTPS # 可以直接把两个域名写在一起,用逗号隔开 huu.cc.cd, op.363689.xyz { # 全部丢给 FRP 的 8080 接收端 reverse_proxy frps:8080 } EOF
1 2 3 4 5 6 cat <<EOF > /root/frps.toml bindPort = 7000 vhostHTTPPort = 8080 auth.method = "token" auth.token = "xxsky1127" EOF