在自己的域名下 设置路由 指向 Cloudflare worker 解决 workers.dev被墙问题

用worker反代域名的操作大家已经很熟悉了。但是如果所有*.workers.dev的域名都被墙了还有什么办法呢?还可以在自己的域名下 设置路由 指向worker.

需要

1. 已经解析到Cloudflare的自己的域名


2. 建好的,可以正常工作的worker

用域名/path测试Cloudflare worker是否正确

操作

1. 添加一个DNS域名解析

名称 随意 (以下示例中,添加的是wkr.ciys.cf 请注意以下行文中看到蓝色的wkr.ciys.cf都是指你自己设置的域名)

IP 随意

代理状态 打开

Cloudflare添加域名解析

2. 在你自己的域名下worker页面添加一个路由,指向worker

路由 填写你在上一步添加的域名/* 如 

wkr.ciys.cf/*

服务 选择你想指向的worker

Cloudflare 添加路由将域名指定worker

添加成功后可以在worker列表页面,看到你的worker下面多了一行小字。

3. 修改v2ray客户端节点参数

在你的v2ray客户端节点参数中,地址(address)和域名(host)改为你第一步中添加的域名 如 wkr.ciys.cf
修改v2ray客户端节点参数 自定义域名 使用 Cloudflare worker

================


================

参考了

https://www.nbmao.com/archives/4979

https://www.luckydesigner.space/define-workers-domain-via-cloudflare/

================

后记

其实第1步,是为了把 wkr.ciys.cf 解析到Cloudflare的CDN网络服务器上。

反过来说,如果你反正是要使用优选IP的,那么你可以略过第1步,最后,在你的v2ray客户端的节点参数配置中,地址(address) 填写优选IP,域名(host)填写 wkr.ciys.cf 

对照 <连接 V2Ray Websocket + TLS 模式的过程> 来看,节点参数里的地址(address)决定了数据包从你的V2Ray客户端发往哪里。不管是在Cloudflare里设置wkr.ciys.cf解析并打开CDN并填到地址(address)一栏,还是直接设置优选IP填到地址(address)一栏,都可以做到将数据包发往Cloudflare的CDN网络。
接下来是Cloudflare的CDN网络根据数据包的域名(host)判断将数据包发往哪里。
根据你在第2步设置的worker路由设置,CDN网络把访问 wkr.ciys.cf/* 的数据包都转发到worker去处理
然后是worker把数据包转发到你的VPS节点真正的域名上。

以我自己现在的状态为例

Cloudflare里面,我没有设置wkr.ciys.cf的DNS解析。添加了一个wkr.ciys.cf/*到我的worker的路由。 worker中,我反代了我的一个节点的域名。 v2ray客户端的节点参数中,address写wkr.ciys.cf, host写wkr.ciys.cf。在我自己的电脑上,修改hosts让wkr.ciys.cf解析为Cloudflare的优选IP。复合脚本测速更新hosts中优选IP的方案。当然,要先把ciys.cf成功添加到Cloudflare,完成设置name server等工作。



Q: 什么叫正常工作的worker?

A: 不管你搭在什么服务器上,是Linux1也好,IBM也好,Oracle也好,Heroku也好。如果你是用worker反代,正常工作的worker就是:在wokrer修改脚本那个页面,测试能显示400 Bad Request。这个400错误是v2ray返回的。
注意如果你配置了path, 下图中红框里要把 /你的path 填在你的worker域名的末尾,即:

xxx.yyy.workers.dev/你的path

测试Cloudflare worker 正常工作 400 Bad Requesst

这种一路套娃的反代配置方式,如果不成功,请从里到外检查问题

先以'第三方'的角度检测,检测工具可以用网页版HTTP状态检查器
如: https://www.uptrends.com/tools/uptime 把https://域名/path填进去测试

也可以用你的另外一个VPS的curl命令 如: curl https://域名/path

操作示例请见此视频:HTTP测试 域名/path 返回 400 Bad Request 说明 配置成功 数据流到达 V2Ray

1.  Heroku域名/你的path 是不是400
如: https://ball-speed.herokuapp.com/d94b15f316a0  

2. worker域名/你的path 是不是400
如: https://wkr1.ciys.workers.dev/d94b15f316a0

3. 你的自定义域名/你的path 是不是400
如: https://wkr.ciys.cf/d94b15f316a0

'第三方'检测通过了, 再在你自己的网络环境上用浏览器检测你反代的最外层,也就是你准备填到V2Ray客户端节点参数里host的域名+你的path

浏览器中测试  host域名 + path

换个角度解释 解决workers.dev被墙的各种方案

https://zelikk.blogspot.com/2022/05/workers-dev-gfw-ban-route-pages.html


评论

  1. 大佬,指点一下,1.正常搭建V2RAY+WS 使用正常 2.用Worker反代域名www.00000.tk,检测https://yyyyy.xxxxxxxxxx.workers.dev/fqv2ray 出现400 Bad Request 3.按照你这个教程用另一个域名www.111111.tk指向worker,但在v2rayN中填入www.111111.tk域名配置出现错误
    2022/05/15 08:42:53 [Warning] [1119314248] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://www.00000.tk/fqv2ray): > remote error: tls: handshake failure] > common/retry: all retry attempts failed
    2022/05/15 08:42:53 [Warning] [4241408913] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://www.00000.tk/fqv2ray): > remote error: tls: handshake failure transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://www.00000.tk/fqv2ray): > dial tcp: operation was canceled] > common/retry: all retry attempts failed
    2022/05/15 08:42:53 [Warning] [3904756726] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://www.00000.tk/fqv2ray): > remote error: tls: handshake failure transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://www.00000.tk/fqv2ray): > dial tcp: operation was canceled] > common/retry: all retry attempts failed

    回复删除
    回复
    1. 1. 我猜测你是用111111和000000给你的域名打码。所以我先不去纠结你前面说www.111111.tk,日志里又写www.000000.tk的问题
      2. 在你自己的浏览器中,请检查 www.111111.tk/fqv2ray一样会得到400 Bad Request

      删除
    2. 我的步骤全都对,但输入www.111111.tk,会跳转到真实域名www.000000.tk,输入 www.111111.tk/fqv2ray,同样跳转到真实www.000000.tk/fqv2ray, 新申请一个域名来操作,也是同样

      删除
    3. 你好!跳转与你搭建的细节实现有关。
      我补充一段在本文最末。请自查一下你在套娃哪一层出错了?

      删除
    4. 感谢大佬,测试后全部出现400 Bad Request,没有改配置,可以用了,好奇怪,另外在问一个,这种与ws套cf,指定ip有什么区别?速度更好?

      删除
    5. 请问你说的 "ws套cf,指定ip" 是指什么方案?请提供一个链接。

      删除
    6. 就是v2ray+tls+ws套CF,隐藏ip这种,https://timevia.blogspot.com/2019/06/v2arywstlscf.html

      删除
    7. 本文解决的问题是:当你本来的节点的域名被屏蔽或者干扰时,你不方便或者没有权限修改VPS上的设置(比如,你是在heroku这种容器上搭的,或者你用的别人的节点或者机场的节点),如何用新的域名套上去。特别地,你自己没有一个VPS的情况下。

      删除
  2. 楼主说的很清楚呢,关键是IP地址随便填&打开小云朵

    回复删除
    回复
    1. 当然做了,就是会跳转到真实域名,不知道是什么原因

      删除
  3. 我有两个问题
    1,在cloudfare中给自己的域名设置DNS记录时添加内容的IP是输什么IP?是自己电脑的公网IP还是heroku有关或者其他的IP有关
    2,在cloudfare中给自己的域名设置worker时添加路由时服务一项没有内容,无法选择,不知如何解决,望大佬解惑
    鄙人小白,啥都不懂,非常感谢大佬不吝赐教

    回复删除
    回复
    1. 1. IP 随意
      原因:将域名wkr.ciys.cf添加DNS记录并打开CDN,只是为了将wkr.ciys.cf解析为CF的CDN网络的服务器。
      2. 服务没有内容,是因为你没有一个正常工作的worker。
      解决方法:请参考其它教程创建一个可以正常工作的worker

      删除
    2. 大佬好,在创建woker时,服务名称需要更改吗?代码需要更改吗

      删除
    3. 这个取决你参考的哪篇教程。你可以把教程的链接贴出来

      删除
    4. 没找到合适的教程,直接在cloudfare里点woker创建服务,不好意思

      删除
    5. 试试 https://github.com/DaoChen6/Heroku-v2ray

      删除

发表评论

The Hot3 in Last 30 Days

无服务器 自建短链服务 Url-Shorten-Worker 完整的部署教程

ClouDNS .asia免费域名 托管到CloudFlare开CDN白嫖Websocket WS通道翻墙 / desec.io