Router 路由

service.router

V2Ray 内建了一个路由模块,可以将入站数据按需求由不同的出站连接发出,以达到按需代理的目的。这一功能的常见用法是分流国内外流量。V2Ray 可以通过内部机制判断不同国家或地区的流量,然后将它们发送到不同的出站代理。

{
  "domainStrategy":"AsIs",
  "rule":[],
  "balancingRule":[]
}

domainStrategy: AsIs | UseIp | IpIfNonMatch | IpOnDemand

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

rule: [ RuleObject ]

对应一个数组,数组中每一项是一个规则。对于每一个连接,路由将根据这些规则依次进行判断,当一个规则生效时,即将这个连接转发至它所指定的 outboundTagbalancingTag。当没有匹配到任何规则时,流量默认被转发至第一个 outbound

balancingRule: [ BalancingRuleObject ]

一个数组,数组中每一项是一个负载均衡器的配置。当一个规则指向一个负载均衡器时,V2Ray 会通过此负载均衡器选出一个 outbound,然后由它转发流量。

RuleObject

tag: string

对应一个额外 出站连接配置 的标识。

balancingTag: string

对应一个负载均衡器的标识。balancerTagtag 须二选一。当同时指定时,tag 生效。

domain: DomainObject

当匹配目标域名时,此规则生效。

geoDomain: GeoDomain

当匹配目标域名时,此规则生效。

geoip : GeoIP

当匹配目标 IP 时,此规则生效。

portList: string

目标端口范围,有三种形式:

  • a-b:a 和 b 均为正整数,且小于 65536。这个范围是一个前后闭合区间,当端口落在此范围内时,此规则生效。
  • a:a 为正整数,且小于 65536。当目标端口为 a 时,此规则生效。
  • 以上两种形式的混合,以逗号 "," 分隔。形如:53,443,1000-2000

networks: "tcp" | "udp" | "tcp,udp"

可选的值有 "tcp"、"udp" 或 "tcp,udp",当连接方式是指定的方式时,此规则生效。

sourceGeoip: GeoIP

当匹配来源 IP 时,此规则生效。

sourcePortList: string

来源端口范围,格式与 portList 相同。

userEmail: [ string ]

一个数组,数组内每一项是一个邮箱地址。当某一项匹配来源用户时,此规则生效。

inboundTag: [ string ]

一个数组,数组内每一项是一个标识。当某一项匹配入站协议的标识时,此规则生效。

protocol: [ "http" | "tls" | "bittorrent" ]

一个数组,数组内每一项表示一种协议。当某一个协议匹配当前连接的流量时,此规则生效。必须开启入站代理中的 sniffing 选项。

domainMatcher: "linear" | "mph"

选择要使用的域名匹配算法。

  • linear:使用线性匹配算法,默认值;
  • mph:使用最小完美散列(minimal perfect hash)算法。
    • 测试数据约 17 万条,匹配速度提升约 30%,内存占用减少约 15%

geoDomain :

BalancingRuleObject

负载均衡器配置。当一个负载均衡器生效时,它会从指定的出站协议中,按配置选出一个最合适的出站协议,进行流量转发。

{
    "tag": "balancer",
    "selector": [],
    "strategy": {
      "type": "random"
    }
}

tag: string

此负载均衡器的标识,用于匹配 RuleObject 中的 balancerTag

outboundSelector: [ string ]

一个字符串数组,其中每一个字符串将用于和出站协议标识的前缀匹配。在以下几个出站协议标识中:[ "a", "ab", "c", "ba" ]"outboundSelector": ["a"] 将匹配到 [ "a", "ab" ]

strategy: "random" | "leastping" | "leastload"

进行负载均衡的策略类型。

可以填入的类型包括 randomleastping 以及 leastload

strategySettings: StrategySettingsObject

fallbackTag: string

StrategySettingsObject