電訊茶室's Archiver

kingwilliam 發表於 2019-10-16 10:27

淺談 v2ray 配置

[i=s] 本帖最後由 kingwilliam 於 2019-11-3 12:49 編輯 [/i]

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

* 因文章比较长,和会不断更新,如大家有题问或讨论,可到以下角色师兄帖子一起讨论。
* [url=http://www.telecom-cafe.com/forum/viewthread.php?tid=7386&extra=page%3D1]Project V:入学编 —— members 讨论篇[/url]

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



* * *   代 续   * * *

kingwilliam 發表於 2019-10-16 10:27

[i=s] 本帖最後由 kingwilliam 於 2019-10-22 08:23 編輯 [/i]

00 - 前言

早前撰写了[url=http://www.telecom-cafe.com/forum/viewthread.php?tid=7377&extra=page%3D1] Project V:入学编[/url], 当时自己是个初学者, 所以用了初學者的角度出發,等同是初学者有个容易的起步点.

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

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

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

kingwilliam 發表於 2019-10-16 10:28

[i=s] 本帖最後由 kingwilliam 於 2019-11-3 12:50 編輯 [/i]

01 - Routing

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

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

官网[url=https://www.v2ray.com/chapter_02/03_routing.html]Routing[/url]有这样描述:

域名解析策略,根据不同的设置使用不同的策略。
[list]
[*]"AsIs": 只使用域名进行路由选择。默认值。
[*]"IPIfNonMatch": 当域名没有匹配任何规则时,将域名解析成 IP(A 记录或 AAAA 记录)再次进行匹配;
[list]
[*]当一个域名有多个 A 记录时,会尝试匹配所有的 A 记录,直到其中一个与某个规则匹配为止;
[*]解析后的 IP 仅在路由选择时起作用,转发的数据包中依然使用原始域名;
[/list]
[*]"IPOnDemand": 当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配;
[/list]

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

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



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

*** 例01 ***[code]"routing": {
        "domainStrategy": "AsIs",
        "rules": [
                {
                        "domain": [
                                "baidu.com"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例01:如何解读? 即是要去[url]www.baidu.com[/url], pic.baidu.com, blog.baidu.com 总之是 *.baidu.com 都走 direct。


*** 例02 ***[code]"routing": {
        "domainStrategy": "AsIs",
        "rules": [
                {
                        "domain": [
                                "baidu.com",
                                "taobao.com"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例02:是 *.baidu.com 或 *.taobao.com 都走 direct


*** 例03 ***[code]"routing": {
        "domainStrategy": "AsIs",
        "rules": [
                {
                        "domain": [
                                "baidu.com"
                        ],
                        "domain": [
                                "taobao.com"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例03:但千万不要这样设定,需然这是合法设定,但是你永远去不到 baidu 或 taobao 可解?因 例01 和 例02 是“或”/"or"意思,而 例03 是“同时”/"and"意思,所以 例03 意思是 [url]www.baidu.com[/url] 同时 [url]www.taobao.com[/url] 就走direct,这世界是不全在的。


*** 例03.a ***[code]"routing": {
        "domainStrategy": "AsIs",
        "rules": [
                {
                        "domain": [
                                "baidu.com"
                        ],
                        "outboundTag": "direct"
                },
                {
                        "domain": [
                                "taobao.com"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例03.a:将两个domain分拆成两个独立rules就可行。



现在说说 domainStrategy: "IPIfNonMatch"

一个domain 可以包含多个IP 如:[url]www.taobao.com[/url],以下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 ***[code]"routing": {
        "domainStrategy": "AsIs"
        "rules": [
                {
                        "domain": [
                                "baidu.com"
                        ],
                        "outboundTag": "direct"
                },
                {
                        "ip": [
                                "47.246.1.233"
                                "47.246.1.234"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例04:如我要去[url]www.taobao.com[/url],但因routing 设定"domainStrategy": "AsIs",同时rules内没有配合[url]www.taobao.com[/url],所以v2ray在没有合适条件下离开routing。


*** 例05 ***[code]"routing": {
        "domainStrategy": "IPIfNonMatch"
        "rules": [
                {
                        "domain": [
                                "baidu.com"
                        ],
                        "outboundTag": "direct"
                },
                {
                        "ip": [
                                "47.246.58.233",
                                "47.246.58.234"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例05:如我要去[url]www.taobao.com[/url],这时routing内的确找不到合适[url]www.taobao.com[/url]的条件,但因为"domainStrategy"设定了"IPIfNonMatch"所以如去到routing末端还没有合适条件时,routing会问dns将[url]www.taobao.com[/url]转为IP再重新比对,如[url]www.taobao.com[/url]有6个IP,v2ray会由第1个IP开始续一配对。

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



现在说说 domainStrategy: "IPOnDemand"

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

*** 例06 ***[code]"routing": {
        "domainStrategy": "IPOnDemand"
        "rules": [
                {
                        "domain": [
                                "baidu.com"
                        ],
                        "outboundTag": "direct"
                },
                {
                        "ip": [
                                "47.246.58.233",
                                "47.246.58.234"
                        ],
                        "outboundTag": "direct"
                }
        ]
}[/code]例06:就是一碰到IP就即时由domain转换到IP. 在第一轮的第一项在配对时, 当然不配合,但第一轮的第二项在配对时,因碰到是IP条件,所以v2ray即时问dns转换domain到IP作配对。


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

kingwilliam 發表於 2019-10-16 10:28

[i=s] 本帖最後由 kingwilliam 於 2019-11-3 12:50 編輯 [/i]

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伺服器如何运作 不得不提 [url=https://medium.com/@TachyonDevel/%E6%BC%AB%E8%B0%88%E5%90%84%E7%A7%8D%E9%BB%91%E7%A7%91%E6%8A%80%E5%BC%8F-dns-%E6%8A%80%E6%9C%AF%E5%9C%A8%E4%BB%A3%E7%90%86%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8-62c50e58cbd0]漫谈各种黑科技式 DNS 技术在代理环境中的应用[/url]。他解说得非常详细。但又真的非常巨细无遗 所以会看得有点累  我会节录一部份用来解说 还会加入一些个人说明作补充。


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

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

如想详细了解,可参考 [url=https://blog.gtwang.org/web-development/network-lantency-and-bandwidth/]网路的延迟(Latency)与频宽(Bandwidth)是什麽[/url]

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



*** 例201 *** "domainStrategy": "AsIs"[code]{
        "dns": {
                "servers": [
                        {
                                "address": "114.114.114.114",
                                "port": 53,
                                "domains": ["geosite:cn"]
                        },
                        "address": "8.8.8.8"
                ]
        },

        "routing": {
                // "domainStrategy": "AsIs",
                "rules": [

                        // direct-domain
                        {
                                "type": "field",
                                "domain": [
                                        "geosite:cn"
                                ],
                                "outboundTag": "direct"
                        },

                        // direct-ip
                        {
                                "type": "field",
                                "ip": [
                                        "geoip:cn",
                                        "geoip:private"
                                ],
                                "outboundTag": "direct"
                        }
                ]
        },

        "inbounds": [
                // socks:1080
                {
                        "tag": "socks-in",
                        "protocol": "socks",
                        "port": 1080,
                        "sniffing": {
                                "enabled": true,
                                "destOverride": ["http", "tls"]
                        }
                }
        ],

        "outbounds": [
                // default_out
                {
                        "tag": "default_out",
                        "protocol": "vmess",
                        "settings": {
                        },
                },

                //direct
                {
                        "tag": "direct",
                        "protocol": "freedom",
                        "settings": {}
                },
        ]
}[/code]请紧记 v2ray 流悜是 inbounds -> routing -> outbounds

我相信 例201 是现在一般所用的设定, 现在开始讲解流程,
[list=1]
[*]浏览器发出访问[url]www.google.com[/url]要求
[*]inbounds(socks:1080)会接收这个要求.
[*]routing 会看direct-domain是不是geosite:cn
[*]routing 再看是不是geoip:cn 或 geoip:private
[*]routing 最後 在没有合适条件下离开routing
[*]outbounds 因routing内没有付合任何要求,所以outbounds会用第一设定 在例201即default_out 上网。
[/list]


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

这时dns还没参与运作。

kingwilliam 發表於 2019-10-16 10:29

[i=s] 本帖最後由 kingwilliam 於 2019-11-3 12:50 編輯 [/i]

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

*** 例202 ***  "domainStrategy": "IPIfNonMatch"[code]{
        "dns": {
                "servers": [
                        {
                                "address": "114.114.114.114",
                                "port": 53,
                                "domains": ["geosite:cn"]
                        },
                        "address": "8.8.8.8"
                ]
        },

        "routing": {
                "domainStrategy": "IPIfNonMatch",
                "rules": [

                        // direct-domain
                        {
                                "type": "field",
                                "domain": [
                                        "geosite:cn"
                                ],
                                "outboundTag": "direct"
                        },

                        // direct-ip
                        {
                                "type": "field",
                                "ip": [
                                        "geoip:cn",
                                        "geoip:private"
                                ],
                                "outboundTag": "direct"
                        }
                ]
        },

        "inbounds": [
                // socks:1080
                {
                        "tag": "socks-in",
                        "protocol": "socks",
                        "port": 1080,
                        "sniffing": {
                                "enabled": true,
                                "destOverride": ["http", "tls"]
                        }
                }
        ],

        "outbounds": [
                // default_out
                {
                        "tag": "default_out",
                        "protocol": "vmess",
                        "settings": {
                        },
                },

                //direct
                {
                        "tag": "direct",
                        "protocol": "freedom",
                        "settings": {}
                },
        ]
}[/code]请紧记 v2ray 流悜是 inbounds -> routing -> outbounds

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

[list=1]
[*]浏览器发出访问[url]www.google.com[/url]要求
[*]inbounds(socks:1080)会接收这个要求
[*]routing 会看direct-domain是不是geosite:cn
[*]routing 再看是不是geoip:cn 或 geoip:private
[*]routing 最後 routing内没有合适要求
***因"domainStrategy" 是 "IPIfNonMatch" 所以这时v2ray会问内置dns取[url]www.google.com[/url] 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取[url]www.google.com[/url] IP地址
***但还没完结, 这是只取到[url]www.google.com[/url]的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 上网
[/list]

例202 的流程如下:

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

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

kingwilliam 發表於 2019-10-16 10:29

[i=s] 本帖最後由 kingwilliam 於 2019-11-3 12:51 編輯 [/i]

例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[code]        "routing": {
                "rules": [
                        // dns
                        {
                                "type": "field",
                                "inboundTag": "dns-in",
                                "outboundTag": "dns-out"
                        }
                ]
        },

        "inbounds": [
                // dokodemo-door:53
                {
                        "protocol": "dokodemo-door",
                        "port": 53,
                        "tag": "dns-in",
                        "settings": {
                                "address": "114.114.114.114",
                                "port": 53,
                                "network": "udp,tcp"
                        }
                },

                // dokodemo-door:1088
                {
                        "protocol": "dokodemo-door",
                        "port": 1088,
                        "tag": "tproxy-in",
                        "sniffing": {
                                "enabled": true,
                                "destOverride": ["http", "tls"]
                        },
                        "settings": {
                                "network": "tcp,udp",
                                "followRedirect": true
                        }
                }
        ],

        "outbounds": [
                // dns
                {
                        "tag": "dns-out",
                        "protocol": "dns"
                },
        ],[/code]*

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

*** 例204 *** (例201 + 例203)[code]{
        "dns": {
                "servers": [
                        {
                                "address": "114.114.114.114",
                                "port": 53,
                                "domains": ["geosite:cn"]
                        },
                        "address": "8.8.8.8"
                ]
        },

        "routing": {
                // "domainStrategy": "AsIs",
                "rules": [
                        // direct-domain
                        {
                                "type": "field",
                                "domain": ["geosite:cn"],
                                "outboundTag": "direct"
                        },

                        // direct-ip
                        {
                                "type": "field",
                                "ip": ["geoip:cn","geoip:private"],
                                "outboundTag": "direct"
                        },

                        // dns
                        {
                                "type": "field",
                                "inboundTag": "dns-in",
                                "outboundTag": "dns-out"
                        }
                ]
        },

        "inbounds": [
                // socks:1080
                {
                        "tag": "socks-in",
                        "protocol": "socks"
                        ...
                },

                // dokodemo-door:53
                {
                        "protocol": "dokodemo-door",
                        "port": 53,
                        "tag": "dns-in",
                        "settings": {
                                "address": "114.114.114.114",
                                "port": 53,
                                "network": "udp,tcp"
                        }
                },

                // dokodemo-door:1088
                {
                        "protocol": "dokodemo-door",
                        "tag": "tproxy-in",
                        ...
                }
        ],

        "outbounds": [
                // default_out
                {
                        "tag": "default_out",
                        "protocol": "vmess",
                        "settings": {...},
                },

                //direct
                {
                        "tag": "direct",
                        "protocol": "freedom",
                        "settings": {}
                },

                // dns
                {
                        "tag": "dns-out",
                        "protocol": "dns"
                },
        ]
}[/code]在讲解前有几点要留意

[list]
[*] 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
[/list]

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

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

[list=1]
[*]如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 上网
[/list]

例204 的流程如下:

[list]
[*]ftp client -> inbounds dns-in -> routing(1) -> dns-out -> dns server -> routing(2) -> outbounds(1)
[*]ftp client -> inbounds tproxy-in -> routing(3) -> outbounds(2)
[/list]



[size=5]以下会用 电邮客户端 作例子 [/size]

[list=1]
[*]如电邮要寄去 @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 上网
[/list]

例204 的流程如下:

[list]
[*]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)
[/list]

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

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

kingwilliam 發表於 2019-10-16 10:29

[i=s] 本帖最後由 kingwilliam 於 2019-11-3 12:52 編輯 [/i]

如果你的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 重而加快上网反应。



说了那麽多, 反应可加快多少? 直接给数据[code]
12:08:11 :  "A IN www.google.com 0.537204365s
12:08:31 :  "A IN www.google.com 0.000104999s
[/code][list]
[*]在 12:08:11 第一次要求 [url]www.google.com[/url] A record, 经过v2ray一来一回要 0.537204365s
[*]在 12:08:31 再要求 [url]www.google.com[/url] A record, 但因之前已查询过, 所以coredns直接回覆, 只需要 0.000104999s
[*]反应快了多少? 0.537204365s / 0.000104999s 答案是 5116陪
[/list]




* * *   代 续   * * *

kingwilliam 發表於 2019-10-16 10:30

* * *   備 用   * * *

kingwilliam 發表於 2019-10-16 10:30

* * *   備 用   * * *

kingwilliam 發表於 2019-10-16 10:30

* * *   備 用   * * *

kingwilliam 發表於 2019-10-16 10:31

* * *   備 用   * * *

頁: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.