Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

workers.dev 已挂 #229

Open
SeaHOH opened this issue May 8, 2022 · 68 comments
Open

workers.dev 已挂 #229

SeaHOH opened this issue May 8, 2022 · 68 comments

Comments

@SeaHOH
Copy link
Owner

SeaHOH commented May 8, 2022

一个小时前


另,鉴于下方有一些基于错误基础发表的描述,这里提供一些相应知识以供参考。

CNAME 记录和主机配置是完全不同的独立的两个概念与操作,就好比车辆绑定驾驶证,两者之间没有任何必然的关联。 如果相互不匹配,相关域名就无法正常连接和使用,包括且不限于 IP 受限、SNI 不匹配、Host 不匹配、证书不匹配、客户端验证失败等。

任何 DNS 记录包括 CNAME 记录修改后会延迟不定时间才生效,主机配置则是立即生效。

针对 https/TLS,GFW 会检测 IP、SNI 和总连接数,分别对应实施黑洞、RST 和丢包这些方法来干扰封禁。CNAME 不在检测范围内,既费力又无用。

GFW 可能会在以下几种情况获知域名相关信息:

  • 非加密的 DNS 查询,可能会返回被污染的结果。现在各种反污染手段很多,请选择几种符合自己使用要求的。
  • 非加密的 http 请求,可能会被任意修改返回内容。尽量不访问此类网站,不论境内境外。
  • 非加密的 SNI 设置,即未使用 ESNI/ECH 的 https/TLS 握手请求,但这类加密请求无法通过国际出口。
  • OCSP 在线证书状态查询,明文的,但是可以设置禁用,禁用后无法应对被吊销证书的恶意网站。
@lxf1009
Copy link

lxf1009 commented May 9, 2022

怎么办

@alhricke
Copy link

alhricke commented May 9, 2022

可以绑定自己的域名,然后在配置里面填写绑定的域名就可以正常使用了……

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

确实可以这样,但如果是免费域名的话,下一步可能也会挂。其它 (或可以用作) 公共代理服务,其域名估计也要遭殃,当然这是被用得多的情况才会开始。

前几年就说的,技术和软硬件升级的必然结果,墙的代价是越来越低,反之,翻越的代价提高了。

@standritsu
Copy link

有IP没事,刚才我手贱关太快了没记下来...

@Quantum2Bits
Copy link

可否通过SNI操作使用workers.dev, 就像用google一样?

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

可否通过SNI操作使用workers.dev, 就像用google一样?

不行,CloudFlare 全面执行高安全标准。

@Quantum2Bits
Copy link

可否通过SNI操作使用workers.dev, 就像用google一样?

不行,CloudFlare 全面执行高安全标准。

听说CloudFlare支持SNI加密

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

我这种是钻空子,现在空子小了。隔壁还有刚正面跳 RST 的,估计能用的更长久,缺点就是太显眼禁不住查,不过没有特殊情况一般人也不用怕会查你。

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

ESNI/ECH 早两年就挂了。

@ksi1110
Copy link

ksi1110 commented May 9, 2022

请指个路 :)

@ksi1110
Copy link

ksi1110 commented May 9, 2022

我这种是钻空子,现在空子小了。隔壁还有刚正面跳 RST 的,估计能用的更长久,缺点就是太显眼禁不住查,不过没有特殊情况一般人也不用怕会查你。

请问隔壁指的是哪个项目~😂

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

请问隔壁指的是哪个项目~joy

前两个月刚被某网站给引流一波,作者改了仓库名,仍然在,只是躲开了搜索引擎上的旧链接,估计是不想太惹眼,所以我也不好直接写明。

@ksi1110
Copy link

ksi1110 commented May 9, 2022

请问隔壁指的是哪个项目~joy

前两个月刚被某网站给引流一波,作者改了仓库名,仍然在,只是躲开了搜索引擎上的旧链接,估计是不想太惹眼,所以我也不好直接写明。

晓得啦,哈哈,上午还在纳闷部署的所有heroku都挂了,检查下才发现是反代不行了,没得玩了

@alhricke
Copy link

alhricke commented May 9, 2022

@SeaHOH 现在只能通过自己的域名来继续使用,但是这样就不能像之前那样同时使用多个worker来增加请求队列了,有没有什么方法,用自己的域名也能使用多个worker来增加请求队列?

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

有没有什么方法,用自己的域名也能使用多个worker来增加请求队列?

