sing-box 是否支持 ipifnonmatch

在路由模块,未匹配到域名规则时,将域名解析成ip,随后匹配ip规则

由于设计缺陷,在 v2ray 中不能在 inbound 范围将域名解析成 IP 同时保留域名用于路由,衍生出了许多错误的设计,包括 sniff override destination 和路由匹配时解析 IP。

要同时匹配域名和 IP 和规则,为 inbound 设置 domain_strategy

1 Like

但是设置了domain_strategy之后,不就全部解析成ip去匹配ip规则了吗?

确实是这样。在入站时就全部解析成ip了。然后再去匹配路由规则。
如果你不设置domain_strategy,那么对于geosite之外的域名会走final。
我想开发者这样设计主要是因为他们的主要使用方式不是http入站。
在v2ray中,对于非http入站且没有配置远程dns的客户端,v2ray会在本地解析一次匹配路由,然后再通过嗅探把封包中的ip还原为域名传给服务器,服务器上再解析一次真正的域名。sing-box开发者认为这个过程不标准且太低效,所以设计为客户端要么提前全部解析,要么不解析。
如果你使用的不是http入站,那么就提前全部解析吧。性能并不会下降很多,只是把客户端的本地解析更换为远程解析,同时服务器上不用再二次解析了。
但如果你用的是http入站,那么最好还是不要提前全部解析了。常见网站大部分都包含在geosite中,客户端本来可以直接路由。在v2ray中只有少部分域名需要解析成ip判断路由。如果设置成提前全部解析,那么对于大部分在geosite中的域名,都是在做无用的解析操作。geosite中没有的网站,就走final路由吧。
如果你最常用国内网站,那么final应该设置成direct。同时你可能需要在路由里维护一份自定义的代理域名列表。如果你最常用国外网站,那么final应该设置成proxy。同时可能需要在路由里维护一份自定义的直连域名列表。