C# Proxy Rule - noisky/shadowsocksr GitHub Wiki

代理规则

文件位置

位于相同目录下的user.rule

文件格式

注释

以#号开始的一行即为注释,注意#号的前面不得有空格

基本规则

由任意数量的行组成,除了空行和注释,其它的每行为一条规则,规则之间有先后次序之分,若出现相同的规则,那么后一条规则可覆盖前一条规则,规则有两大类:域名规则和IP段规则

规则匹配结果类型

规则匹配结果类型有4种:remoteproxy, localproxy, direct, reject。均可用于以下两大类规则。以上4种结果的含义:

  • remoteproxy: 经过SSR服务器连接
  • localproxy: 经过本地代理连接,或没有配置本地代理时使用直连连接
  • direct: 直连连接
  • reject: 拒绝连接

域名规则

格式: hostname rule

hostname格式支持三种写法:

  1. 直接写完整域名如 b.com ,此时不匹配a.b.com这类子域名
  2. 带通配符的如 *.b.com ,此时不匹配b.com,但能匹配a.b.com这类子域名
  3. 用于匹配此域名及其子域名的 .b.com ,此时任何末尾为 b.com 的域名均匹配

注意, b.com 与 .b.com 是会相互覆盖的(后写的一个有效),如果你需要 b.com 和它的子域名走不同的规则,那么分别写 b.com 和 *.b.com 两条规则即可

域名规则还有一种特殊的rule,例如:

a.com 127.0.0.1
.b.com 123.123.123.123

这种规则相当于给指定域名或一组子域名一个相应的IP,但不直接指定最终结果。最终结果将由IP段规则决定,如果结果是直连,那么将使用此规则所指定的IP来连接。

IP段规则

格式: ip1 ip2 rule

注意,ip2必须大于或等于ip1,此规则应用于包含ip1、ip2及它们之间的所有IP。如果两条不同的IP规则发生IP重叠,那么重叠的那部分以后一条规则为准

利用这个规则可以编写基于黑名单或白名单的IP规则,例如先写:

:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff remoteproxy
0.0.0.0 255.255.255.255 remoteproxy

1.0.1.0 1.0.1.255 localproxy
......

前两行这样意味着所有的IP默认走服务器,然后利用后一规则覆盖前一规则来设置不走代理的IP,所以这就是白名单规则。反过来如果所有IP设置为localproxy,那么就是黑名单规则。

规则匹配次序

首先匹配域名,如域名没有匹配的,再去DNS解析,查到IP后,再匹配IP规则,或IP规则也没有匹配,那么最终结果是remoteproxy,即一个空的user.rule文件等于全局