假如有如下两个域名:

w1.cc.bb.aa
w2.cc.bb.aa

把 CFWFetch.py class cfw_params 里面的 workers.dev 改成 bb.aa,把你的子域名分别绑到 Worker 上,用法不变。

subdomain = cc
workers = w1|w2

@standritsu
Copy link

@SeaHOH 我添加自己的域名后直接访问workers地址显示OK,但GotoX里显示 失败:TimeoutError('The read operation timed out')

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

@standritsu

worker =  domain.domain   #完整域名
workers =                 #留空
explodeip = 0             #可以试着切换开关看效果
timeout = 10              #自己调节超时时间

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2022

我发现墙的状态检测有漏洞,不能完全拦截所有连接,可以用数量强行突破。

@standritsu
Copy link

@SeaHOH
worker = domain.domain #完整域名 这个控制台窗口里面显示无误,我直接复制出来也能打开
workers = #留空 done
explodeip = 0 #可以试着切换开关看效果 没效果
timeout = 10 #自己调节超时时间 没效果

@CJN1986
Copy link

CJN1986 commented May 9, 2022

有没有什么方法,用自己的域名也能使用多个worker来增加请求队列?

把 CFWFetch.py class cfw_params 里面的 .workers.dev 删掉就行,把你的子域名分别绑到 Worker 上,用法不变。

比如我的域名是aaa.cc,子域名a1.aaa.cc和b1.aaa.cc绑定了worker

经测试,只删除.workers.dev不行

#版本是GotoX-3.8.8r2-cp39-win32
#config.ini文件
worker =
subdomain = aaa.cc
workers = a1 | b1

启动gotox后,控制台窗口显示连接的域名为a1.aaa
只有把".workers.dev"替换为".cc"才能正常工作。

@Quantum2Bits
Copy link

可以绑定自己的域名,然后在配置里面填写绑定的域名就可以正常使用了……

请问如何帮定自己的域名?

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 10, 2022

@standritsu 试试用你自己的域名的解析结果

iplist = x.x.x.x|x:x:xx::x     #填入 nslookup 的结果

启动gotox后,控制台窗口显示连接的域名为a1.aaa
只有把".workers.dev"替换为".cc"才能正常工作。

确实,我忘记配置文件中限制了subdomain 只能有一个级别。

@standritsu
Copy link

谢谢,的确是IP的问题,输入ping的IP后填进iplist里,explodeip怎么设都能用

@alhricke
Copy link

有没有什么方法,用自己的域名也能使用多个worker来增加请求队列?

假如有如下两个域名:

w1.cc.bb.aa
w2.cc.bb.aa

把 CFWFetch.py class cfw_params 里面的 workers.dev 改成 bb.aa,把你的子域名分别绑到 Worker 上,用法不变。

subdomain = cc
workers = w1|w2

是的,今天上午已经通过这个方式修改成功了
我有如下域名:

w1.bb.aa
w2.bb.aa
w3.bb.aa

cfw_params 里面的 workers.dev 改成 .aa,config里面设置为如下

subdomain = bb.aa
workers = w1|w2|w3

@ZK6100HGA
Copy link

请问隔壁指的是哪个项目~joy

前两个月刚被某网站给引流一波,作者改了仓库名,仍然在,只是躲开了搜索引擎上的旧链接,估计是不想太惹眼,所以我也不好直接写明。

是zapret吗?

@ZK6100HGA
Copy link

你们的workers.dev现在才挂?我几年前就已经是每次创建/改名之后用一会就挂了。

@Quantum2Bits
Copy link

绑定域名有个潜在的问题:设定的CNAME有workers.dev, 现在的墙是要查CNAME的。曾经有过这样的经历。不知有什么方法可以避免CNAME被查。

@Quantum2Bits
Copy link

我发现墙的状态检测有漏洞,不能完全拦截所有连接,可以用数量强行突破。

这比跳RST的风险高吧

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 11, 2022

绑定域名有个潜在的问题:设定的CNAME有workers.dev, 现在的墙是要查CNAME的。曾经有过这样的经历。不知有什么方法可以避免CNAME被查。

只有绑子域名才需要 CNAME 吧,直接托管好像也不用?而且墙为什么要检测 CNAME,没听说过。

我发现墙的状态检测有漏洞,不能完全拦截所有连接,可以用数量强行突破。

这比跳RST的风险高吧

差不多吧。不过这只是客观描述,不是教程。

@loveinlastnight
Copy link

我绑定域名,一样连接失败。。。

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 12, 2022

我绑定了域名到worker,但还是超时

#229 (comment)

请问绑定域名的步骤是怎样的,能不能说一下?

谷歌搜索可更快得到答案。

@loveinlastnight
Copy link

我觉得是地域封锁不一样。我这里一样绑米后无法连接

@performcanhe
Copy link

performcanhe commented May 13, 2022

有两个worker,分别是 123.zhangsan.worker.dev, 456.zhangsan.worker.dev。有一个自己的域名:zhangsan.xyz。
那么请帮忙看下如下操作是否正确。

1, CF 用 zhangsan.xyz建个website 。
2, 在该website里面,进入dns,添加如下记录
A zhangsan.xyz 8.8.8.8
CNAME 123.zhangsan.xyz 123.zhangsan.worker.dev
CNAME 456.zhangsan.xyz 456.zhangsan.worker.dev
3, 在worker里面,设定如下route
123.zhangsan.xyz routeto 123.zhangsan.worker.dev
456.zhangsan.xyz routeto 456.zhangsan.worker.dev

@performcanhe
Copy link

这里有一点不太理解。既然CNAME设置了,为何还要设置route呢?
设置CNAME之后,不就是就已经能够解析到worker地址了吗?

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 13, 2022

这里有一点不太理解。既然CNAME设置了,为何还要设置route呢?
设置CNAME之后,不就是就已经能够解析到worker地址了吗?

因为被连接的主机要检查 SNI 和 Host,根据其路由到相应的 Worker。

虽然 CNAME 可以胡乱设置,但是如果目标不是你有权限并做好相应设置的主机,那么就无法正常连接或返回错误信息。估计 @Quantum2Bits 之前就是这样搞过,而目标主机的 IP 则是已被封锁无法连接,才会误会 GFW 会检查 CNAME。

@loveinlastnight
Copy link

@SeaHOH
我现在直接访问woker绑定的域名,aa.bb.cc.com,浏览器显示 此站点的连接不安全。
gotox里 返回 Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert handshake failure')]),重试。
这是什么原因呢?

@Quantum2Bits
Copy link

@SeaHOH 我现在直接访问woker绑定的域名,aa.bb.cc.com,浏览器显示 此站点的连接不安全。 gotox里 返回 Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert handshake failure')]),重试。 这是什么原因呢?

域名进了黑名单了吧,或者你那里实行白名单了。有的地方在实行白名单,听说泉州就是。

@loveinlastnight
Copy link

浏览器查看了下,连证书都没有。。。

@alhricke
Copy link

有没有可能是cf出的问题呢?我刚刚看了一下我部署的其他cfw项目的证书也没了,gotox的cfw部署在浏览器上面访问正常,证书也正常……

@alhricke
Copy link

有没有可能是cf出的问题呢?我刚刚看了一下我部署的其他cfw项目的证书也没了,gotox的cfw部署在浏览器上面访问正常,证书也正常……

en……,刚刚说完没多久,我又刷新了几遍,发现又正常了,又能正常获取到证书了

@loveinlastnight
Copy link

暂时没法了,成都这里现在连IPV6都封完了。。。

@Quantum2Bits
Copy link

暂时没法了,成都这里现在连IPV6都封完了。。。

如果是域名被封,过些时(比如一个月)可能会好。但可能一下又被封了。一定不要用本地的DNS (那样就暴露了你的CNAME了),不要在申请域名的网站上设置CNAME, 在CF上设置CNAME要好些。

@loveinlastnight
Copy link

不是域名被封,域名解析到其他服务器,访问正常

@Quantum2Bits
Copy link

Quantum2Bits commented May 13, 2022

不是域名被封,域名解析到其他服务器,访问正常

可能是本地的DNS搞的鬼,就是所谓的DNS污染。在GotoX里用DNS over HTTPS吧。你在用ping的时候就是在用本地的DNS,这样你的域名的信息就在本地DNS服务器的cache里了。

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 13, 2022

CNAME 记录和主机配置是完全不同的独立的两个概念与操作,就好比车辆绑定驾驶证,两者之间没有任何必然的关联。如果相互不匹配,相关域名就无法正常连接和使用,包括且不限于 IP 受限、SNI 不匹配、Host 不匹配、证书不匹配、客户端验证失败等。

任何 DNS 记录包括 CNAME 记录修改后会延迟不定时间才生效,主机配置则是立即生效。

针对 https/TLS,GFW 会检测 IP、SNI 和总连接数,分别对应实施黑洞、RST 和丢包这些方法来干扰封禁。CNAME 不在检测范围内,既费力又无用。

GFW 可能会在以下几种情况获知域名相关信息:

  • 非加密的 DNS 查询,可能会返回被污染的结果。现在各种反污染手段很多,请选择几种符合自己使用要求的。
  • 非加密的 http 请求,可能会被任意修改返回内容。尽量不访问此类网站,不论境内境外。
  • 非加密的 SNI 设置,即未使用 ESNI/ECH 的 https/TLS 握手请求,但这类加密请求无法通过国际出口。
  • OCSP 在线证书状态查询,明文的,但是可以设置禁用,禁用后无法应对被吊销证书的恶意网站。

@lshilshi
Copy link

请问,有啥新的免费worker吗?
抱歉,我是只会跟着wiki走的小白……

@tnblys
Copy link

tnblys commented May 23, 2022

我是小白。。捣鼓了半天还是“_create_ssl_connection 'work1.xxx.tk' 返回 timeout('timed out'),重试”

请问 我申请了域名,比如是xxx.tk,

然后cf 的DNS 里面 设置 了
A xxx.tk 11.11.11.11 , proxied
Cname work1, work1.domain.workers.dev, proxied
route 也设置了 work1.uzjh.tk work1 production

我直接访问 work1.xxx.tk, 显示是OK。

然后我gotox里面设置单worker,
cfw_params 里面的 workers.dev 改成 .tk,
config 里面 设置为如下
subdomain = xxx.tk
workers = work1

但是还是不行。。我试了subdomain 改成xxx也不行, worker 改成 work1.xxx.tk.也不行, gotox里面一直是timeout
请问是哪里设置错了?求解答。 。谢谢!

@Quantum2Bits
Copy link

我是小白。。捣鼓了半天还是“_create_ssl_connection 'work1.xxx.tk' 返回 timeout('timed out'),重试”

请问 我申请了域名,比如是xxx.tk,

然后cf 的DNS 里面 设置 了 A xxx.tk 11.11.11.11 , proxied Cname work1, work1.domain.workers.dev, proxied route 也设置了 work1.uzjh.tk work1 production

我直接访问 work1.xxx.tk, 显示是OK。

然后我gotox里面设置单worker,

到这里就可以了。后面的不要。

cfw_params 里面的 workers.dev 改成 .tk, config 里面 设置为如下 subdomain = xxx.tk workers = work1

但是还是不行。。我试了subdomain 改成xxx也不行, worker 改成 work1.xxx.tk.也不行, gotox里面一直是timeout 请问是哪里设置错了?求解答。 。谢谢!

@tnblys
Copy link

tnblys commented May 24, 2022

到这里就可以了。后面的不要。

谢谢解答! 我改回来了试了还是timeout。。 请问您指的是只在config里面的 "worker = work1.workers.dev" 改成 "worker = work1.xxx.tk"就可以了么?

我改成了"worker = work1.xxx.tk"
还是显示“_create_ssl_connection 'work1.xxx.tk' 返回 timeout('timed out'),重试”

@Quantum2Bits
Copy link

到这里就可以了。后面的不要。

谢谢解答! 我改回来了试了还是timeout。。 请问您指的是只在config里面的 "worker = work1.workers.dev" 改成 "worker = work1.xxx.tk"就可以了么?

我改成了"worker = work1.xxx.tk" 还是显示“_create_ssl_connection 'work1.xxx.tk' 返回 timeout('timed out'),重试”

是的。可能是绑定没有搞好吧。你的域名设置里面work1.xxx.tk的CNAME是你的work1.workers.dev,在你的work1.workers.dev里route的设置是work1.xxx.tk

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 24, 2022

是的。可能是绑定没有搞好吧。你的域名设置里面work1.xxx.tk的CNAME是你的work1.workers.dev,在你的work1.workers.dev里route的设置是work1.xxx.tk

已经绑定成功,不是这个问题。

@tnblys 请按照 #229 (comment) 说明填入 work1.xxx.tk 域名解析结果的 IP。

@tnblys
Copy link

tnblys commented May 24, 2022

@tnblys 请按照 #229 (comment) 说明填入 work1.xxx.tk 域名解析结果的 IP。

您好,谢谢解答!
我换了3.8.8,好像不会timeout了。。现在“使用cfw代理”访问网站浏览器都会出现
“”“
Your connection is not private
Attackers might be trying to steal your information from cn.bing.com (for example, passwords, messages, or credit cards). Learn more
NET::ERR_CERT_AUTHORITY_INVALID
”“”
然后 gotox显示:
“”“
21:45:22 E L4:3289-> 伪造加密连接失败:host='content-autofill.googleapis.com',Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert certificate unknown')])
Traceback (most recent call last):
File "E:\deployed\GotoX-master\local\ProxyHandler.py", line 1205, in do_FAKECERT
ssl_sock.do_handshake_server_side()
File "E:\deployed\GotoX-master\local\compat\openssl.py", line 90, in do_handshake_server_side
self.__iowait(self._connection.do_handshake)
File "E:\deployed\GotoX-master\local\compat\openssl.py", line 37, in __iowait
return io_func(*args, **kwargs)
File "D:\Anaconda3\lib\site-packages\OpenSSL\SSL.py", line 1934, in do_handshake
self._raise_ssl_error(self._ssl, result)
File "D:\Anaconda3\lib\site-packages\OpenSSL\SSL.py", line 1671, in _raise_ssl_error
_raise_current_error()
File "D:\Anaconda3\lib\site-packages\OpenSSL_util.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'ssl3_read_bytes', 'sslv3 alert certificate unknown')]
”“”

我试了删了证书重新导入证书也没用。。请问这是什么新问题? 感谢解答!

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 24, 2022

@tnblys 确保有正确导入证书,且浏览器和 GotoX 都有关闭再重启.

@tnblys
Copy link

tnblys commented May 25, 2022

@SeaHOH 重启下电脑雀食好了。hhhh.。。。。。感谢作者大大!!

@performcanhe
Copy link

performcanhe commented May 26, 2022

@SeaHOH 我还是没搞定啊。求助。
我已经在CF网站添加自己的域名,并且直接访问自己的域名显示OK。但GotoX失败。

GotoX配置里面worker填写自己的域名 work1.mydomain.xyz

Config.ini 配置如下:
...
worker=work1.mydomain.xyz
explodeip = 0
iplist =172.64.1.1
...

得到错误日志如下:
16:26:55 W 172.64.1.1 _create_ssl_connection 'work1.mydomain.xyz' 返回 timeout('timed out'),重试
16:26:56 W 172.64.1.1 _create_ssl_connection 'work1.mydomain.xyz' 返回 timeout('timed out'),重试

我使用 wget 测试域名,一切正常如下:

me@pc:~$ wget https://work1.mydomain.xyz
--2022-05-26 16:24:21-- https://work1.mydomain.xyz/
Resolving work1.mydomain.xyz (work1.mydomain.xyz)... 172.64.1.1
Connecting to work1.mydomain.xyz (work1.mydomain.xyz)|172.64.1.1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3 [text/plain]
Saving to: ‘index.html.1’

index.html.1 100%[======================================================================================================>] 3 --.-KB/s in 0s

2022-05-26 16:24:22 (1.02 MB/s) - ‘index.html.1’ saved [3/3]

me@pc:~$ cat index.html.1
OK.

@performcanhe
Copy link

认真翻阅了前面的帖子,最终解决了问题。

gotox 的配置没问题。

是CF的route配置错误。

错误的配置:
work1.mydomain.xyz work1.myworker.worker.dev production

这样的配置是无法connect成功,所以才会connect time out.

正确的配置应该是:
https://work1.mydomain.xyz/* work1.myworker.worker.dev production
关键就在于那个星号。

@LSCube7
Copy link

LSCube7 commented May 31, 2022

绑定域名有个潜在的问题:设定的CNAME有workers.dev, 现在的墙是要查CNAME的。曾经有过这样的经历。不知有什么方法可以避免CNAME被查。

不是吧,Cloudflare的官方文档写的是添加子域名用100::的AAAA记录,直接解析到Cloudflare本地

@SeaHOH
Copy link
Owner Author

SeaHOH commented May 9, 2024

@nbzdwss78
自定义域名同时配置多个 worker 需要修改源码,就是你引用的 CFWFetch.py 部分内容。

否则,如果你的服务和域名只匹配特定 IP,请尝试追加如下设置:

[cfw]
explodeip = 0
iplist = ip1|ip2|...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests