immortalwrt / homeproxy

The modern ImmortalWrt proxy platform for ARM64/AMD64 (powered by sing-box)
GNU General Public License v2.0
539 stars 158 forks source link

域名解析后二次访问命中不同规则 #126

Open tanst opened 3 months ago

tanst commented 3 months ago

域名规则是 直连 ,解析出来的 IP 规则是 代理 。第一次访问时是 直连 ,但是第二次因为软件有解析缓存,直接访问 IP 就走 代理 了。

举个例子,默认规则是中国大陆的 IP 和域名都走 直连 ,其余走 代理 。比如,sgshort.wechat.com 解析出来的 IP 是 43.160.144.13

  1. 第一次访问会走 直连
  2. 但是第二次访问时,WeChat 客户端会直接连接到这个 IP,甚至使用 UDP 协议,这样就会走 代理

有没有一种方式可以在 解析时就根据规则处理IP

muink commented 3 months ago

大概率无解 说明第二次的流量嗅探不出域名 如果第二次连接是 quic 可以尝试 block quic 或者根据 geoip 走对应国家的节点

1715173329 commented 3 months ago

直接把 IP 设置白名单呗。

tanst commented 3 months ago

直接把 IP 设置白名单呗。

找了几个 geoip 都没有 wechat 集合,手动不太现实

muink commented 3 months ago

v1.10.0-alpha.23 可以试一下这个有没有用

tanst commented 3 months ago

v1.10.0-alpha.23 可以试一下这个有没有用

我用的 v1.10.0-alpha.24

AmberisMyShiba commented 3 months ago

域名规则是 直连 ,解析出来的 IP 规则是 代理 。第一次访问时是 直连 ,但是第二次因为软件有解析缓存,直接访问 IP 就走 代理 了。

举个例子,默认规则是中国大陆的 IP 和域名都走 直连 ,其余走 代理 。比如,sgshort.wechat.com 解析出来的 IP 是 43.160.144.13

  1. 第一次访问会走 直连
  2. 但是第二次访问时,WeChat 客户端会直接连接到这个 IP,甚至使用 UDP 协议,这样就会走 代理

有没有一种方式可以在 解析时就根据规则处理IP

是否可以这样处理,给这种域名是cn,ip是域外的规则,设置一组dns_rule,dns规则的disable_cache设置为true,然后对应建立一组route_rule,将域名分流规则放在ip分流规则前面,确保域名优先分流。类似下面

{
  "dns": {
    "rules": [
      {
        "domain_suffix": [
          ".wechat.com"
        ],
        "server": "local",
        "disable_cache": true
      }
    ]
  },
  "route": {
    "rules": [
      {
        "domain_suffix": [
          ".wechat.com"
        ],
        "outbound": "direct"
      },
      {
        "rule_set": "geoip-cn",  
        "invert":true,  
        "outbound": "proxy"
      }
    ]
  }
}
enokoneko commented 1 month ago

直接把 IP 设置白名单呗。

找了几个 geoip 都没有 wechat 集合,手动不太现实

IP-CIDR,43.160.144.0/20 https://www.netify.ai/resources/ips/43.160.144.13

davidtall commented 2 weeks ago

换DAED ,内核级直连