MetaCubeX / mihomo

A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.
https://wiki.metacubex.one
MIT License
15.78k stars 2.58k forks source link

[BUG]开启tun后,连接127.0.0.1的socks5服务器,UDP不通 #745

Closed reF1nd closed 1 year ago

reF1nd commented 1 year ago

如题 系统为 Android 13,root 后跑裸核,版本为alpha-d48f9c2 配置文件如下:

点击以展开 ``` mixed-port: 8080 allow-lan: false ipv6: true mode: rule log-level: silent find-process-mode: strict external-controller: 127.0.0.1:9090 external-ui: ./dashboard external-ui-name: xd external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip" unified-delay: false tcp-concurrent: true keep-alive-interval: 15 global-client-fingerprint: random geodata-mode: true geodata-loader: memconservative experimental: quic-go-disable-gso: true geox-url: geoip: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat" geosite: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat" mmdb: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb" profile: store-selected: true store-fake-ip: true dns: enable: true prefer-h3: true listen: 127.0.0.1:1053 ipv6: true ipv6-timeout: 100 default-nameserver: - system - 114.114.114.114 - 114.114.115.115 enhanced-mode: fake-ip fake-ip-range: 28.0.0.1/8 use-hosts: true fake-ip-filter: - '*.lan' - '+.stun.*.*' - '+.stun.*.*.*' - '+.stun.*.*.*.*' - lens.l.google.com - stun.l.google.com - '*.n.n.srv.nintendo.net' - '*.mcdn.bilivideo.cn' - dns.msftncsi.com - www.msftncsi.com - www.msftconnecttest.com - connect.rom.miui.com - connectivitycheck.platform.hicloud.com - wifi.vivo.com.cn - cp.cloudflare.com - WORKGROUP - localhost.ptlogin2.qq.com - 'xbox.*.microsoft.com' - '+.xboxlive.com' - haoportal.huazhu.com - '+.pfoleb.lol' - '+.wlmq189.com' nameserver: - 'https://dns.alidns.com/dns-query#DIRECT' fallback: - 'https://cloudflare-dns.com/dns-query#test' fallback-filter: geoip: true geoip-code: CN geosite: - gfw ipcidr: - 0.0.0.0/32 - 127.0.0.1/32 - 240.0.0.0/4 domain: - '+.google.com' - '+.facebook.com' - '+.youtube.com' nameserver-policy: "geosite:private": system 'connect.rom.miui.com': system 'haoportal.huazhu.com': system '+.pfoleb.lol': system '+.wlmq189.com': system "geosite:category-ads-all": rcode://name_error 'www.baidu.com': '114.114.114.114' '+.internal.crop.com': '10.0.0.1' proxy-server-nameserver: - 'https://223.6.6.6/dns-query#DIRECT' sniffer: enable: true force-dns-mapping: true parse-pure-ip: true override-destination: false sniff: TLS: ports: [443, 8443] HTTP: ports: [80, 8080-8880] override-destination: false force-domain: - +.v2ex.com skip-domain: - +.push.apple.com - Mijia Cloud tun: enable: true stack: gvisor auto-route: true auto-detect-interface: true device: ref0 mtu: 9000 strict-route: true dns-hijack: - any:53 - tcp://any:53 endpoint-independent-nat: true exclude-package: - com.termux proxies: - name: "test" type: socks5 server: 127.0.0.1 port: 6153 udp: true rules: - MATCH,test ```

测试方法为,使用 termux 运行 hysteria2 客户端,使其监听127.0.0.1:6153,然后 Clash Meta 开启 tun ,并且使 termux 绕过 tun ,使用 STUN 测试工具,测试结果为 UDP Blocked。

查看 debug 级别日志,没有任何有价值的信息,只有发起连接的日志 time="2023-09-22T14:58:49.150191058Z" level=info msg="[UDP] 28.0.0.1:41694 --> stun.syncthing.net:3478 match using test" 且没有任何报错

经测试,是 tun 导致的此问题,只要开启 tun,无论是否开启auto-route都会导致 UDP 不通。 且确定目标支持 UDP 转发(测试直接连接 hy2 客户端的 socks5 UDP 是通的)。 只有地址为 127.0.0.1 的 socks5 出站会有此问题,地址不为 127.0.0.1 的 socks5 出站(测试了路由器 192.168.31.1 的 socks5 服务器)都没问题。

izumi0004 commented 1 year ago

+1,其他代理监听0.0.0.0,socks5填127.0.0.1(或其他回环地址)时udp不通,填本机ipv4地址则udp转发正常 premium内核无此bug

wwqgtxx commented 1 year ago

fixed in: https://github.com/MetaCubeX/Clash.Meta/commit/bf619d858615ebce70e58f931a12bde29ec8ea5e

arkxfly commented 12 months ago

zerotier 的局域网设备依旧不行,只有填了 interface-name 之后才管用。建议出口,都检查一下本地的路由表,确定使用哪个设备?

 proxies:
 - name: home-socks
     type: socks5
     server: 172.16.1.1
     port: 1080
     udp: true
+    interface-name: feth2866
FlyInWind1 commented 8 months ago

zerotier 的局域网设备依旧不行,只有填了 interface-name 之后才管用。建议出口,都检查一下本地的路由表,确定使用哪个设备?

 proxies:
 - name: home-socks
   type: socks5
   server: 172.16.1.1
   port: 1080
   udp: true
+  interface-name: feth2866

请问大佬这个问题有办法了吗。我也遇到了相同的问题