Skip to content
This repository has been archived by the owner on Aug 22, 2021. It is now read-only.

Cloudflare 的 CDN 开关在使用此脚本时任何情况下都不需要开 #31

Closed
phlinhng opened this issue Aug 5, 2020 · 0 comments

Comments

@phlinhng
Copy link
Owner

phlinhng commented Aug 5, 2020

最近很惊讶地发现这个脚本承蒙油管主关注了,首先感谢各位使用这个脚本和过程中给予反馈和建议的人,一起为让更多人看见世界所作的努力。我发现视频中有一些认知错误的部分,在这边做个尽量详细且通俗的说明。

Cloudflare CDN 是加速网页浏览协议用的,正好 http 和 ws 都是 cf 支持的协议,所以 v2ray 的 ws 模式才可以被 cdn 中转。
开启云朵,CF 会通过它的服务器中转通过那个域名的流量(流量方向:client → cf nodes → server),这时候你 ping 域名会发现 ip 变成 CF 的节点 IP 了;关闭云朵的话,CF 只会发挥 DNS 的功能,让域名直连你的服务器,这时候 ping 域名显示的是服务器真实 IP。

这个脚本最多可以建立三种节点: v2ray tcp+tls, v2ray ws 和 trojan。其中 v2ray tcp+tls 和 trojan 只支持直连,没办法被 CDN 中转,所以打开 CDN 的情况下这两种模式会连接不上,甚至有可能搭建时就出问题。而 v2ray ws 可以被 CDN 中转,至于为什么 CDN 开关不打开也能中转,这就牽涉到 CF 的回源机制。

本来 CF 用来加速一般网站时,它会缓存用户看过的页面,用户连接域名的时候会先连到 CF 服务器,如果 CF 有缓存就会直接返回结果给用户,没有缓存的话就去原服务器拿内容再返回给用户,就是所谓的回源。而 CF 回源有个特性,只要向 CF 任何节点发送带有域名的 Headers(就是那个伪装域名),CF 就会认为你要访问那个域名,只要那个域名的 DNS 在 CF 上,CF 就会透过它的服务器帮你中转。而 v2ray ws 因为是数据流而不是网页所以不会触发缓存,每次都会回源,这样就跟走 CDN 效果一样了。

CF 回源还有个玩法就是自选节点,你可以在伪装域名不变的情况下修改那个 www.digitalocean.com 成 amp.cloudflare.com 或 1.0.0.1,会发现依然可以连上,而且速度不同,可以根据自身情况选择对当前环境最好的节点。

没必要为了"保护 IP"而瞎几巴开 CDN,我自己用了很久的直连都没事,就算真的不幸被国情了还有 ws 备用。平常用比较快又安全的 v2ray tcp+tls 不香吗?WS 的脚本一大把,TCP 的脚本目前还很少,你用这个脚本却執着于 CDN 的话,就浪费了这个脚本最大的优势。

结论:

  1. 使用此脚本时任何情况都没有点亮云朵的必要
  2. 只有 ws 承载的翻墻方式可以通过 cf cdn 中转
  3. 纯 vmess 不能经由 cf 转发,所以 v2ray tcp+tls 只支持直连
  4. 理论上 v2ray tcp 比 v2ray ws 快,除非你本地直连服务器真的太悲剧再考虑 CDN
  5. 就算要用 CDN 也不需要点亮云朵,可以用 Headers + CF 节点 IP 回源大法(也就是说,开启云朵=自动回源,关闭云朵+自选 IP = 手动强制回源)
  6. 强制回源是为了复用同一个域名,如果还是想保护 IP 也可以用别的方法实现 TCP+TLS 和 WS+TLS 同时使用(例如在 tcp 方式手动指定原始 IP + SNI),在此就不展开了

加油!做视频不容易,给你点赞。

@phlinhng phlinhng changed the title Cloudflare 的 CDN 开关在任何情况下都不需要开 Cloudflare 的 CDN 开关在使用此脚本时任何情况下都不需要开 Aug 6, 2020
@phlinhng phlinhng closed this as completed Aug 6, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant