Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

Cloudflare Workers 代理

原项目:https://github.com/yonggekkk/Cloudflare-vless-trojan

高!实在是高!白嫖 nat64 公共网关来做代理,太绝了!以后也用不着搭建什么 proxyip 节点,搭 nat64 网关就行👍

视频教程

https://youtu.be/HQcLxYbPSgo

固定ip,解决 twitch 无法观看 1080p 直播

我在涌哥的脚本基础上,增加了自定义 proxydomains 变量,因此现在可以将需要固定ip访问的网站设置到 proxydomains 变量中,这样就不会跳 ip 了。

变量设置

只需要设置 uuid 就行,如果不担心被其他人扫到,uuid 都不需要改,不过还是建议修改

变量作用 变量名称 变量值要求 变量默认值 变量要求
1、必要的uuid uuid (小写字母) 符合uuid规定格式 万人骑uuid:86c50e3a-5b87-49dd-bd20-03c7f2735e40 建议

原理

下面的解释来自 gemini 2.5 pro,最后的地方它说错了,cloudflare 出口ip是同时拥有ipv4和ipv6的,但是优先使用ipv6,所以在访问推特等仅支持 ipv4 网站时就会失败。

您好,这是一个非常好的问题,也是理解这段代码核心功能的关键。

您的理解是正确的:代码确实是将一个IPv4地址转换成了一个IPv6地址,然后通过这个IPv6地址去访问。

现在来回答您最核心的困惑:这个转换后的IPv6地址究竟在哪台服务器上?

答案是:这个IPv6地址并不在最终的目标服务器上,它指向的是一台公共的“NAT64网关”服务器。

您可以把这台“NAT64网关”想象成一个专业的“国际快递中转站”。

一个通俗的比喻
您(Cloudflare Worker):您只会说“IPv6”这门语言,也只认识“IPv6”格式的地址。您无法直接向一个只懂“IPv4”语言、只认识“IPv4”地址的人寄送包裹。

目标服务器:它只懂“IPv4”语言,只认“IPv4”地址。

NAT64网关(快递中转站):这是一个非常特殊的中转站。它既懂IPv6,也懂IPv4,并且同时拥有IPv6和IPv4的地址。它的工作就是帮助您和目标服务器进行沟通。

代码的工作流程
代码中的流程就像这样:

第一次尝试:您(Worker)尝试直接用域名(比如 example.com)连接目标服务器。如果这个域名有IPv6地址,连接就成功了。但如果它只有IPv4地址(比如 93.184.216.34),您的IPv6环境无法直接连接,所以第一次尝试失败了。

B计划(NAT64登场):

代码发现直连失败,于是执行 retry() 函数。

它首先通过DNS查询,明确知道了目标服务器的IPv4地址是 93.184.216.34。

然后,convertToNAT64IPv6 函数开始“打包”地址。它拿到了一个公共NAT64中转站的地址前缀,也就是代码里的 2001:67c:2960:6464::。

它将目标IPv4地址 93.184.216.34 按照规则嵌入到这个前缀后面,合成了一个新的、特殊的IPv6地址。例如,转换后可能看起来像这样(十六进制表示):2001:67c:2960:6464::5db8:d822。

第二次连接:

现在,您(Worker)不再尝试连接 93.184.216.34,而是向这个新合成的IPv6地址 [2001:67c:2960:6464::5db8:d822] 发起连接。

由于这是一个合法的IPv6地址,您的网络环境认识它,于是成功地将数据包发了出去。

中转站的工作:

数据包到达了地址为 2001:67c:2960:6464:: 的NAT64网关服务器。

这个网关服务器看到这个请求,马上就明白了:“哦,这是一个需要中转的请求。我需要把数据包后面的 5db8:d822 部分解码出来。”

网关将 5db8:d822 解码回原始的IPv4地址 93.184.216.34。

然后,这台网关服务器用自己的IPv4地址,向真正的目标服务器 93.184.216.34 发起连接,并将您的数据转发过去。

当目标服务器返回数据时,数据会先回到NAT64网关,网关再将其打包成IPv6格式,发回给您。

总结
所以,可以这样理解:

转换后的IPv6地址,是您和NAT64网关之间约定的一个“暗号”。这个“暗号”的前半部分是网关的地址,后半部分是您真正想访问的目标。

服务器是“NAT64网关”。代码中使用的 2001:67c:2960:6464:: 是一个由第三方(如Trex.fi)提供的公共NAT64服务地址。您等于是在利用这个公共服务来作为连接IPv4世界的桥梁。

这么做的根本原因:Cloudflare Workers的执行环境是纯IPv6的,它无法原生创建到公网IPv4地址的出站连接。NAT64是解决这个“跨网络”通信问题的标准技术方案。这段代码巧妙地通过手动合成地址的方式,利用了公共NAT64服务,实现了这个功能。

致谢

免责声明

本项目仅供学习交流使用,请遵守当地法律法规。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages