v2ray, routing, proxy,

V2ray域名解析策略和V2rayN代理模式解读

DolorHunter DolorHunter Follow Jan 31, 2021 · 1 min read

V2ray域名解析策略和V2rayN代理模式解读
Share this

V2ray的功能详实, 其一就是路由功能. Windows系统下用户多用V2rayN图形界面, 因此本文借着V2rayN软件来作文本文实例. 当然现在的QV2ray有后来居上的趋势, 不过因为其设计风格, 还有内核不能一键更新一直没有用他.

注意: V2ray指V2ray核心(类似Linux kernel, 只提供内核), 为无图形界面软件; V2rayN指带V2ray核心的图形界面软件(类似Gnome, KDE, XFCE等, 提供内核的图形交互软件用于操作内核).

路由功能, 就是根据不同网站/网域/地区, 决定不同的连接方式代理/直连/阻断, 达到预期的上网需求. 比如, 在使用Google的时候, 我希望能代理(不然上不去或者); 但是在使用某中国网站的时候, 我希望直连(访问速度快且IP不会跳跃), 就需要用到路由功能.

本文只讲解 V2ray的域名解析策略(domainStrategy)V2rayN的代理模式(Http proxy). 如果想看具体的路由示例见 Project V - 路由功能新 V2Ray 白话文指南 - 路由功能.

V2ray的域名解析策略(domainStrategy)

路由的JSON配置长这样

{
  "domainStrategy": "AsIs",
  "rules": [],
  "balancers": []
}

domainStrategy 为域名解析策略,根据不同的设置使用不同的策略。有”AsIs”, “IPIfNonMatch”和”IPOnDemand”三种策略.

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

V2rayN的代理模式(Http proxy)

我使用的V2rayN长期被一个问题困扰. 照理来说, 只会有设置本地代理走127.0.0.1:10808(socks口)的软件和浏览器的流量才会通过V2ray, 甚至CMD/Powershell都会走代理, 我猜可能因为全局模式意思是全部流量代理(其实不是); 然而不知为何又有些国内网站, 却使用的是直连模式.

其实, V2rayN的全局模式指的并不是全部流量走代理. V2rayN的HTTP Proxy共有四种模式:

  1. 不代理模式
  2. 全局模式(global)
  3. PAC模式
  4. 直连模式(direct)

全局模式(global)指的是V2ray所有流量通过V2rayN的路由(Settings -> Core: Routing settings 中设置), 而不是全部流量走代理. 这些路由里面有代理, 直连和阻拦三种路由, 因此导致全局模式下有的网页是直连的. 同时此模式会设置系统代理, 因此CMD/Powershell也会走代理. Windows下浏览器默认使用的是系统代理, 因此流量也会走V2ray. 软件如果需要使用代理需要在软件内单独设置, 需要在软件内设置代理(Proxy)为V2rayN的默认socks口127.0.0.1:10808(socks协议), 或者http口10809(http协议); 如果只使用V2ray核心, 则默认为1080.

PAC模式跟全局模式(global)不同之处在于使用的是PAC维护的路由, 网页更全. 不过因为代理没有github因此我日常用的还是全局. 自己在V2rayN内维护路由.

P.S. V2rayN没有写个文档还是比较坑的, 害我用V2rayN跟在抛硬币一样.

讲了那么多, 那为什么有时候全局模式(global)或者PAC模式下访问某些网站, 流量仍然不符合预期呢? 这时候可以检查一下 domainStrategy 域名策略.

虽然 Project V - 路由功能 说”AsIs”模式为路由选择的默认值, 但是V2rayN默认为”IPIfNonMatch”模式. 照理来说应该是”AsIs”模式的更进一步, 不知道怎么就出了问题. 我看V2rayN的规则内多用domain做策略, 因此就把domainStrategy改为”AsIs”模式就一切正常了.

参考资料:

Join Newsletter
Get the latest news right in your inbox. We never spam!
DolorHunter
Written by DolorHunter
Developer & Independenet Blogger