phlinhng / v2ray-tcp-tls-web

VLESS / Trojan-Go / Shadowsocks 脚本 支持纯 IPv6
https://github.com/phlinhng/v2ray-tcp-tls-web/wiki
Do What The F*ck You Want To Public License
683 stars 329 forks source link

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

Closed phlinhng closed 4 years ago

phlinhng commented 4 years ago

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

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),在此就不展开了

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