返回列表 發帖

淺談 v2ray 配置

本帖最後由 kingwilliam 於 2019-11-3 12:49 編輯

最後更新:2019.11.03
v2ray:v4.20.0还适用

* 因文章比较长,和会不断更新,如大家有题问或讨论,可到以下角色师兄帖子一起讨论。
* Project V:入学编 —— members 讨论篇

00 - 前言
01 - Routing
02 - 内置 DNS 服务器



* * *   代 续   * * *

本帖最後由 kingwilliam 於 2019-10-22 08:23 編輯

00 - 前言

早前撰写了 Project V:入学编, 当时自己是个初学者, 所以用了初學者的角度出發,等同是初学者有个容易的起步点.

现在自问略有小成, 在一两个范畴可同大家分享一些心得.

为何不在旧的贴子上继续? 因如在 入学编 加入一些中高阶讨论, 可能会吓怕一些初学者. 所以另开一个新贴.

其实还有另一构想,是类似 reference manual, 每一项目 续一细说. 但到现在还没整理好, 希望有机会可同大家分享。

TOP

本帖最後由 kingwilliam 於 2019-11-3 12:50 編輯

01 - Routing

V2ray 内的routing相信大家已可灵活运用。

所以在这会集中解说 比较少用的 domainStrategy: "AsIs" | "IPIfNonMatch" | "IPOnDemand"

官网Routing有这样描述:

域名解析策略,根据不同的设置使用不同的策略。

  • "AsIs": 只使用域名进行路由选择。默认值。
  • "IPIfNonMatch": 当域名没有匹配任何规则时,将域名解析成 IP(A 记录或 AAAA 记录)再次进行匹配;

    • 当一个域名有多个 A 记录时,会尝试匹配所有的 A 记录,直到其中一个与某个规则匹配为止;
    • 解析后的 IP 仅在路由选择时起作用,转发的数据包中依然使用原始域名;

  • "IPOnDemand": 当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配;


在解说v2ray内置routing前,先轻轻带过domain和IP的关系,如问 先有鸡?还是先有蛋?这会很难回答。但如问 先有domain?还是先有IP?就一定先有IP。因今主宰互联网的是IP网络(网络历史自己找吧), 但如只得IP的话,我想互联网限难发展,看看以下例子:

你知 47.246.24.234 是那个网站吗?还有 104.193.88.77?如不给你domain name前面2组IP转个面就会忘掉,如我说 www.taobao.comwww.baidu.com 这就容易记得。这就是domain和IP的关系,domain name 出现最初真的是方便人记的。



现在可入正题,v2ray的routing,预设是"AsIs"即只看domain, 例如

*** 例01 ***
  1. "routing": {
  2.         "domainStrategy": "AsIs",
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com"
  7.                         ],
  8.                         "outboundTag": "direct"
  9.                 }
  10.         ]
  11. }
複製代碼
例01:如何解读? 即是要去www.baidu.com, pic.baidu.com, blog.baidu.com 总之是 *.baidu.com 都走 direct。


*** 例02 ***
  1. "routing": {
  2.         "domainStrategy": "AsIs",
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com",
  7.                                 "taobao.com"
  8.                         ],
  9.                         "outboundTag": "direct"
  10.                 }
  11.         ]
  12. }
複製代碼
例02:是 *.baidu.com 或 *.taobao.com 都走 direct


*** 例03 ***
  1. "routing": {
  2.         "domainStrategy": "AsIs",
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com"
  7.                         ],
  8.                         "domain": [
  9.                                 "taobao.com"
  10.                         ],
  11.                         "outboundTag": "direct"
  12.                 }
  13.         ]
  14. }
複製代碼
例03:但千万不要这样设定,需然这是合法设定,但是你永远去不到 baidu 或 taobao 可解?因 例01 和 例02 是“或”/"or"意思,而 例03 是“同时”/"and"意思,所以 例03 意思是 www.baidu.com 同时 www.taobao.com 就走direct,这世界是不全在的。


*** 例03.a ***
  1. "routing": {
  2.         "domainStrategy": "AsIs",
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com"
  7.                         ],
  8.                         "outboundTag": "direct"
  9.                 },
  10.                 {
  11.                         "domain": [
  12.                                 "taobao.com"
  13.                         ],
  14.                         "outboundTag": "direct"
  15.                 }
  16.         ]
  17. }
複製代碼
例03.a:将两个domain分拆成两个独立rules就可行。



现在说说 domainStrategy: "IPIfNonMatch"

一个domain 可以包含多个IP 如:www.taobao.com,以下6个IP都是淘宝网站。
47.246.58.233
47.246.58.234
47.88.135.251
47.88.135.252
47.246.1.233
47.246.1.234


*** 例04 ***
  1. "routing": {
  2.         "domainStrategy": "AsIs"
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com"
  7.                         ],
  8.                         "outboundTag": "direct"
  9.                 },
  10.                 {
  11.                         "ip": [
  12.                                 "47.246.1.233"
  13.                                 "47.246.1.234"
  14.                         ],
  15.                         "outboundTag": "direct"
  16.                 }
  17.         ]
  18. }
複製代碼
例04:如我要去www.taobao.com,但因routing 设定"domainStrategy": "AsIs",同时rules内没有配合www.taobao.com,所以v2ray在没有合适条件下离开routing。


*** 例05 ***
  1. "routing": {
  2.         "domainStrategy": "IPIfNonMatch"
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com"
  7.                         ],
  8.                         "outboundTag": "direct"
  9.                 },
  10.                 {
  11.                         "ip": [
  12.                                 "47.246.58.233",
  13.                                 "47.246.58.234"
  14.                         ],
  15.                         "outboundTag": "direct"
  16.                 }
  17.         ]
  18. }
複製代碼
例05:如我要去www.taobao.com,这时routing内的确找不到合适www.taobao.com的条件,但因为"domainStrategy"设定了"IPIfNonMatch"所以如去到routing末端还没有合适条件时,routing会问dns将www.taobao.com转为IP再重新比对,如www.taobao.com有6个IP,v2ray会由第1个IP开始续一配对。

就算配对成工与否,http或https内的SNI也会保留原始www.taobao.com,不会转到IP地址。



现在说说 domainStrategy: "IPOnDemand"

在解说"IPOnDemand"前,先重温"IPIfNonMatch"的运作,如运用 例05 去www.taobao.com,在第一轮配对时。domain 和ip都没有条件付合,但因"IPIfNonMatch"设定,v2ray会将www.taobao.com转为IP再重新匹配。即第一轮配对时没有合适,到第二轮配对时就找到IP配合。

*** 例06 ***
  1. "routing": {
  2.         "domainStrategy": "IPOnDemand"
  3.         "rules": [
  4.                 {
  5.                         "domain": [
  6.                                 "baidu.com"
  7.                         ],
  8.                         "outboundTag": "direct"
  9.                 },
  10.                 {
  11.                         "ip": [
  12.                                 "47.246.58.233",
  13.                                 "47.246.58.234"
  14.                         ],
  15.                         "outboundTag": "direct"
  16.                 }
  17.         ]
  18. }
複製代碼
例06:就是一碰到IP就即时由domain转换到IP. 在第一轮的第一项在配对时, 当然不配合,但第一轮的第二项在配对时,因碰到是IP条件,所以v2ray即时问dns转换domain到IP作配对。


所以一般情况下,预设值"AsIs"就已足够。

TOP

本帖最後由 kingwilliam 於 2019-11-3 12:50 編輯

02 - 内置 DNS 服务器

现今国内dns污染已不用多说,但如全用国外dns也会出现geodns 问题,即身在国内翻墙出外 如遇到要去淘宝 你会取了国外网站 而会有超慢和看不到国内东西。 这样就会时常出现 一时要翻墙 一时又不用的情况。 所以project V团队在v2ray内开发了dns项目,用作dns分流。目的就是解决上述问题。但官网也提到        

由于 DNS 协议的复杂性,V2Ray 只支持最基本的 IP 查询(A 和 AAAA 记录)。推荐使用本机 DNS 配合一个额外的 DNS 服务器来做 DNS 查询,如 CoreDNS,以使用完整的 DNS 功能。

就是上述因由,所以在这会解说v2ray 内的dns如何运作 为何会建议加入第三方dns伺服器作配合 。

讲到v2ray内的dns伺服器如何运作 不得不提 漫谈各种黑科技式 DNS 技术在代理环境中的应用。他解说得非常详细。但又真的非常巨细无遗 所以会看得有点累  我会节录一部份用来解说 还会加入一些个人说明作补充。


在开始解说前,先基本了解互联网两个同速度有关的指标

延迟(Latency):一个封包从来源端送出後,到目的端接收到这个封包,中间所花的时间。
频宽(Bandwidth):传输媒介的最大吞吐量(throughput)。

如想详细了解,可参考 网路的延迟(Latency)与频宽(Bandwidth)是什麽

重点是 延迟 和 频宽 是两个独立项目 没有任何关系 即你的上网是 10Mbit/s 100Mbit/s 甚至是 1Gbit/s 在同一传送媒体下 两者 是没关联的。



*** 例201 *** "domainStrategy": "AsIs"
  1. {
  2.         "dns": {
  3.                 "servers": [
  4.                         {
  5.                                 "address": "114.114.114.114",
  6.                                 "port": 53,
  7.                                 "domains": ["geosite:cn"]
  8.                         },
  9.                         "address": "8.8.8.8"
  10.                 ]
  11.         },

  12.         "routing": {
  13.                 // "domainStrategy": "AsIs",
  14.                 "rules": [

  15.                         // direct-domain
  16.                         {
  17.                                 "type": "field",
  18.                                 "domain": [
  19.                                         "geosite:cn"
  20.                                 ],
  21.                                 "outboundTag": "direct"
  22.                         },

  23.                         // direct-ip
  24.                         {
  25.                                 "type": "field",
  26.                                 "ip": [
  27.                                         "geoip:cn",
  28.                                         "geoip:private"
  29.                                 ],
  30.                                 "outboundTag": "direct"
  31.                         }
  32.                 ]
  33.         },

  34.         "inbounds": [
  35.                 // socks:1080
  36.                 {
  37.                         "tag": "socks-in",
  38.                         "protocol": "socks",
  39.                         "port": 1080,
  40.                         "sniffing": {
  41.                                 "enabled": true,
  42.                                 "destOverride": ["http", "tls"]
  43.                         }
  44.                 }
  45.         ],

  46.         "outbounds": [
  47.                 // default_out
  48.                 {
  49.                         "tag": "default_out",
  50.                         "protocol": "vmess",
  51.                         "settings": {
  52.                         },
  53.                 },

  54.                 //direct
  55.                 {
  56.                         "tag": "direct",
  57.                         "protocol": "freedom",
  58.                         "settings": {}
  59.                 },
  60.         ]
  61. }
複製代碼
请紧记 v2ray 流悜是 inbounds -> routing -> outbounds

我相信 例201 是现在一般所用的设定, 现在开始讲解流程,

  • 浏览器发出访问www.google.com要求
  • inbounds(socks:1080)会接收这个要求.
  • routing 会看direct-domain是不是geosite:cn
  • routing 再看是不是geoip:cn 或 geoip:private
  • routing 最後 在没有合适条件下离开routing
  • outbounds 因routing内没有付合任何要求,所以outbounds会用第一设定 在例201即default_out 上网。



例201 的流程如下:
inbounds -> routing -> outbounds

这时dns还没参与运作。

TOP

本帖最後由 kingwilliam 於 2019-11-3 12:50 編輯

例201 和 例202 coding是一样的,只是"domainStrategy"不同

*** 例202 ***  "domainStrategy": "IPIfNonMatch"
  1. {
  2.         "dns": {
  3.                 "servers": [
  4.                         {
  5.                                 "address": "114.114.114.114",
  6.                                 "port": 53,
  7.                                 "domains": ["geosite:cn"]
  8.                         },
  9.                         "address": "8.8.8.8"
  10.                 ]
  11.         },

  12.         "routing": {
  13.                 "domainStrategy": "IPIfNonMatch",
  14.                 "rules": [

  15.                         // direct-domain
  16.                         {
  17.                                 "type": "field",
  18.                                 "domain": [
  19.                                         "geosite:cn"
  20.                                 ],
  21.                                 "outboundTag": "direct"
  22.                         },

  23.                         // direct-ip
  24.                         {
  25.                                 "type": "field",
  26.                                 "ip": [
  27.                                         "geoip:cn",
  28.                                         "geoip:private"
  29.                                 ],
  30.                                 "outboundTag": "direct"
  31.                         }
  32.                 ]
  33.         },

  34.         "inbounds": [
  35.                 // socks:1080
  36.                 {
  37.                         "tag": "socks-in",
  38.                         "protocol": "socks",
  39.                         "port": 1080,
  40.                         "sniffing": {
  41.                                 "enabled": true,
  42.                                 "destOverride": ["http", "tls"]
  43.                         }
  44.                 }
  45.         ],

  46.         "outbounds": [
  47.                 // default_out
  48.                 {
  49.                         "tag": "default_out",
  50.                         "protocol": "vmess",
  51.                         "settings": {
  52.                         },
  53.                 },

  54.                 //direct
  55.                 {
  56.                         "tag": "direct",
  57.                         "protocol": "freedom",
  58.                         "settings": {}
  59.                 },
  60.         ]
  61. }
複製代碼
请紧记 v2ray 流悜是 inbounds -> routing -> outbounds

现在将"domainStrategy"设定 "IPIfNonMatch",看看流程会有甚麽变化。


  • 浏览器发出访问www.google.com要求
  • inbounds(socks:1080)会接收这个要求
  • routing 会看direct-domain是不是geosite:cn
  • routing 再看是不是geoip:cn 或 geoip:private
  • routing 最後 routing内没有合适要求
    ***因"domainStrategy" 是 "IPIfNonMatch" 所以这时v2ray会问内置dns取www.google.com IP地址***
  • dns 会看看要查询的域名是不是 geosite:cn 如是就用114.114.114.114
  • dns 如要查询的域名不付合上面条件,所以会用预设dns 即8.8.8.8 查询
    ***这时会再入routing查找8.8.8.8走那一个outbound***
  • routing 会看direct-domain是不是geosite:cn
  • routing 再看是不是geoip:cn 或 geoip:private
  • routing 最後在没有合适条件下离开routing
  • outbounds 因routing内没有付合8.8.8.8任何要求,所以outbounds会用第一设定 在例202即default_out 上网问8.8.8.8取www.google.com IP地址
    ***但还没完结, 这是只取到www.google.com的IP地址。因触发点"domainStrategy" 是 "IPIfNonMatch"所以要再走一次routing(如不明白为何要走多次routing, 请参考01 - Routing "IPIfNonMatch" 部份)***
  • routing 会看direct-domain是不是geosite:cn
  • routing 再看是不是geoip:cn 或 geoip:private
  • routing 最後 在没有合适条件下离开routing
  • outbounds 因routing内没有付合任何要求,所以outbounds会用第一设定 在例202即default_out 上网


例202 的流程如下:

inbounds -> routing(1) -> dns -> routing(2) -> outbounds(1) -> routing(3) -> outbounds(2)

第一次outbounds(1) 是要去8.8.8.8取www.google.com IP地址
第二次outbounds(2)才要去www.google.com上网

TOP

本帖最後由 kingwilliam 於 2019-11-3 12:51 編輯

例201 和 例202 是讲解如 socks 或 http inbounds, 以下会解说 透明代理时 dokodemo, dns 和 http/https 或 非http/https的流程。

以下coding 会原用 例201 再加入 routing dns, inbounds dns dokodemo 和 outbound dns 部份, 因原用 例201 所以留意 "domainStrategy": "AsIs"

*** 例203 *** 会加入coding
  1.         "routing": {
  2.                 "rules": [
  3.                         // dns
  4.                         {
  5.                                 "type": "field",
  6.                                 "inboundTag": "dns-in",
  7.                                 "outboundTag": "dns-out"
  8.                         }
  9.                 ]
  10.         },

  11.         "inbounds": [
  12.                 // dokodemo-door:53
  13.                 {
  14.                         "protocol": "dokodemo-door",
  15.                         "port": 53,
  16.                         "tag": "dns-in",
  17.                         "settings": {
  18.                                 "address": "114.114.114.114",
  19.                                 "port": 53,
  20.                                 "network": "udp,tcp"
  21.                         }
  22.                 },

  23.                 // dokodemo-door:1088
  24.                 {
  25.                         "protocol": "dokodemo-door",
  26.                         "port": 1088,
  27.                         "tag": "tproxy-in",
  28.                         "sniffing": {
  29.                                 "enabled": true,
  30.                                 "destOverride": ["http", "tls"]
  31.                         },
  32.                         "settings": {
  33.                                 "network": "tcp,udp",
  34.                                 "followRedirect": true
  35.                         }
  36.                 }
  37.         ],

  38.         "outbounds": [
  39.                 // dns
  40.                 {
  41.                         "tag": "dns-out",
  42.                         "protocol": "dns"
  43.                 },
  44.         ],
複製代碼


因coding太长, 所以由 例204 开始coding会适量简化, 简化後部份会用 ... 代替

*** 例204 *** (例201 + 例203)
  1. {
  2.         "dns": {
  3.                 "servers": [
  4.                         {
  5.                                 "address": "114.114.114.114",
  6.                                 "port": 53,
  7.                                 "domains": ["geosite:cn"]
  8.                         },
  9.                         "address": "8.8.8.8"
  10.                 ]
  11.         },

  12.         "routing": {
  13.                 // "domainStrategy": "AsIs",
  14.                 "rules": [
  15.                         // direct-domain
  16.                         {
  17.                                 "type": "field",
  18.                                 "domain": ["geosite:cn"],
  19.                                 "outboundTag": "direct"
  20.                         },

  21.                         // direct-ip
  22.                         {
  23.                                 "type": "field",
  24.                                 "ip": ["geoip:cn","geoip:private"],
  25.                                 "outboundTag": "direct"
  26.                         },

  27.                         // dns
  28.                         {
  29.                                 "type": "field",
  30.                                 "inboundTag": "dns-in",
  31.                                 "outboundTag": "dns-out"
  32.                         }
  33.                 ]
  34.         },

  35.         "inbounds": [
  36.                 // socks:1080
  37.                 {
  38.                         "tag": "socks-in",
  39.                         "protocol": "socks"
  40.                         ...
  41.                 },

  42.                 // dokodemo-door:53
  43.                 {
  44.                         "protocol": "dokodemo-door",
  45.                         "port": 53,
  46.                         "tag": "dns-in",
  47.                         "settings": {
  48.                                 "address": "114.114.114.114",
  49.                                 "port": 53,
  50.                                 "network": "udp,tcp"
  51.                         }
  52.                 },

  53.                 // dokodemo-door:1088
  54.                 {
  55.                         "protocol": "dokodemo-door",
  56.                         "tag": "tproxy-in",
  57.                         ...
  58.                 }
  59.         ],

  60.         "outbounds": [
  61.                 // default_out
  62.                 {
  63.                         "tag": "default_out",
  64.                         "protocol": "vmess",
  65.                         "settings": {...},
  66.                 },

  67.                 //direct
  68.                 {
  69.                         "tag": "direct",
  70.                         "protocol": "freedom",
  71.                         "settings": {}
  72.                 },

  73.                 // dns
  74.                 {
  75.                         "tag": "dns-out",
  76.                         "protocol": "dns"
  77.                 },
  78.         ]
  79. }
複製代碼
在讲解前有几点要留意


  • inbounds dokodemo dns-in 有114.114.114.114, 但 dns server同时也有 114.114.114.114, 有需要吗? 答案:有需要, 因用途不同。
  • 在inbounds 加入 dokodemo dns in 时, 最好同时在routing加入 dns 作拦截, 原因, 下面解说.
  • outbounds dns 只会拦截 A 和 AAAA record
  • 请紧记 v2ray 流悜是 inbounds -> routing -> outbounds


因透明代理除了会处理浏览器上网外,还要处理其他上网如FTP或电邮.

以下会用 ftp 作例子 (有些ftp客户可用socks/http proxy, 但以下会用直连作例)


  • 如ftp要去 ftp.ibm.com
    ***因ftp是要用ip去连接,所以ftp client会先问dns取IP地址***
  • inbounds dns-in收到要求
  • routing dns 拦截dns-in 会跳到outbounds dns-out
  • outbounds dns-out 是不是要查A或AAAA记录? 如是就跳上 dns server
  • dns 域名是不是 geosite:cn 如是就用114.114.114.114
  • dns 如域名不付合上面条件,所以会用预设dns 即8.8.8.8查询
  • routing 会看8.8.8.8是不是geosite:cn
  • routing 再看8.8.8.8是不是geoip:cn 或 geoip:private
  • routing 最後在没有合适条件下离开routing
  • outbounds 因routing内没有付合8.8.8.8任何要求,所以outbounds会用第一设定 在例204即default_out 上网问8.8.8.8取ftp.ibm.com IP地址。

    ***这时ftp会收到由v2ray传回的IP地址***

  • inbounds tproxy-in接收要求
  • routing 会看 IP地址 是不是geosite:cn
  • routing 再看 IP地址 是不是geoip:cn 或 geoip:private
  • routing 最後在没有合适条件下离开routing
  • outbounds 因routing内没有付合 IP地址 任何要求,所以outbounds会用第一设定 在例204即default_out 上网


例204 的流程如下:


  • ftp client -> inbounds dns-in -> routing(1) -> dns-out -> dns server -> routing(2) -> outbounds(1)
  • ftp client -> inbounds tproxy-in -> routing(3) -> outbounds(2)




以下会用 电邮客户端 作例子


  • 如电邮要寄去 @ibm.com 如电邮伺服器FQDN(即MX纪录)是 email.ibm.com
    ***因 电邮 是要先取得MX纪录, 所以 电邮客户端 会先问dns取MX纪录***
  • inbounds dns-in收到要求
  • routing dns 拦截dns-in 会跳到outbounds dns-out
  • outbounds dns-out 是不是要查A或AAAA记录? 如是就跳上 dns server
    ***但电邮是要先取得 MX记录 (留意不是取IP地址)
  • 因不是查A或AAAA记录, 所以会原用dns-in 即接问114.114.114.114取MX纪录 (这时已直接离开v2ray)

    ***这时 电邮客户端 会收到由v2ray传回 email.ibm.com***

  • inbounds dns-in收到 电邮客户端 要求 email.ibm.com 的 IP地址
  • routing dns 拦截dns-in 会跳到outbounds dns-out
  • outbounds dns-out 是不是要查A或AAAA记录? 如是就跳上 dns server
  • dns 域名是不是 geosite:cn 如是就用114.114.114.114
  • dns 如域名不付合上面条件,所以会用预设dns 即8.8.8.8查询
  • routing 会看8.8.8.8是不是geosite:cn
  • routing 再看8.8.8.8是不是geoip:cn 或 geoip:private
  • routing 最後在没有合适条件下离开routing
  • outbounds 因routing内没有付合8.8.8.8任何要求,所以outbounds会用第一设定 在例204即default_out 上网问8.8.8.8取email.ibm.com IP地址。

    ***这时 电邮客户端 会收到由v2ray传回的IP地址***

  • inbounds tproxy-in接收要求
  • routing 会看 IP地址 是不是geosite:cn
  • routing 再看 IP地址 是不是geoip:cn 或 geoip:private
  • routing 最後在没有合适条件下离开routing
  • outbounds 因routing内没有付合 IP地址 任何要求,所以outbounds会用第一设定 在例204即default_out 上网


例204 的流程如下:


  • email client -> inbounds dns-in -> routing(1) -> dns-out
  • email client -> inbounds dns-in -> routing(2) -> dns server -> routing(3) -> outbounds(1)
  • email client -> inbounds tproxy-in -> routing(4) -> outbounds(2)


在 电邮客户端 例子第5步骤 大家都看到 outbounds dns 如何处理不是查询A或AAAA纪录的方法, 就是直接用inbounds dns-in带来的伺服器地址问非A或AAAA纪录

而dns server只会查询A或AAAA纪录

TOP

本帖最後由 kingwilliam 於 2019-11-3 12:52 編輯

如果你的v2ray只用socks,http/https proxy 而domainStrategy设定"AsIs". 这时dns server可不用设定, 因在例201已显示内置dns这时不参与运作。

但如果你是运行透明代理, 内置dns会是必然的选择

在02 - 内置 DNS 服务器, 有简述 延迟(Latency)是甚麽, 但跟dns有甚麽关联?

先打一个譬喻, 一架普通的私家车如想改装成可在赛车场奔驰,可以换引擎, 车身换炭化纤维去大幅曾提升马力。但如一架已是跑车,想再改装成赛车, 已不再是换甚麽,而是在没想到的地方修改,如车身流线型,架驶者体重在最细微的地方续一改善续一提升。


上面用了比较多的篇幅和代码讲解v2ray内置DNS如何参与和如何运作。

所以官网提及要外加第三方dns作埴补非A和AAAA纪录部分。

其实第三方dns部分可以用114或ISP给你的dns作应用就可以。但国内上网质素大家有目共睹,连114也有机会连不上。如要访问8.8的话 你的vps在香港还好 如在越洋西岸 ping time 140ms我相信已是快速。

综合上面情况 所以在本地加入第三方dns有助提升上网反应。对!是反应,因dns server可加入cache 功能,在TTL 有效范围内不用每次连接114或8.8 重而加快上网反应。



说了那麽多, 反应可加快多少? 直接给数据
  1. 12:08:11 :  "A IN www.google.com 0.537204365s
  2. 12:08:31 :  "A IN www.google.com 0.000104999s
複製代碼

  • 在 12:08:11 第一次要求 www.google.com A record, 经过v2ray一来一回要 0.537204365s
  • 在 12:08:31 再要求 www.google.com A record, 但因之前已查询过, 所以coredns直接回覆, 只需要 0.000104999s
  • 反应快了多少? 0.537204365s / 0.000104999s 答案是 5116陪





* * *   代 续   * * *

TOP

* * *   備 用   * * *

TOP

* * *   備 用   * * *

TOP

* * *   備 用   * * *

TOP

* * *   備 用   * * *

TOP

返回列表