مسیریابی
V2Ray دارای مکانیزم مسیریابی داخلی است. این ارتباطات ورودی به خروجی های مختلف را براساس قوانین انجام می دهد. یک سناریو معمول این است که تقسیم ترافیک به وسیله کشور انجام شود. V2Ray می تواند کشور مقصد (توسط Geo IP) یک اتصال را شناسایی کند و سپس اتصال به پروکسی خروجی مربوطه را ارسال کند.
RoutingObject
RoutingObject
به عنوان مسیریابی
در پیکربندی سطح بالا استفاده می شود.
{
"domainStrategy": "AsIs",
"rules": [],
"balancers": []
}
domainStrategy
: "AsIs" | "IPIfNonMatch" | "IPOnDemand"
استراتژی قطعنامه دامنه انتخاب ها عبارتند از:
"AsIs"
: فقط از دامنه برای مسیریابی استفاده کنید. مقدار پیش فرض."IPIfNonMatch"
: زمانی که هیچ قاعده ای با دامنه فعلی منطبق نیست، V2Ray آن را به آدرس های IP (A یا AAAA) رفع می کند و دوباره تمام قوانین را امتحان می کند.- اگر یک دامنه دارای چندین آدرس IP باشد، V2Ray تمام آنها را انجام می دهد.
- IP های حل شده تنها برای تصمیم گیری مسیریابی استفاده می شوند، ترافیک هنوز به آدرس دامنه اصلی ارسال می شود.
"IPOnDemand"
: تا زمانی که یک قانون مبتنی بر IP وجود دارد، V2Ray بلافاصله دامنه را به IP حل خواهد کرد.
قوانین
: \ [RuleObject]
An array of rules. For each inbound connection, V2Ray tries these rules from top down one by one. If a rule takes effect, the connection will be routed to the outboundTag
(or balancerTag
, V2Ray 4.4+) of the rule.
balancers
: [ BalancerObject ]
(V2Ray 4.4+) An array of load balancers. When a routing rule points to a load balancer, the balancer will select an outbound based on configuration. Then traffic will be sent to that outbound.
RuleObject
{
"type": "field",
"domain": [
"baidu.com",
"qq.com",
"geosite:cn"
],
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"fc00::/7",
"fe80::/10",
"geoip:cn"
],
"port": "53,443,1000-2000",
"network": "tcp",
"source": [
"10.0.0.1"
],
"user": [
"love@v2ray.com"
],
"inboundTag": [
"tag-vmess"
],
"protocol":["http", "tls", "bittorrent"],
"attrs": "attrs[':method'] == 'GET'",
"outboundTag": "direct",
"balancerTag": "balancer"
}
When multiple fields are specified, these fields have to be all satisfied, in order to make the rule effective. If you need both domain
and ip
rules, it is highly likely you need put them into separate rules.
type
: "field"
The only valid value for now is "field"
.
domain
: [ string ]
An array of domains. Available formats are:
- متن ساده: اگر این رشته با هر بخش از دامنه هدفمندی منطبق باشد، این قانون به عهده می گیرد. مثال: rule
"sina.com"
مطابقت دامنه"sina.com"
،"sina.com.cn"
و"www.sina.com"
، اما نه"sina.cn"
. - عبارت منظم: شروع با
"regexp:"
، بقیه یک عبارت منظم است. هنگامی که Regexp با هدف دامنه مطابقت می کند، این قانون به اجرا در می آید. مثال: rule"regexp: \\. goo. * \\. com $"
برابر"www.google.com"
و"fonts.googleapis.com"
، اما نه"google.com"
. - Subdomain (توصیه می شود): شروع با
"domain:"
و بقیه یک دامنه است. هنگامی که دامنه هدفمند دقیقا همان مقدار است یا یک زیر دامنه از مقدار است، این قانون در حال اجرا است. مثال: قانون"دامنه: v2ray.com"
مسابقه"www.v2ray.com"
،"v2ray.com"
، اما نه"xv2ray.com"
. - دامنه کامل: شروع با
"full:"
و بقیه یک دامنه است. هنگامی که دامنه هدفمند دقیقا همان ارزش است، این قانون اثر می گذارد. مثال: قانون"دامنه: v2ray.com"
مطابق با"v2ray.com"
، اما نه"www.v2ray.com"
. - Pre-defined domain list: Begining with
"geosite:"
and the rest is a name, such asgeosite:google
orgeosite:cn
. See Pre-defined domain list for more detail. - Domains from file: Such as
"ext:file:tag"
. The value must begin withext:
(lowercase), and followed by filename and tag. The file is placed in resource directory, and has the same format ofgeosite.dat
. The tag must exist in the file.
ip
: [string]
An array of IP ranges. When the targeting IP is in one of the ranges, this rule takes effect. Available formats:
- IP: مانند
"127.0.0.1"
. - CIDR: مانند
"127.0.0.0/8"
. - GeoIP: مانند
"geoip: cn"
. با شروع می شودgeoip:
(حروف کوچک) و دو حرف از کد کشور را دنبال می کند.- مقدار ویژه
"geoip: خصوصی"
: برای تمام آدرس های خصوصی مانند127.0.0.1
.
- مقدار ویژه
- IP ها از فایل: مانند
"ext: file: tag"
. مقدار باید باext:
(کوچک) شروع شود و با نام فایل و تگ همراه است. فایل در قرار داده شده دایرکتوری منبع، و همان فرمت ازgeoip.dat
. برچسب باید در فایل موجود باشد.
"ext:geoip.dat:cn"
is equivalent to "geoip:cn"
.
port
:number | string
Port range. Formats are:
"a-b"
: Botha
andb
are positive integers and less than 65536. When the targeting port is in [a
,b
), this rule takes effect.a
:a
is a positive integer, and less than 65536. When the targeting port isa
, this rule takes effect.- Mix of the two above, separated by ",". Such as
"53,443,1000-2000"
.
network
: "tcp" | "udp" | "tcp,udp"
When the connection has in the chosen network, this rule take effect.
source
: [string]
An array of IP ranges. Same format as ip
. When the source IP of the connection is in the IP range, this rule takes effect.
user
: [string]
An array of email address. When the inbound connection uses an user account of the email address, this rule takes effect. For now Shadowsocks and VMess support user with email.
inboundTag
: [string]
An array of string as inbound proxy tags. When the connection comes from one of the specified inbound proxy, this rule takes effect.
protocol
: [ "http" | "tls" | "bittorrent" ]
An array of string as protocol types. When the connection uses one of the protocols, this rule takes effect. To recognize the protocol of a connection, one must enable sniffing
option in inbound proxy.
attrs
: string
(V2Ray 4.18+) A Starlark script, used for detecting traffic attributes. When this script returns true, this rule takes effect.
Starlark is a subset of Python. The script takes a global varible named attrs
. It contains all attributes of the traffic.
At the moment, only http inbound sets attrs
.
Examples:
- Detect HTTP GET:
"attrs[':method'] == 'GET'"
- Detect HTTP Path:
"attrs[':path'].startswith('/test')"
- Detect Content Type:
"attrs['accept'].index('text/html') >= 0"
outboundTag
string
Tag of the outbound that the connection will be sent to, if this rule take effect.
balancerTag
: string
Tag of an load balancer. Then this rule takes effect, V2Ray will use the balancer to select an outbound. Either outboundTag
or balancerTag
must be specified. When both are specified, outboundTag
takes priority.
BalancerObject
Configuration for a load balancer. When a load balancer takes effective, it selects one outbound from matching outbounds. This outbound will be used for send out-going traffic.
{
"tag": "balancer",
"selector": []
}
tag
: string
Tag of this BalancerObject
, to be matched from balancerTag
in RuleObject
.
selector
: [ string ]
An array of strings. These strings are used to select outbounds with prefix matching. For example, with the following outbound tags: [ "a", "ab", "c", "ba" ]
,selector ["a"]
matches [ "a", "ab" ]
.
When multiple outbounds are selected, load balancer for now picks one final outbound at random.
Pre-defined domain lists
This is a domain lists maintained by domain-list-community project. It provides a file named geosite.dat
for some predefined domain lists. Notably:
category-ads
: Common ads domains.category-ads-all
: Common ads domains and ads providers' domains.cn
: Equivalent to an union ofgeolocation-cn
andtld-cn
.google
: All Google domains.facebook
: All Facebook domains.geolocation-cn
: Common domains that serve in China.geolocation-!cn
: Common domains that don't serve in Chinaspeedtest
: All domains used by Speedtest.tld-cn
: All .cn and .中国 domains.