Xray-core icon indicating copy to clipboard operation
Xray-core copied to clipboard

代理 UDP 时如果被代理地址为域名似乎会出现不通的情况

Open KobeArthurScofield opened this issue 1 year ago • 5 comments

问题描述

在使用 FakeIP 进行透明代理或者代理送出数据到服务端时附带的地址为域名的话,被代理的应用可能会出现连接问题。在单使用 Xray-core 时不影响直连。 这个问题在以下情况复现:

  1. 在电脑上使用 FakeIP 配合 TUN 使用时,直连的数据很可能没有影响,被代理的数据反而会受影响(仅限需要先解析域名到 IP 的 UDP),比如访问 https://ip.skk.moe/stun 时,被代理的测试地址测试可能无法获得结果。如果 TeamSpeak 也被 TUN 接管,语音服务器地址域名落在被代理范围内时也会无法连接。不影响域名解析后路由为直连以及纯 IP 的对端连接。
  2. 在手机上使用 v2rayNG 使用 FakeIP 时启用系统 VPN 服务时,使用例如 TeamSpeak 之类的应用,如果连接到的服务器(使用域名)落在路由规则的代理范围内,会出现无法连接的问题。不影响直连的服务器以及纯 IP。

服务端使用 Xray-core (所有版本均在发布后三天内更新,目前为 1.8.7),搭配客户端为 Xray-core 亦或是 sing-box 时均存在。但是如果数据送入入口前已经被解析为非 FakeIP 则不受该问题影响。 服务端使用 Xray-core (所有版本均在发布后三天内更新,目前为 1.8.7)

疑似与代理 UDP 时 IP 和域名的对应处理有关。

服务端日志
2024/01/22 08:39:14 [Info] [4137504723] proxy/vless/inbound: firstLen = 98
2024/01/22 08:39:14 [Info] [4137504723] proxy/vless/inbound: received request for tcp:v1.mux.cool:0
2024/01/22 08:39:14 [Info] [4137504723] common/mux: received request for udp:<被代理域名>:9987
2024/01/22 08:39:14 [Debug] app/dns: domain <被代理域名> will use DNS in order: [localhost]
2024/01/22 08:39:14 [Info] app/dns: Localhost got answer: <被代理域名> -> [<IP 地址 1> <IP 地址 2>]
2024/01/22 08:39:14 [Info] [4137504723] app/dispatcher: default route for udp:<被代理域名>:9987
2024/01/22 08:39:14 [Debug] app/dns: domain <被代理域名> will use DNS in order: [localhost]
2024/01/22 08:39:14 [Info] app/dns: Localhost got answer: <被代理域名> -> [<IP 地址 1>]
2024/01/22 08:39:14 [Info] transport/internet: replace destination with udp:<IP 地址 1>:9987
2024/01/22 08:39:14 [Debug] transport/internet: dialing to udp:<IP 地址 1>:9987
2024/01/22 08:39:14 [Info] [4137504723] proxy/freedom: connection opened to udp:<被代理域名>:9987, local endpoint [::]:65111, remote endpoint <IP 地址 1>:9987
// 以下为客户端中断连接
2024/01/22 08:39:37 [Info] [4137504723] common/mux: session 0 ends. > io: read/write on closed pipe

2024/01/22 08:39:47 [Info] [4137504723] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > context canceled

错误日志提供的信息不太多。打开 access log 可能会有发现。

服务端配置(最小化)
dns:
  hosts:
  servers:
    -
      address: localhost
      domains:
        - geosite:private
      skipFallback: false
  queryStrategy: UseIP
  disableCache: false
  disableFallback: false
  disableFallbackIfMatch: true
  tag: InternalDNSServer

routing:
  domainStrategy: IPIfNonMatch
  rules:
    -
      type: field
      ip:
        - geoip:private
      outboundTag: blocked

inbounds:
  -
    listen: "::"
    port: port1,port2
    protocol: vless
    settings:
      clients:
        -
          id: <valid uuid>
          level: 12
          email: <user>
          flow: xtls-rprx-vision
        -
          id: <valid uuid>
          level: 12
          email: <user>
          flow: xtls-rprx-vision
      decryption: none
      fallbacks:
        -
          dest: <address to HTTP/2>
          type: tcp
          xver: 0
    sniffing:
      enabled: true
      metadataOnly: true
    allocate:
      strategy: always
    streamSettings:
      network: tcp
      security: reality
      realitySettings:
        show: false
        dest: <address to borrow myself>
        type: tcp
        xver: 0
        serverNames:
          - <SNI borrowed from myself>
        privateKey: <valid key>
        minClientVer: "1.8.1"
        maxTimeDiff: 3600000
        shortIds:
          - <valid short ID>
          - <valid short ID>
      sockopt:
        tcpKeepAliveInterval: 75
        tcpKeepAliveIdle: 300
        tcpNoDelay: true
        tcpMptcp: true
        tcpCongestion: bbr
        acceptProxyProtocol: false
    tag: vless-vision-backend

outbounds:
  -
    protocol: freedom
    settings:
      userLevel: 11
    streamSettings:
      sockopt:
        domainStrategy: ForceIPv6v4
        tcpKeepAliveInterval: 90
        tcpKeepAliveIdle: 180
        tcpCongestion: bbr
        tcpNoDelay: true
        tcpMptcp: true
    tag: direct
  -
    protocol: blackhole
    settings:
      response:
        type: none
    tag: blocked
客户端日志(v2rayNG)
{
    "dns": {
        "queryStrategy": "UseIP",
        "tag": "dns-server",
        "hosts": {
            "<REMOTE DNS>": [
                "<IP>"
            ],
            "<DOMESTIC DNS>": [
                "<IP>"
            ],
            "domain:localhost": [
                "::1",
                "127.0.0.1"
            ],
            "domain:test": [
                "::1",
                "127.0.0.1"
            ]
        },
        "servers": [
            {
                "address": "<REMOTE DNS>",
                "domains": [
                    "geosite:googlefcm"
                ],
                "skipFallback": true
            },
            {
                "address": "fakedns",
                "domains": [
                    "<ALL USED DOMAIN SET>"
                ]
            },
            {
                "address": "<DOMESTIC IP>",
                "domains": [
                    "geosite:private",
                    "<DIRECT DOMAIN>"
                ]
            },
            {
                "address": "<REMOTE DNS>",
                "domains": [
                    "<PROXY DOMAIN>"
                ],
                "skipFallback": true
            }
        ],
        "disableFallbackIfMatch": true
    },
    "fakedns": [
        {
            "poolSize": 32768,
            "ipPool": "198.18.0.0/15"
        },
        {
            "poolSize": 32768,
            "ipPool": "2001:2::/48"
        }
    ],
    "inbounds": [
        {
            "port": 10808,
            "listen": "127.0.0.1",
            "protocol": "socks",
            "tag": "socks",
            "settings": {
                "userLevel": 2,
                "auth": "noauth",
                "udp": true
            },
            "sniffing": {
                "destOverride": [
                    "fakedns"
                ],
                "enabled": true,
                "metadataOnly": true
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": -1,
                    "tcpKeepAliveInterval": -1,
                    "tcpNoDelay": true
                }
            }
        },
        {
            "port": 10809,
            "listen": "127.0.0.1",
            "protocol": "http",
            "tag": "http",
            "settings": {
                "userLevel": 2
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": -1,
                    "tcpKeepAliveInterval": -1,
                    "tcpNoDelay": true
                }
            }
        },
        {
            "port": 10853,
            "listen": "127.0.0.1",
            "protocol": "dokodemo-door",
            "tag": "dns-in",
            "settings": {
                "port": 53,
                "userLevel": 3,
                "address": "8.8.8.8",
                "network": "tcp,udp"
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": -1,
                    "tcpKeepAliveInterval": -1,
                    "tcpNoDelay": true
                }
            }
        }
    ],
    "log": {
        "access": "none",
        "loglevel": "warning",
        "dnsLog": true
    },
    "outbounds": [
        {
            "protocol": "freedom",
            "tag": "direct",
            "settings": {
                "userLevel": 4
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": 300,
                    "tcpKeepAliveInterval": 75,
                    "domainStrategy": "ForceIPv6v4",
                    "tcpMptcp": true,
                    "tcpNoDelay": true
                }
            }
        },
        {
            "protocol": "vless",
            "tag": "proxy",
            "mux": {
                "concurrency": -1,
                "xudpConcurrency": 8,
                "xudpProxyUDP443": "allow",
                "enabled": true
            },
            "settings": {
                "vnext": [
                    {
                        "port": <server port>,
                        "address": "<SERVER DOMAIN>",
                        "users": [
                            {
                                "level": 4,
                                "encryption": "none",
                                "flow": "xtls-rprx-vision-udp443",
                                "id": "<valid uuid>"
                            }
                        ]
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "reality",
                "realitySettings": {
                    "fingerprint": "random",
                    "publicKey": "<valid key>",
                    "serverName": "<SERVER DOMAIN>",
                    "shortId": "<valid short id>",
                    "spiderX": "/spyderx_page",
                    "show": false
                },
                "sockopt": {
                    "tcpKeepAliveIdle": 300,
                    "tcpKeepAliveInterval": 75,
                    "domainStrategy": "ForceIPv6v4",
                    "tcpMptcp": true,
                    "tcpNoDelay": true
                }
            }
        },
        {
            "protocol": "blackhole",
            "tag": "block",
            "settings": {
                "response": {
                    "type": "none"
                }
            }
        },
        {
            "protocol": "dns",
            "tag": "dns-out",
            "settings": {
                "userLevel": 3,
                "address": "2001:4860:4860::8844",
                "nonIPQuery": "skip"
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": 300,
                    "tcpKeepAliveInterval": 75,
                    "domainStrategy": "ForceIPv6v4",
                    "tcpNoDelay": true
                }
            }
        },
        {
            "protocol": "freedom",
            "tag": "DNSQExit",
            "settings": {
                "userLevel": 3
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": 300,
                    "tcpKeepAliveInterval": 75,
                    "domainStrategy": "ForceIPv6v4",
                    "tcpNoDelay": true
                }
            }
        }
    ],
    "policy": {
        "levels": {
            "2": {
                "bufferSize": 0,
                "connIdle": 1800,
                "downlinkOnly": 5,
                "handshake": 20,
                "uplinkOnly": 5
            },
            "3": {
                "bufferSize": 0,
                "connIdle": 180,
                "downlinkOnly": 4,
                "handshake": 4,
                "uplinkOnly": 4
            },
            "4": {
                "bufferSize": 64,
                "connIdle": 1800,
                "downlinkOnly": 5,
                "handshake": 20,
                "uplinkOnly": 5
            }
        }
    },
    "routing": {
        "domainMatcher": "hybrid",
        "domainStrategy": "IPIfNonMatch",
        "rules": [
            {
                "outboundTag": "dns-out",
                "type": "field",
                "inboundTag": [
                    "dns-in"
                ]
            },
            {
                "outboundTag": "proxy",
                "type": "field",
                "inboundTag": [
                    "dns-server"
                ],
                "ip": [
                    "<REMOTE DNS SERVER IP>"
                ]
            },
            {
                "outboundTag": "DNSQExit",
                "type": "field",
                "inboundTag": [
                    "dns-server"
                ]
            },
            {
                "outboundTag": "direct",
                "type": "field",
                "domain": [
                    "geosite:private",
                    "<DIRECT DOMAIN>"
                ]
            },
            {
                "outboundTag": "direct",
                "type": "field",
                "ip": [
                    "geoip:private"
                ]
            },
            {
                "outboundTag": "proxy",
                "type": "field",
                "domain": [
                    "<PROXY DOMAIN>"
                ]
            },
            {
                "outboundTag": "proxy",
                "type": "field",
                "ip": [
                    "<PROXY IP>"
                ]
            }
        ]
    }
}

这个问题可能会在引入 TUN 后变得很明显,也许可以通过建立对应的域名——地址对来缓解,只是如果一个 IP 可以被多个域名解析到时会比较麻烦,不知道有无办法可解。

KobeArthurScofield avatar Jan 22 '24 15:01 KobeArthurScofield

  • 关于客户端 fake DNS 的 UDP 问题,请测试最新的 commit 的修改。报告问题请提供最小复现配置及完整的日志
  • 如果你认为在代理 UDP 时传送域名目标地址到服务器会引起问题,想要总是发送 IP 目标地址到服务器的话,建议实现 outbound 的 domainStrategy
  • fake DNS 对于依赖正确 IP 地址的使用场景(以及 STUN 之类)无能为力。
  • https://sekai.icu/posts/udp-fqdn-in-transport-proxy/ (该文章中对于 xray 的描述已过时)

dyhkwong avatar Jan 23 '24 07:01 dyhkwong

感谢回复,前来补充细节。如有问题还请不吝指教。

以下日志因为隐私原因做了打码及筛选,如果需要完整日志可以私发。

客户端分流及 DNS 查询规则为黑名单(优先 direct),使用加强版 geosite 和 geoip,代理 geosite:gfw geoip:google 规则,没有 block。 所有域名(不管直连还是代理)均使用 FakeDNS。 使用的可连通 ts 服务器在国内直连,无法正常连通 ts 服务器在 GCP 上,因为 IP 匹配被代理(如果直连则是没问题的)。

Server Log
2024/01/23 09:32:36 [Info] [512045520] proxy/vless/inbound: firstLen = 837
2024/01/23 09:32:36 [Info] [512045520] proxy/vless/inbound: received request for tcp:v1.mux.cool:0
2024/01/23 09:32:36 [Info] [512045520] proxy: Xtls Unpadding new block, content 35 padding 147 command 1
2024/01/23 09:32:36 [Info] [512045520] common/mux: received request for udp:op****ne:9987
2024/01/23 09:32:36 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:36 [Info] [512045520] common/mux: received request for udp:op****ne:9987
2024/01/23 09:32:36 [Info] [512045520] common/mux: XUDP new [232 142 186 198 195 146 62 21]
2024/01/23 09:32:36 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:36 [Info] app/dns: Localhost got answer: op****ne -> [3****0 2****:]
2024/01/23 09:32:36 [Info] [512045520] app/dispatcher: default route for udp:op****ne:9987
2024/01/23 09:32:36 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:36 [Info] app/dns: Localhost got answer: op****ne -> [3****0 2****:]
2024/01/23 09:32:36 [Info] [512045520] app/dispatcher: default route for udp:op****ne:9987
2024/01/23 09:32:36 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:36 localhost got answer: op****ne -> [3****0, 2****:] 14.585349ms
2024/01/23 09:32:36 tcp:[24****e1]:42170 accepted udp:op****ne:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:32:36 localhost got answer: op****ne -> [3****0, 2****:] 15.540672ms
2024/01/23 09:32:36 tcp:[24****e1]:42170 accepted udp:op****ne:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:32:36 [Info] app/dns: Localhost got answer: op****ne -> [2****:]
2024/01/23 09:32:36 [Info] transport/internet: replace destination with udp:[2****:]:9987
2024/01/23 09:32:36 [Debug] transport/internet: dialing to udp:[2****:]:9987
2024/01/23 09:32:36 [Info] [512045520] proxy/freedom: connection opened to udp:op****ne:9987, local endpoint [::]:49383, remote endpoint [2****:]:9987
2024/01/23 09:32:36 [Info] app/dns: Localhost got answer: op****ne -> [2****:]
2024/01/23 09:32:36 [Info] transport/internet: replace destination with udp:[2****:]:9987
2024/01/23 09:32:36 [Debug] transport/internet: dialing to udp:[2****:]:9987
2024/01/23 09:32:36 [Info] [512045520] proxy/freedom: connection opened to udp:op****ne:9987, local endpoint [::]:59357, remote endpoint [2****:]:9987
2024/01/23 09:32:36 localhost got answer: op****ne -> [2****:] 8.145695ms
2024/01/23 09:32:36 localhost got answer: op****ne -> [2****:] 8.666608ms
2024/01/23 09:32:37 [Info] [512045520] proxy: XtlsPadding 16 58 0
2024/01/23 09:32:37 [Info] [512045520] proxy: XtlsPadding 32 165 0
2024/01/23 09:32:37 [Info] [512045520] proxy: XtlsPadding 16 2 0
2024/01/23 09:32:37 [Info] [512045520] proxy: XtlsPadding 32 18 0
2024/01/23 09:32:37 [Info] [512045520] proxy: XtlsFilterTls stop filtering28
2024/01/23 09:32:37 [Info] [2573283760] proxy: XtlsPadding 308 724 1
2024/01/23 09:32:42 [Info] [512045520] common/mux: received request for udp:op****ne:9987
2024/01/23 09:32:42 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:42 [Info] app/dns: Localhost got answer: op****ne -> [3****0 2****:]
2024/01/23 09:32:42 [Info] [512045520] app/dispatcher: default route for udp:op****ne:9987
2024/01/23 09:32:42 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:42 localhost got answer: op****ne -> [3****0, 2****:] 6.404354ms
2024/01/23 09:32:42 tcp:[24****e1]:42170 accepted udp:op****ne:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:32:42 [Info] app/dns: Localhost got answer: op****ne -> [2****:]
2024/01/23 09:32:42 [Info] transport/internet: replace destination with udp:[2****:]:9987
2024/01/23 09:32:42 [Debug] transport/internet: dialing to udp:[2****:]:9987
2024/01/23 09:32:42 [Info] [512045520] proxy/freedom: connection opened to udp:op****ne:9987, local endpoint [::]:51019, remote endpoint [2****:]:9987
2024/01/23 09:32:42 localhost got answer: op****ne -> [2****:] 3.132275ms
2024/01/23 09:32:42 [Info] [512045520] proxy: XtlsPadding 16 118 1
2024/01/23 09:32:43 [Info] [512045520] common/mux: received request for udp:op****ne:9987
2024/01/23 09:32:43 [Info] [512045520] common/mux: XUDP new [167 100 208 201 225 88 32 129]
2024/01/23 09:32:43 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:43 [Info] app/dns: Localhost got answer: op****ne -> [3****0 2****:]
2024/01/23 09:32:43 [Info] [512045520] app/dispatcher: default route for udp:op****ne:9987
2024/01/23 09:32:43 [Debug] app/dns: domain op****ne will use DNS in order: [localhost]
2024/01/23 09:32:43 localhost got answer: op****ne -> [3****0, 2****:] 3.34838ms
2024/01/23 09:32:43 tcp:[24****e1]:42170 accepted udp:op****ne:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:32:43 [Info] app/dns: Localhost got answer: op****ne -> [2****:]
2024/01/23 09:32:43 [Info] transport/internet: replace destination with udp:[2****:]:9987
2024/01/23 09:32:43 [Debug] transport/internet: dialing to udp:[2****:]:9987
2024/01/23 09:32:43 [Info] [512045520] proxy/freedom: connection opened to udp:op****ne:9987, local endpoint [::]:63431, remote endpoint [2****:]:9987
2024/01/23 09:32:43 localhost got answer: op****ne -> [2****:] 6.542557ms
2024/01/23 09:32:58 [Info] [512045520] common/mux: received request for udp:voice.teamspeak.com:9987
2024/01/23 09:32:58 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:32:58 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:32:58 [Info] [512045520] app/dispatcher: default route for udp:voice.teamspeak.com:9987
2024/01/23 09:32:58 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:32:58 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 6.392048ms
2024/01/23 09:32:58 tcp:[24****e1]:42170 accepted udp:voice.teamspeak.com:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:32:58 [Info] app/dns: failed to lookup ip for domain voice.teamspeak.com at server localhost > empty response
2024/01/23 09:32:58 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:32:58 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:32:58 [Info] transport/internet: replace destination with udp:34.79.91.213:9987
2024/01/23 09:32:58 [Debug] transport/internet: dialing to udp:34.79.91.213:9987
2024/01/23 09:32:58 [Info] [512045520] proxy/freedom: connection opened to udp:voice.teamspeak.com:9987, local endpoint [::]:56983, remote endpoint 34.79.91.213:9987
2024/01/23 09:32:58 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 21.776503ms
2024/01/23 09:32:58 [Info] [512045520] common/mux: received request for udp:voice.teamspeak.com:9987
2024/01/23 09:32:58 [Info] [512045520] common/mux: XUDP new [236 132 87 67 187 89 233 22]
2024/01/23 09:32:58 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:32:58 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:32:58 [Info] [512045520] app/dispatcher: default route for udp:voice.teamspeak.com:9987
2024/01/23 09:32:58 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:32:58 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 23.289437ms
2024/01/23 09:32:58 tcp:[24****e1]:42170 accepted udp:voice.teamspeak.com:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:32:58 [Info] app/dns: failed to lookup ip for domain voice.teamspeak.com at server localhost > empty response
2024/01/23 09:32:58 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:32:58 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:32:58 [Info] transport/internet: replace destination with udp:34.79.91.213:9987
2024/01/23 09:32:58 [Debug] transport/internet: dialing to udp:34.79.91.213:9987
2024/01/23 09:32:58 [Info] [512045520] proxy/freedom: connection opened to udp:voice.teamspeak.com:9987, local endpoint [::]:54671, remote endpoint 34.79.91.213:9987
2024/01/23 09:32:58 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 5.494227ms
2024/01/23 09:33:04 [Info] [512045520] common/mux: received request for udp:voice.teamspeak.com:9987
2024/01/23 09:33:04 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:33:04 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:33:04 [Info] [512045520] app/dispatcher: default route for udp:voice.teamspeak.com:9987
2024/01/23 09:33:04 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:33:04 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 6.623254ms
2024/01/23 09:33:04 tcp:[24****e1]:42170 accepted udp:voice.teamspeak.com:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:33:04 [Info] app/dns: failed to lookup ip for domain voice.teamspeak.com at server localhost > empty response
2024/01/23 09:33:04 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:33:04 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:33:04 [Info] transport/internet: replace destination with udp:34.79.91.213:9987
2024/01/23 09:33:04 [Debug] transport/internet: dialing to udp:34.79.91.213:9987
2024/01/23 09:33:04 [Info] [512045520] proxy/freedom: connection opened to udp:voice.teamspeak.com:9987, local endpoint [::]:59062, remote endpoint 34.79.91.213:9987
2024/01/23 09:33:04 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 4.014493ms
2024/01/23 09:33:04 [Info] [512045520] common/mux: received request for udp:voice.teamspeak.com:9987
2024/01/23 09:33:04 [Info] [512045520] common/mux: XUDP new [201 19 110 127 8 88 247 139]
2024/01/23 09:33:04 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:33:04 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:33:04 [Info] [512045520] app/dispatcher: default route for udp:voice.teamspeak.com:9987
2024/01/23 09:33:04 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:33:04 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 3.143073ms
2024/01/23 09:33:04 tcp:[24****e1]:42170 accepted udp:voice.teamspeak.com:9987 [vless-vision-backend >> direct] email: [email protected]
2024/01/23 09:33:04 [Info] app/dns: failed to lookup ip for domain voice.teamspeak.com at server localhost > empty response
2024/01/23 09:33:04 [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [localhost]
2024/01/23 09:33:04 [Info] app/dns: Localhost got answer: voice.teamspeak.com -> [34.79.91.213]
2024/01/23 09:33:04 [Info] transport/internet: replace destination with udp:34.79.91.213:9987
2024/01/23 09:33:04 [Debug] transport/internet: dialing to udp:34.79.91.213:9987
2024/01/23 09:33:04 [Info] [512045520] proxy/freedom: connection opened to udp:voice.teamspeak.com:9987, local endpoint [::]:56191, remote endpoint 34.79.91.213:9987
2024/01/23 09:33:04 localhost got answer: voice.teamspeak.com -> [34.79.91.213] 3.309477ms
2024/01/23 09:34:35 [Info] [512045520] common/mux: session 1 ends. > io: read/write on closed pipe
2024/01/23 09:34:42 [Info] [512045520] common/mux: session 3 ends. > io: read/write on closed pipe
2024/01/23 09:34:58 [Info] [512045520] common/mux: session 5 ends. > io: read/write on closed pipe
2024/01/23 09:35:04 [Info] [512045520] common/mux: session 7 ends. > io: read/write on closed pipe
2024/01/23 09:35:26 [Info] [512045520] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > context canceled
v2rayNG Log
01-23 09:32:35.770 I/GoLog   ( 5240): [Info] [1514806126] proxy/socks: client UDP connection from udp:127.0.0.1:39640
01-23 09:32:35.770 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 34 bytes
01-23 09:32:35.770 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:[2001:2::18d:35a9:facf]:9987
01-23 09:32:35.770 I/GoLog   ( 5240): [Info] transport/internet/udp: establishing new connection for udp:[2001:2::18d:35a9:facf]:9987
01-23 09:32:35.770 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 191 bytes
01-23 09:32:35.770 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:[2001:2::18d:35a9:facf]:9987
01-23 09:32:35.770 I/GoLog   ( 5240): [Info] [1514806126] app/dispatcher: fake dns got domain: op****ne for ip: [2001:2::18d:35a9:facf]
01-23 09:32:35.770 I/GoLog   ( 5240): [Info] [1514806126] app/dispatcher: sniffed domain: op****ne
01-23 09:32:35.778 I/GoLog   ( 5240): [Debug] app/dns: domain op****ne will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:35.778 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain op****ne at server FakeDNS
01-23 09:32:35.778 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT op****ne -> [34****20]
01-23 09:32:35.779 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: op****ne -> [34****20]
01-23 09:32:35.782 I/GoLog   ( 5240): [Info] [1514806126] app/dispatcher: taking detour [proxy] for [udp:op****ne:9987]
01-23 09:32:35.782 I/GoLog   ( 5240): udp:127.0.0.1:39640 accepted udp:[2001:2::18d:35a9:facf]:9987 [socks -> proxy]
01-23 09:32:35.783 I/GoLog   ( 5240): [Info] transport/internet/tcp: dialing TCP to tcp:in****:189
01-23 09:32:35.788 I/GoLog   ( 5240): [Info] [1514806126] common/mux: dispatching request to udp:op****ne:9987
01-23 09:32:35.789 I/GoLog   ( 5240): Not Using Prepared: tcp,[26****06]:189
01-23 09:32:35.790 I/GoLog   ( 5240): [Debug] app/dns: domain in**** will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:35.790 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain in**** at server FakeDNS
01-23 09:32:35.790 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT in**** -> [26****06]
01-23 09:32:35.790 I/GoLog   ( 5240): [Info] transport/internet: replace destination with tcp:[26****06]:189
01-23 09:32:35.790 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: in**** -> [26****06]
01-23 09:32:36.271 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 34 bytes
01-23 09:32:36.271 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:36.271 I/GoLog   ( 5240): [Info] transport/internet/udp: establishing new connection for udp:op****ne:9987
01-23 09:32:36.271 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 191 bytes
01-23 09:32:36.271 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:36.279 I/GoLog   ( 5240): [Debug] app/dns: domain op****ne will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:36.279 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain op****ne at server FakeDNS
01-23 09:32:36.279 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT op****ne -> [34****20]
01-23 09:32:36.279 I/GoLog   ( 5240): [Info] [1514806126] app/dispatcher: taking detour [proxy] for [udp:op****ne:9987]
01-23 09:32:36.279 I/GoLog   ( 5240): [Info] [1514806126] common/mux: dispatching request to udp:op****ne:9987
01-23 09:32:36.279 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: op****ne -> [34****20]
01-23 09:32:36.279 I/GoLog   ( 5240): udp:127.0.0.1:39640 accepted udp:[2001:2::18d:35a9:facf]:9987 [socks -> proxy]
01-23 09:32:36.430 I/GoLog   ( 5240): [Info] proxy/vless/outbound: tunneling request to tcp:v1.mux.cool:9527 via in****:189
01-23 09:32:36.430 I/GoLog   ( 5240): [Info] proxy: XtlsFilterTls stop filtering632
01-23 09:32:36.430 I/GoLog   ( 5240): [Info] proxy: XtlsFilterTls stop filtering632
01-23 09:32:36.430 I/GoLog   ( 5240): [Info] proxy: XtlsPadding 35 147 1
01-23 09:32:36.972 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 34 bytes
01-23 09:32:36.972 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:36.972 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 191 bytes
01-23 09:32:36.972 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:37.220 I/GoLog   ( 5240): [Info] proxy: Xtls Unpadding new block, content 16 padding 58 command 0
01-23 09:32:37.220 I/GoLog   ( 5240): [Info] proxy: Xtls Unpadding new block, content 32 padding 165 command 0
01-23 09:32:37.220 I/GoLog   ( 5240): [Info] proxy: Xtls Unpadding new block, content 16 padding 2 command 0
01-23 09:32:37.220 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: writing back UDP response with 32 bytes
01-23 09:32:37.221 I/GoLog   ( 5240): [Info] proxy: Xtls Unpadding new block, content 32 padding 18 command 0
01-23 09:32:37.221 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: writing back UDP response with 32 bytes
01-23 09:32:37.229 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 38 bytes
01-23 09:32:37.229 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:37.229 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 38 bytes
01-23 09:32:37.229 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:37.762 I/GoLog   ( 5240): [Info] [1470490157] proxy: Xtls Unpadding new block, content 308 padding 724 command 1
01-23 09:32:37.774 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 38 bytes
01-23 09:32:37.774 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:38.262 I/GoLog   ( 5240): [Info] [3478486509] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:32:38.476 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 38 bytes
01-23 09:32:38.476 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:38.759 I/GoLog   ( 5240): [Info] [62789093] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:32:39.477 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 38 bytes
01-23 09:32:39.477 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:40.264 I/GoLog   ( 5240): [Info] [2383703346] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:32:40.760 I/GoLog   ( 5240): [Info] [1478239142] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:32:40.781 I/GoLog   ( 5240): [Debug] [1514806126] proxy/socks: send packet to udp:[2001:2::18d:35a9:facf]:9987 with 38 bytes
01-23 09:32:40.782 I/GoLog   ( 5240): [Debug] [1514806126] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:42.292 I/GoLog   ( 5240): [Info] [2042871154] proxy/socks: client UDP connection from udp:127.0.0.1:49244
01-23 09:32:42.292 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 34 bytes
01-23 09:32:42.292 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:198.18.4.148:9987
01-23 09:32:42.292 I/GoLog   ( 5240): [Info] transport/internet/udp: establishing new connection for udp:198.18.4.148:9987
01-23 09:32:42.292 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 182 bytes
01-23 09:32:42.292 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:198.18.4.148:9987
01-23 09:32:42.292 I/GoLog   ( 5240): [Info] [2042871154] app/dispatcher: fake dns got domain: op****ne for ip: 198.18.4.148
01-23 09:32:42.292 I/GoLog   ( 5240): [Info] [2042871154] app/dispatcher: sniffed domain: op****ne
01-23 09:32:42.317 I/GoLog   ( 5240): [Debug] app/dns: domain op****ne will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:42.317 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain op****ne at server FakeDNS
01-23 09:32:42.317 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT op****ne -> [34****20]
01-23 09:32:42.317 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: op****ne -> [34****20]
01-23 09:32:42.321 I/GoLog   ( 5240): [Info] [2042871154] app/dispatcher: taking detour [proxy] for [udp:op****ne:9987]
01-23 09:32:42.321 I/GoLog   ( 5240): udp:127.0.0.1:49244 accepted udp:198.18.4.148:9987 [socks -> proxy]
01-23 09:32:42.322 I/GoLog   ( 5240): [Info] [2042871154] common/mux: dispatching request to udp:op****ne:9987
01-23 09:32:42.886 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 34 bytes
01-23 09:32:42.886 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:42.886 I/GoLog   ( 5240): [Info] transport/internet/udp: establishing new connection for udp:op****ne:9987
01-23 09:32:42.886 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 182 bytes
01-23 09:32:42.886 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:42.893 I/GoLog   ( 5240): [Debug] app/dns: domain op****ne will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:42.893 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: op****ne -> [34****20]
01-23 09:32:42.893 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain op****ne at server FakeDNS
01-23 09:32:42.893 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT op****ne -> [34****20]
01-23 09:32:42.895 I/GoLog   ( 5240): [Info] [2042871154] app/dispatcher: taking detour [proxy] for [udp:op****ne:9987]
01-23 09:32:42.895 I/GoLog   ( 5240): [Info] [2042871154] common/mux: dispatching request to udp:op****ne:9987
01-23 09:32:42.895 I/GoLog   ( 5240): udp:127.0.0.1:49244 accepted udp:198.18.4.148:9987 [socks -> proxy]
01-23 09:32:42.900 I/GoLog   ( 5240): [Info] proxy: Xtls Unpadding new block, content 16 padding 118 command 1
01-23 09:32:42.907 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: writing back UDP response with 32 bytes
01-23 09:32:42.909 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 38 bytes
01-23 09:32:42.909 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:42.949 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cleanup graph.fbpigeon.com.
01-23 09:32:43.427 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: writing back UDP response with 32 bytes
01-23 09:32:43.428 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 38 bytes
01-23 09:32:43.428 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:43.992 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 38 bytes
01-23 09:32:43.992 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:44.694 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 38 bytes
01-23 09:32:44.694 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:45.696 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 38 bytes
01-23 09:32:45.696 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:46.998 I/GoLog   ( 5240): [Debug] [2042871154] proxy/socks: send packet to udp:198.18.4.148:9987 with 38 bytes
01-23 09:32:46.998 I/GoLog   ( 5240): [Debug] [2042871154] transport/internet/udp: dispatch request to: udp:op****ne:9987
01-23 09:32:51.199 I/GoLog   ( 5240): Not Using Prepared: udp,[2001:4860:4860::8844]:53
01-23 09:32:51.200 I/GoLog   ( 5240): [Debug] [2762984436] proxy/dokodemo: processing connection from: 127.0.0.1:40865
01-23 09:32:51.200 I/GoLog   ( 5240): [Info] [2762984436] proxy/dokodemo: received request for 127.0.0.1:40865
01-23 09:32:51.200 I/GoLog   ( 5240): [Info] [2762984436] app/dispatcher: taking detour [dns-out] for [udp:8.8.8.8:53]
01-23 09:32:51.200 I/GoLog   ( 5240): [Info] [2762984436] proxy/dns: handling DNS traffic to udp:[2001:4860:4860::8844]:53
01-23 09:32:51.200 I/GoLog   ( 5240): 127.0.0.1:40865 accepted udp:8.8.8.8:53 [dns-in -> dns-out]
01-23 09:32:51.204 I/GoLog   ( 5240): [Debug] app/dns: domain teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:51.204 I/GoLog   ( 5240): [Info] app/dns: FakeDNS got answer: teamspeak.com -> [[2001:2::18d:35aa:5283]]
01-23 09:32:51.204 I/GoLog   ( 5240): [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:51.204 I/GoLog   ( 5240): [Info] app/dns: FakeDNS got answer: voice.teamspeak.com -> [[2001:2::18d:35aa:5284]]
01-23 09:32:51.205 I/GoLog   ( 5240): [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:51.205 I/GoLog   ( 5240): [Info] app/dns: FakeDNS got answer: voice.teamspeak.com -> [[2001:2::18d:35aa:5284]]
01-23 09:32:56.472 I/GoLog   ( 5240): [Debug] app/dns: domain teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:56.472 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain teamspeak.com at server FakeDNS
01-23 09:32:56.472 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT teamspeak.com -> [104.18.4.167 104.18.5.167]
01-23 09:32:56.472 I/GoLog   ( 5240): [Info] transport/internet: replace destination with tcp:104.18.5.167:41144
01-23 09:32:56.472 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: teamspeak.com -> [104.18.4.167, 104.18.5.167]
01-23 09:32:58.258 I/GoLog   ( 5240): [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:58.258 I/GoLog   ( 5240): [Info] app/dns: FakeDNS got answer: voice.teamspeak.com -> [[2001:2::18d:35aa:5284]]
01-23 09:32:58.269 I/GoLog   ( 5240): [Info] [3370831318] proxy/socks: client UDP connection from udp:127.0.0.1:49202
01-23 09:32:58.269 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 34 bytes
01-23 09:32:58.269 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:[2001:2::18d:35aa:5284]:9987
01-23 09:32:58.269 I/GoLog   ( 5240): [Info] transport/internet/udp: establishing new connection for udp:[2001:2::18d:35aa:5284]:9987
01-23 09:32:58.269 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 191 bytes
01-23 09:32:58.269 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:[2001:2::18d:35aa:5284]:9987
01-23 09:32:58.269 I/GoLog   ( 5240): [Info] [3370831318] app/dispatcher: fake dns got domain: voice.teamspeak.com for ip: [2001:2::18d:35aa:5284]
01-23 09:32:58.269 I/GoLog   ( 5240): [Info] [3370831318] app/dispatcher: sniffed domain: voice.teamspeak.com
01-23 09:32:58.275 I/GoLog   ( 5240): [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:58.275 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain voice.teamspeak.com at server FakeDNS
01-23 09:32:58.275 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT voice.teamspeak.com -> [34.79.91.213]
01-23 09:32:58.275 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: voice.teamspeak.com -> [34.79.91.213]
01-23 09:32:58.276 I/GoLog   ( 5240): [Info] [3370831318] app/dispatcher: taking detour [proxy] for [udp:voice.teamspeak.com:9987]
01-23 09:32:58.276 I/GoLog   ( 5240): udp:127.0.0.1:49202 accepted udp:[2001:2::18d:35aa:5284]:9987 [socks -> proxy]
01-23 09:32:58.276 I/GoLog   ( 5240): [Info] [3370831318] common/mux: dispatching request to udp:voice.teamspeak.com:9987
01-23 09:32:58.705 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: writing back UDP response with 32 bytes
01-23 09:32:58.708 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 38 bytes
01-23 09:32:58.708 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:voice.teamspeak.com:9987
01-23 09:32:58.708 I/GoLog   ( 5240): [Info] transport/internet/udp: establishing new connection for udp:voice.teamspeak.com:9987
01-23 09:32:58.716 I/GoLog   ( 5240): [Debug] app/dns: domain voice.teamspeak.com will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
01-23 09:32:58.716 I/GoLog   ( 5240): [Debug] app/dns: skip DNS resolution for domain voice.teamspeak.com at server FakeDNS
01-23 09:32:58.716 I/GoLog   ( 5240): UDP:DNSPOD.PDNS:53 cache HIT: voice.teamspeak.com -> [34.79.91.213]
01-23 09:32:58.716 I/GoLog   ( 5240): [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT voice.teamspeak.com -> [34.79.91.213]
01-23 09:32:58.717 I/GoLog   ( 5240): [Info] [3370831318] app/dispatcher: taking detour [proxy] for [udp:voice.teamspeak.com:9987]
01-23 09:32:58.717 I/GoLog   ( 5240): udp:127.0.0.1:49202 accepted udp:[2001:2::18d:35aa:5284]:9987 [socks -> proxy]
01-23 09:32:58.717 I/GoLog   ( 5240): [Info] [3370831318] common/mux: dispatching request to udp:voice.teamspeak.com:9987
01-23 09:32:59.150 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: writing back UDP response with 244 bytes
01-23 09:32:59.201 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 492 bytes
01-23 09:32:59.201 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:voice.teamspeak.com:9987
01-23 09:32:59.723 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 492 bytes
01-23 09:32:59.723 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:voice.teamspeak.com:9987
01-23 09:33:00.425 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 492 bytes
01-23 09:33:00.426 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:voice.teamspeak.com:9987
01-23 09:33:00.709 I/GoLog   ( 5240): [Info] [2403684647] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:33:01.427 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 492 bytes
01-23 09:33:01.427 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:voice.teamspeak.com:9987
01-23 09:33:01.458 I/GoLog   ( 5240): [Info] [1306758356] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:33:02.710 I/GoLog   ( 5240): [Info] [1093134173] app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled
01-23 09:33:02.730 I/GoLog   ( 5240): [Debug] [3370831318] proxy/socks: send packet to udp:[2001:2::18d:35aa:5284]:9987 with 492 bytes
01-23 09:33:02.730 I/GoLog   ( 5240): [Debug] [3370831318] transport/internet/udp: dispatch request to: udp:voice.teamspeak.com:9987

尝试在 Windows 下复现这个问题,但是目前 Xray 尚未集成 TUN,额外使用其它组件会因为其它原因难以复现成功。 (目前来说最稳定复现的目前为手机上使用 v2rayNG 并启用 FakeDNS)

关于客户端 fake DNS 的 UDP 问题,请测试最新的 commit 的修改。

替换客户端和服务端仍然没有解决。客户端使用 FakeDNS 时直连不受影响。

如果你认为在代理 UDP 时传送域名目标地址到服务器会引起问题,想要总是发送 IP 目标地址到服务器的话,建议实现 outbound 的 domainStrategy

这个应该也算一个解决办法。当然如果服务端也有 UDP 域名对 IP 映射转换这个似乎也不是问题(似乎也能根据服务器的情况灵活调整)。

fake DNS 对于依赖正确 IP 地址的使用场景(以及 STUN 之类)无能为力。

如果客户端下接的应用对 IP 要求很高(比如需要验证正确的对端地址)的确有问题。不过下接的应用如果不严格验证 IP 的话(只需保持使用时一致即可) FakeDNS 依然是个不错的解决办法,考虑到 sniffer 并不能完全识别所有协议的情况。

https://sekai.icu/posts/udp-fqdn-in-transport-proxy/ (该文章中对于 xray 的描述已过时)

似乎现在将 UDP 的目标域名直接传了上去(见日志)。

KobeArthurScofield avatar Jan 23 '24 11:01 KobeArthurScofield

已经找到借用 sing-box 进行 TUN 接管和 DNS 查询的方法。不过这个方法需要进行全局代理,因此最后的日志会很杂。此处放出相关配置。

为了避免 Xray 自己的 FakeDNS 转换对结果发生干扰,此处使用 sing-box 作为 FakeDNS 源,由 sing-box 将域名传送给 Xray。 (不知道为什么 sing-box 也是传输域名而非 IP,歪打正着保留了域名反而方便测试。如果 sing-box 做完全的 TUN 而将 Xray 作为 FakeDNS 源、 DNS 查询和分流结果也许可能一样。)

考虑到跨版本支持的问题,送往代理的出口使用 Shadowsocks TCP+ UDP。 服务端为 Xray-core 1.8.7。

目前从 release 中下载部分版本测试(Windows x64),确认 UDP 可通的版本区间为 1.5.5 - 1.8.3,这些版本的共同特点是在将流量送往服务器前会预先解析 UDP 流量对应的域名(日志可见),尽管在日志中看起来是发送的域名,实际上应该发送了 IP 或者预先做了其它映射来方便转换。 使用的 sing-box 版本为 1.8.2,sing-box 到 Xray 的流量使用 VLESS + XUDP 传输。

sing-box test config
{
    "log": {
        "disabled": false,
        "level": "trace",
        "timestamp": true
    },
    "dns": {
        "servers": [
            {
                "tag": "dnspod",
                "address": "udp://119.28.28.28",
                "detour": "dns-d-out"
            },
            {
                "tag": "local_server",
                "address": "dhcp://auto",
                "detour": "dns-d-out"
            },
            {
                "tag": "system_server",
                "address": "local",
                "detour": "dns-d-out"
            },
            {
                "tag": "fakedns",
                "address": "fakeip"
            },
            {
                "tag": "rsucc",
                "address": "rcode://success"
            },
            {
                "tag": "rne",
                "address": "rcode://name_error"
            }
        ],
        "rules": [
            {
                "type": "logical",
                "mode": "and",
                "rules": [
                    {
                        "query_type": [
                            "A",
                            "AAAA"
                        ],
                        "invert": false
                    },
                    {
                        "process_name":[
                            "xray.exe",
                            "wxray.exe",
                            "xray-test.exe"
                        ],
                        "invert":true
                    }
                ],
                "server": "fakedns"
            },
            {
                "geosite": [
                    "private"
                ],
                "server": "local_server"
            },
            {
                "geosite": [
                    "private"
                ],
                "server": "system_server"
            },
            {
                "type": "logical",
                "mode": "or",
                "rules": [
                    {
                        "geosite": [
                            "private"
                        ],
                        "invert": true
                    }
                ],
                "server": "dnspod-tls"
            },
            {
                "type": "logical",
                "mode": "or",
                "rules": [
                    {
                        "geosite": [
                            "private"
                        ],
                        "invert": true
                    }
                ],
                "server": "dnspod"
            }
        ],
        "final": "local_server",
        "disable_cache": false,
        "disable_expire": false,
        "independent_cache": true,
        "reverse_mapping": false,
        "fakeip": {
            "enabled": true,
            "inet4_range": "198.18.0.0/15",
            "inet6_range": "2001:2::/48"
        }
    },
    "inbounds": [
        {
            "type": "tun",
            "tag": "tun-in",
            "interface_name": "sing-box tun",
            "inet4_address": "10.255.255.129/30",
            "inet6_address": "fdfe:fedc:ba98:7654::ff01/126",
            "mtu": 1492,
            "inet4_route_address": [
                "0.0.0.0/0"
            ],
            "inet6_route_address": [
                "::/0"
            ],
            "inet4_route_exclude_address": [
                "0.0.0.0/8",
                "100.64.0.0/10",
                "127.0.0.0/8",
                "169.254.0.0/16",
                "192.0.0.0/24",
                "10.0.0.0/8",
                "172.16.0.0/12",
                "192.168.0.0/16",
                "224.0.0.0/4",
                "240.0.0.0/4",
                "255.255.255.255/32"
            ],
            "inet6_route_exclude_address": [
                "::/128",
                "::1/128",
                "100::/64",
                "fc00::/7",
                "fe80::/10",
                "ff00::/8"
            ],
            "auto_route": true,
            "strict_route": false,
            "udp_timeout": "10m",
            "stack": "gvisor",
            "endpoint_independent_nat": true,
            "sniff": true
        }
    ],
    "outbounds": [
        {
            "type": "direct",
            "tag": "direct-out",
            "tcp_fast_open": true,
            "tcp_multi_path": true,
            "udp_fragment": false,
            "reuse_addr": true,
            "domain_strategy": "prefer_ipv4"
        },
        {
            "type": "direct",
            "tag": "dns-d-out",
            "tcp_fast_open": true,
            "tcp_multi_path": true,
            "udp_fragment": false,
            "reuse_addr": true,
            "domain_strategy": "prefer_ipv4"
        },
        {
            "type": "block",
            "tag": "block-out"
        },
        {
            "type": "vless",
            "tag": "raw-out",
            "server": "127.0.0.1",
            "server_port": 11080,
            "uuid": "3884e16f-fd9d-5952-864a-2a88913f3060",
            "packet_encoding": "xudp",
            "tcp_fast_open": false,
            "tcp_multi_path": false,
            "udp_fragment": false,
            "reuse_addr": true,
            "domain_strategy": "prefer_ipv4"
        },
        {
            "type": "dns",
            "tag": "dns-out"
        }
    ],
    "route": {
        "auto_detect_interface": true,
        "rules": [
            {
                "type":"logical",
                "mode":"and",
                "rules":[
                    {
                        "protocol": "dns"
                    }
                ],
                "outbound": "dns-out"
            },
            {
                "type":"logical",
                "mode":"and",
                "rules":[
                    {
                        "process_name":[
                            "wxray.exe",
                            "xray.exe",
                            "sing-box.exe"
                        ]
                    }
                ],
                "outbound": "direct-out"
            },
            {
                "type":"logical",
                "mode":"and",
                "rules":[
                    {
                        "protocol": "dns",
                        "invert":true
                    },
                    {
                        "process_name":[
                            "wxray.exe",
                            "xray.exe",
                            "sing-box.exe",
                            "xray-test.exe"
                        ],
                        "invert":true
                    }
                ],
                "outbound": "raw-out"
            }
        ],
        "geoip": {
            "path": "geoip.db",
            "download_url": "https://github.com/lyc8503/sing-box-rules/releases/latest/download/geoip.db",
            "download_detour": "proxy-out"
        },
        "geosite": {
            "path": "geosite.db",
            "download_url": "https://github.com/lyc8503/sing-box-rules/releases/latest/download/geosite.db",
            "download_detour": "proxy-out"
        },
        "final": "direct-out"
    }
}
Xray test config
{
    "log": {
        "access": "",
        "error": "",
        "loglevel": "debug",
        "dnsLog": true
    },
    "dns": {
        "disableCache": false,
        "disableFallback": false,
        "disableFallbackIfMatch": true,
        "queryStrategy": "UseIPv4",
        "hosts": {
            "dnspod.pdns": "119.29.29.29"
        },
        "servers": [
            {
                "address": "dnspod.pdns",
                "skipFallback": false
            },
            {
                "address": "localhost",
                "domains": [
                    "geosite:private"
                ],
                "skipFallback": true
            }
        ],
        "tag": "dns-server"
    },
    "inbounds": [
        {
            "listen": "::",
            "port": 11080,
            "protocol": "vless",
            "settings": {
                "clients": [
                  {
                    "id": "3884e16f-fd9d-5952-864a-2a88913f3060",
                    "level": 0,
                    "email": "[email protected]",
                    "flow": ""
                  }
                ],
                "decryption": "none"
              },
            "sniffing": {
                "enabled": true,
                "metadataOnly": true
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": -1,
                    "tcpKeepAliveInterval": -1,
                    "tcpNoDelay": true
                }
            },
            "tag": "Socks"
        }
    ],
    "outbounds": [
        {
            "protocol": "shadowsocks",
            "settings": {
                "servers": [
                    {
                      "address": "<server>",
                      "port": <server>,
                      "method": "<server>",
                      "password": "<server>",
                      "uot": false,
                      "level": 0
                    }
                ]
            },
            "streamSettings": {
                "network": "ws",
                "wsSettings":{
                    "path": "<path>",
                    "headers":{
                        "Host": "<hostname>"
                    }
                },
                "sockopt": {
                    "domainStrategy": "UseIPv4",
                    "tcpKeepAliveInterval": 75,
                    "tcpKeepAliveIdle": 300,
                    "tcpNoDelay": true,
                    "tcpMptcp": true
                }
            },
            "tag": "proxy"
        },
        {
            "protocol": "freedom",
            "settings": {
                "userLevel": 11
            },
            "streamSettings": {
                "sockopt": {
                    "domainStrategy": "UseIPv4",
                    "tcpKeepAliveInterval": 75,
                    "tcpKeepAliveIdle": 300,
                    "tcpNoDelay": true,
                    "tcpMptcp": true
                }
            },
            "tag": "FreeExit"
        },
        {
            "protocol": "blackhole",
            "settings": {
                "response": {
                    "type": "none"
                }
            },
            "tag": "Blocker"
        },
        {
            "protocol": "freedom",
            "settings": {
                "userLevel": 12
            },
            "streamSettings": {
                "sockopt": {
                    "domainStrategy": "UseIPv4",
                    "tcpKeepAliveInterval": 75,
                    "tcpKeepAliveIdle": 300,
                    "tcpNoDelay": true,
                    "tcpMptcp": true
                }
            },
            "tag": "DNSQExit"
        }
    ],
    "policy": {
        "levels": {
            "10": {
                "connIdle": 1800,
                "downlinkOnly": 5,
                "handshake": 20,
                "uplinkOnly": 5,
                "bufferSize": 0
            },
            "11": {
                "connIdle": 1800,
                "downlinkOnly": 5,
                "handshake": 20,
                "uplinkOnly": 5,
                "bufferSize": 128
            },
            "12": {
                "connIdle": 180,
                "downlinkOnly": 1,
                "handshake": 5,
                "uplinkOnly": 1,
                "bufferSize": 0
            }
        }
    },
    "routing": {
        "domainStrategy": "IPIfNonMatch",
        "domainMatcher": "hybrid",
        "rules": [
            {
                "outboundTag": "proxy",
                "inboundTag": [
                    "dns-server"
                ],
                "domain": [
                    "full:dns.google"
                ],
                "type": "field"
            },
            {
                "outboundTag": "DNSQExit",
                "inboundTag": [
                    "dns-server"
                ],
                "type": "field"
            }
        ]
    }
}

KobeArthurScofield avatar Jan 23 '24 17:01 KobeArthurScofield

看了下版本变化的记录里面似乎和 #1011 以及 #2356 有关,应该是想实现一个更好的 UDP sniff 处理逻辑但是漏了一些地方没处理。

  • 如果你认为在代理 UDP 时传送域名目标地址到服务器会引起问题,想要总是发送 IP 目标地址到服务器的话,建议实现 outbound 的 domainStrategy

其实如果客户端的应用程序不太看重 IP 地址是否在指定的目标内而是只要使用时保持地址恒定(FakeDNS 不敏感)的话,传输域名目标地址到服务器处理似乎是更好的做法,这样的话解析策略交由服务端 ~防止出现比如客户端解析了 IPv6 地址交给了单纯的 IPv4 服务器上的服务端的尴尬行为~ 。

~问题推测:可能是服务端收到来自 inbound 的域名发往 Freedom outbound 或者 SOCKS (SOCKS5) outbound 后,回包还原时出现了问题,没有正确地将来自同一个 IP (或者及端口)返回的数据包的地址还原成域名发回给客户端,或者只还原了第一个数据包而忽略了其后的数据包(UDP 还原的时候应该以包为单位而不是流)。~

做了个新的测试,将 https://github.com/XTLS/Xray-core/issues/2962#issuecomment-1906593113 中 Xray-core 的出口设置为直连优先(相当于全部直连),这个时候本来不通的版本反而通了,~模拟服务器测试的结果否定猜测~。

想试试模拟客户端带 FakeDNS(全部代理)的结果,但是似乎总有问题导致所有版本都不通(甚至前面出发前会查询 UDP 域名的 DNS 的版本也不会查询了)(双端使用最新的 action 版本也有这个问题),还求指点。

sing-box as TUN
{
    "log": {
        "disabled": false,
        "level": "trace",
        "timestamp": true
    },
    "dns": {
        "servers": [
            {
                "tag": "dnspod",
                "address": "udp://119.28.28.28",
                "detour": "dns-d-out"
            },
            {
                "tag": "test-server",
                "address": "udp://127.0.0.1:10853",
                "detour":"dns-d-out"
            },
            {
                "tag": "local_server",
                "address": "dhcp://auto",
                "detour": "dns-d-out"
            },
            {
                "tag": "system_server",
                "address": "local",
                "detour": "dns-d-out"
            },
            {
                "tag": "rsucc",
                "address": "rcode://success"
            },
            {
                "tag": "rne",
                "address": "rcode://name_error"
            }
        ],
        "rules": [
            {
                "geosite": [
                    "private"
                ],
                "server": "local_server"
            },
            {
                "type": "logical",
                "mode": "or",
                "rules": [
                    {
                        "geosite": [
                            "private"
                        ],
                        "invert": true
                    }
                ],
                "server": "test-server"
            }
        ],
        "final": "test-server",
        "disable_cache": false,
        "disable_expire": false,
        "independent_cache": true,
        "reverse_mapping": false,
        "fakeip": {
            "enabled": false,
            "inet4_range": "198.18.0.0/15",
            "inet6_range": "2001:2::/48"
        }
    },
    "inbounds": [
        {
            "type": "tun",
            "tag": "tun-in",
            "interface_name": "sing-box tun",
            "inet4_address": "10.255.255.129/30",
            "inet6_address": "fdfe:fedc:ba98:7654::ff01/126",
            "mtu": 1492,
            "inet4_route_address": [
                "0.0.0.0/0"
            ],
            "inet6_route_address": [
                "::/0"
            ],
            "inet4_route_exclude_address": [
                "0.0.0.0/8",
                "100.64.0.0/10",
                "127.0.0.0/8",
                "169.254.0.0/16",
                "192.0.0.0/24",
                "10.0.0.0/8",
                "172.16.0.0/12",
                "192.168.0.0/16",
                "224.0.0.0/4",
                "240.0.0.0/4",
                "255.255.255.255/32"
            ],
            "inet6_route_exclude_address": [
                "::/128",
                "::1/128",
                "100::/64",
                "fc00::/7",
                "fe80::/10",
                "ff00::/8"
            ],
            "auto_route": true,
            "strict_route": false,
            "udp_timeout": "10m",
            "stack": "gvisor",
            "endpoint_independent_nat": true,
            "sniff": false
        }
    ],
    "outbounds": [
        {
            "type": "direct",
            "tag": "direct-out",
            "tcp_fast_open": true,
            "tcp_multi_path": true,
            "udp_fragment": false,
            "reuse_addr": true,
            "domain_strategy": "prefer_ipv4"
        },
        {
            "type": "direct",
            "tag": "dns-d-out",
            "tcp_fast_open": true,
            "tcp_multi_path": true,
            "udp_fragment": false,
            "reuse_addr": true,
            "domain_strategy": "prefer_ipv4"
        },
        {
            "type": "block",
            "tag": "block-out"
        },
        {
            "type": "socks",
            "tag": "raw-out",
            "server": "127.0.0.1",
            "server_port": 11080,
            "tcp_fast_open": false,
            "tcp_multi_path": false,
            "udp_fragment": false,
            "reuse_addr": true,
            "domain_strategy": "prefer_ipv4"
        },
        {
            "type": "dns",
            "tag": "dns-out"
        }
    ],
    "route": {
        "auto_detect_interface": true,
        "rules": [
            {
                "type":"logical",
                "mode":"and",
                "rules":[
                    {
                        "process_name":[
                            "wxray.exe",
                            "xray.exe",
                            "sing-box.exe",
                            "xray-test.exe"
                        ]
                    }
                ],
                "outbound": "direct-out"
            },
            {
                "type":"logical",
                "mode":"and",
                "rules":[
                    {
                        "port": [53]
                    },
                    {
                        "process_name":[
                            "wxray.exe",
                            "xray.exe",
                            "sing-box.exe",
                            "xray-test.exe"
                        ],
                        "invert":true
                    }
                ],
                "outbound": "dns-out"
            },
            {
                "type":"logical",
                "mode":"and",
                "rules":[
                    {
                        "port": [53],
                        "invert":true
                    },
                    {
                        "process_name":[
                            "wxray.exe",
                            "xray.exe",
                            "sing-box.exe",
                            "xray-test.exe"
                        ],
                        "invert":true
                    }
                ],
                "outbound": "raw-out"
            }
        ],
        "geoip": {
            "path": "geoip.db",
            "download_url": "https://github.com/lyc8503/sing-box-rules/releases/latest/download/geoip.db",
            "download_detour": "proxy-out"
        },
        "geosite": {
            "path": "geosite.db",
            "download_url": "https://github.com/lyc8503/sing-box-rules/releases/latest/download/geosite.db",
            "download_detour": "proxy-out"
        },
        "final": "direct-out"
    }
}
Xray-core FakeDNS and send to server config
{
    "log": {
        "access": "",
        "error": "",
        "loglevel": "debug",
        "dnsLog": true
    },
    "dns": {
        "disableCache": false,
        "disableFallback": false,
        "disableFallbackIfMatch": true,
        "queryStrategy": "UseIPv4",
        "hosts": {
            "dnspod.pdns": "119.29.29.29",
            "dns.google": "8.8.8.8"
        },
        "servers": [
            {
                "address":"fakedns"
            },
            {
                "address": "dnspod.pdns",
                "skipFallback": false
            },
            {
                "address": "localhost",
                "domains": [
                    "geosite:private"
                ],
                "skipFallback": true
            }
        ],
        "tag": "dns-server"
    },
    "inbounds": [
        {
            "listen": "::",
            "port": 11080,
            "protocol": "socks",
            "settings": {
                "ip":"::",
                "udp":true
              },
            "sniffing": {
                "enabled": true,
                "metadataOnly": true,
                "destOverride":[
                    "fakedns"
                ]
            },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": -1,
                    "tcpKeepAliveInterval": -1,
                    "tcpNoDelay": true
                }
            },
            "tag": "Socks"
        },
        {
            "listen": "::",
            "port": 10853,
            "protocol": "dokodemo-door",
            "settings": {
                "address":"127.0.0.1",
                "port":53,
                "network":"tcp,udp"
              },
            "streamSettings": {
                "sockopt": {
                    "tcpKeepAliveIdle": -1,
                    "tcpKeepAliveInterval": -1,
                    "tcpNoDelay": true
                }
            },
            "tag": "dns-in"
        }
    ],
    "outbounds": [
        {
            "protocol": "shadowsocks",
            "settings": {
                "servers": [
                    {
                      "address": "<server>",
                      "port":<server>,
                      "method": "<server>",
                      "password": "<server>",
                      "uot": false,
                      "level": 0
                    }
                ]
            },
            "streamSettings": {
                "network": "ws",
                "wsSettings":{
                    "path": "<path>",
                    "headers":{
                        "Host": "<host>"
                    }
                },
                "sockopt": {
                    "domainStrategy": "UseIPv4",
                    "tcpKeepAliveInterval": 75,
                    "tcpKeepAliveIdle": 300,
                    "tcpNoDelay": true,
                    "tcpMptcp": true
                }
            },
            "tag": "proxy"
        },
        {
            "protocol": "freedom",
            "settings": {
                "userLevel": 11
            },
            "streamSettings": {
                "sockopt": {
                    "domainStrategy": "UseIPv4",
                    "tcpKeepAliveInterval": 75,
                    "tcpKeepAliveIdle": 300,
                    "tcpNoDelay": true,
                    "tcpMptcp": true
                }
            },
            "tag": "FreeExit"
        },
        {
            "protocol": "blackhole",
            "settings": {
                "response": {
                    "type": "none"
                }
            },
            "tag": "Blocker"
        },
        {
            "protocol": "freedom",
            "settings": {
                "userLevel": 12
            },
            "streamSettings": {
                "sockopt": {
                    "domainStrategy": "UseIPv4",
                    "tcpKeepAliveInterval": 75,
                    "tcpKeepAliveIdle": 300,
                    "tcpNoDelay": true,
                    "tcpMptcp": true
                }
            },
            "tag": "DNSQExit"
        },
        {
            "protocol":"dns",
            "settings":{
                "address":"119.28.28.28",
                "port":53
            },
            "tag":"to-dns-server"
        }
    ],
    "policy": {
        "levels": {
            "10": {
                "connIdle": 1800,
                "downlinkOnly": 5,
                "handshake": 20,
                "uplinkOnly": 5,
                "bufferSize": 0
            },
            "11": {
                "connIdle": 1800,
                "downlinkOnly": 5,
                "handshake": 20,
                "uplinkOnly": 5,
                "bufferSize": 128
            },
            "12": {
                "connIdle": 180,
                "downlinkOnly": 1,
                "handshake": 5,
                "uplinkOnly": 1,
                "bufferSize": 0
            }
        }
    },
    "routing": {
        "domainStrategy": "IPIfNonMatch",
        "domainMatcher": "hybrid",
        "rules": [
            {
                "inboundTag":"dns-in",
                "outboundTag":"to-dns-server",
                "type":"field"
            },
            {
                "outboundTag": "proxy",
                "inboundTag": [
                    "dns-server"
                ],
                "domain": [
                    "full:dns.google"
                ],
                "type": "field"
            },
            {
                "outboundTag": "DNSQExit",
                "inboundTag": [
                    "dns-server"
                ],
                "type": "field"
            }
        ]
    }
}

但是如果将上面的 Xray 部分的配置改为默认直连的话情况会变成如下(依然不通):

Xray 1.8.7 (Xray, Penetrates Everything.) 53de58f (go1.21.6 windows/amd64)
A unified platform for anti-censorship.
2024/01/23 20:50:54 [Info] infra/conf/serial: Reading config: config\fluorine\tester.json
2024/01/23 20:50:54 [Debug] app/log: Logger started
2024/01/23 20:50:54 [Info] app/dns: DNS: created UDP client initialized for dnspod.pdns:53
2024/01/23 20:50:54 [Info] app/dns: DNS: created localhost client
2024/01/23 20:50:54 [Debug] app/router: MphDomainMatcher is enabled for 1 domain rule(s)
2024/01/23 20:50:54 [Debug] app/proxyman/inbound: creating stream worker on [::]:11080
2024/01/23 20:50:54 [Debug] app/proxyman/inbound: creating stream worker on [::]:10853
2024/01/23 20:50:54 [Info] transport/internet/tcp: listening TCP on [::]:11080
2024/01/23 20:50:54 [Info] transport/internet/udp: listening UDP on [::]:11080
2024/01/23 20:50:54 [Info] transport/internet/tcp: listening TCP on [::]:10853
2024/01/23 20:50:54 [Info] transport/internet/udp: listening UDP on [::]:10853
2024/01/23 20:50:54 [Warning] core: Xray 1.8.7 started
2024/01/23 20:51:14 [Info] [1800326219] proxy/socks: client UDP connection from udp:127.0.0.1:61152
2024/01/23 20:51:14 udp:127.0.0.1:61152 accepted udp:198.19.85.253:9987 [Socks >> FreeExit]
2024/01/23 20:51:14 UDP:DNSPOD.PDNS:53 cache HIT: op****ne -> [3****0]
2024/01/23 20:51:14 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 34 bytes
2024/01/23 20:51:14 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:198.19.85.253:9987
2024/01/23 20:51:14 [Info] transport/internet/udp: establishing new connection for udp:198.19.85.253:9987
2024/01/23 20:51:14 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 187 bytes
2024/01/23 20:51:14 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:198.19.85.253:9987
2024/01/23 20:51:14 [Info] [1800326219] app/dispatcher: fake dns got domain: op****ne for ip: 198.19.85.253
2024/01/23 20:51:14 [Info] [1800326219] app/dispatcher: sniffed domain: op****ne
2024/01/23 20:51:14 [Info] [1800326219] app/dispatcher: default route for udp:op****ne:9987
2024/01/23 20:51:14 [Debug] app/dns: domain op****ne will use DNS in order: [FakeDNS UDP:DNSPOD.PDNS:53]
2024/01/23 20:51:14 [Debug] app/dns: skip DNS resolution for domain op****ne at server FakeDNS
2024/01/23 20:51:14 [Debug] app/dns: UDP:DNSPOD.PDNS:53 cache HIT op****ne -> [3****0]
2024/01/23 20:51:14 [Info] transport/internet: replace destination with udp:3****0:9987
2024/01/23 20:51:14 [Debug] transport/internet: dialing to udp:3****0:9987
2024/01/23 20:51:14 [Info] [1800326219] proxy/freedom: connection opened to udp:op****ne:9987, local endpoint [::]:61153, remote endpoint 3****0:9987
2024/01/23 20:51:15 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 187 bytes
2024/01/23 20:51:15 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:15 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 34 bytes
2024/01/23 20:51:15 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:16 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 34 bytes
2024/01/23 20:51:16 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:16 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 187 bytes
2024/01/23 20:51:16 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:16 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 34 bytes
2024/01/23 20:51:16 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:17 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 187 bytes
2024/01/23 20:51:17 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:18 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 34 bytes
2024/01/23 20:51:18 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:18 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 187 bytes
2024/01/23 20:51:18 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:19 [Debug] [1800326219] proxy/socks: send packet to udp:198.19.85.253:9987 with 34 bytes
2024/01/23 20:51:19 [Debug] [1800326219] transport/internet/udp: dispatch request to: udp:op****ne:9987
2024/01/23 20:51:28 [Debug] app/log: Logger closing
+0800 2024-01-23 20:50:56 ←[36mINFO←[0m router: updated default interface Ethernet, index 15
+0800 2024-01-23 20:50:56 ←[36mINFO←[0m router: loaded geosite database: 1472 codes
+0800 2024-01-23 20:50:56 ←[36mINFO←[0m dns/transport[local_server]: dhcp: query DNS servers on Ethernet
+0800 2024-01-23 20:50:56 ←[36mINFO←[0m dns/transport[local_server]: dhcp: updated DNS servers from Ethernet: [192.168.1.1]
+0800 2024-01-23 20:50:57 ←[37mTRACE←[0m inbound/tun[tun-in]: creating stack
+0800 2024-01-23 20:50:57 ←[36mINFO←[0m inbound/tun[tun-in]: started at sing-box tun
+0800 2024-01-23 20:50:57 ←[36mINFO←[0m sing-box started (0.411s)
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;171m225026459←[0m 0ms] inbound/tun[tun-in]: inbound packet connection from [fdfe:fedc:ba98:7654::ff01]:64375
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;171m225026459←[0m 0ms] inbound/tun[tun-in]: inbound packet connection to [fdfe:fedc:ba98:7654::ff02]:53
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;171m225026459←[0m 1ms] router: found process path: \****\Program Files\TeamSpeak 3 Client\ts3client_win64.exe
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m [←[38;5;171m225026459←[0m 1ms] router: match[2] port=53 && !(process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe]) => dns-out
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchange op****ne. IN A
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchange _ts3._udp.op****ne. IN SRV
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchange _tsdns._tcp.****ne. IN SRV
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchange op****ne. IN A
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchange ****ne. IN A
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchanged op****ne NOERROR 600
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchanged op****ne NOERROR 600
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m dns: exchanged op****ne A op****ne. 600 IN A 198.19.85.253
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m dns: exchanged ****ne NOERROR 600
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m dns: exchanged op****ne A op****ne. 600 IN A 198.19.85.253
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m dns: exchanged op****ne. A op****ne. 600 IN A 198.19.85.253
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m dns: exchanged ****ne A ****ne. 600 IN A 198.19.86.3
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m dns: exchanged op****ne. A op****ne. 600 IN A 198.19.85.253
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m dns: exchanged ****ne. A ****ne. 600 IN A 198.19.86.3
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;228m1399034627←[0m 0ms] inbound/tun[tun-in]: inbound connection from 10.255.255.129:58889
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;228m1399034627←[0m 0ms] inbound/tun[tun-in]: inbound connection to 198.19.85.253:41144
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;48m1684013815←[0m 0ms] inbound/tun[tun-in]: inbound connection from 10.255.255.129:58890
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;228m1399034627←[0m 2ms] router: found process path: \****\Program Files\TeamSpeak 3 Client\ts3client_win64.exe
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;48m1684013815←[0m 2ms] inbound/tun[tun-in]: inbound connection to 198.19.86.3:41144
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m [←[38;5;228m1399034627←[0m 3ms] router: match[3] !(port=53) && !(process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe]) => raw-out
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;228m1399034627←[0m 4ms] outbound/socks[raw-out]: outbound connection to 198.19.85.253:41144
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;48m1684013815←[0m 3ms] router: found process path: \****\Program Files\TeamSpeak 3 Client\ts3client_win64.exe
+0800 2024-01-23 20:51:09 ←[37mDEBUG←[0m [←[38;5;48m1684013815←[0m 4ms] router: match[3] !(port=53) && !(process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe]) => raw-out
+0800 2024-01-23 20:51:09 ←[36mINFO←[0m [←[38;5;48m1684013815←[0m 5ms] outbound/socks[raw-out]: outbound connection to 198.19.86.3:41144
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m dns: exchange ****ne. IN AAAA
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m dns: exchange ****ne. IN A
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m dns: cached ****ne NOERROR 598
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m dns: cached ****ne A ****ne. 598 IN A 198.19.86.3
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m dns: exchanged ****ne. A ****ne. 598 IN A 198.19.86.3
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m dns: exchanged ****ne NOERROR 0
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;191m895433000←[0m 0ms] inbound/tun[tun-in]: inbound connection from 10.255.255.129:58893
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;191m895433000←[0m 2ms] inbound/tun[tun-in]: inbound connection to 198.19.86.3:41144
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;191m895433000←[0m 3ms] router: found process path: \****\Programz\xcore-go\xray-test.exe
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m [←[38;5;191m895433000←[0m 3ms] router: match[1] process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe] => direct-out
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;191m895433000←[0m 4ms] outbound/direct[direct-out]: outbound connection to 198.19.86.3:41144
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;46m325526517←[0m 0ms] inbound/tun[tun-in]: inbound connection from 10.255.255.129:58895
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;46m325526517←[0m 0ms] inbound/tun[tun-in]: inbound connection to 3****0:41144
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;46m325526517←[0m 3ms] router: found process path: \****\Programz\xcore-go\xray-test.exe
+0800 2024-01-23 20:51:10 ←[37mDEBUG←[0m [←[38;5;46m325526517←[0m 5ms] router: match[1] process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe] => direct-out
+0800 2024-01-23 20:51:10 ←[36mINFO←[0m [←[38;5;46m325526517←[0m 7ms] outbound/direct[direct-out]: outbound connection to 3****0:41144
+0800 2024-01-23 20:51:11 ←[36mINFO←[0m [←[38;5;152m1800716424←[0m 0ms] inbound/tun[tun-in]: inbound packet connection from 10.255.255.129:61148
+0800 2024-01-23 20:51:11 ←[36mINFO←[0m [←[38;5;152m1800716424←[0m 0ms] inbound/tun[tun-in]: inbound packet connection to 10.255.255.130:53
+0800 2024-01-23 20:51:11 ←[36mINFO←[0m [←[38;5;152m1800716424←[0m 1ms] router: found process path: \****\Program Files\TeamSpeak 3 Client\ts3client_win64.exe
+0800 2024-01-23 20:51:11 ←[37mDEBUG←[0m [←[38;5;152m1800716424←[0m 1ms] router: match[2] port=53 && !(process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe]) => dns-out
+0800 2024-01-23 20:51:11 ←[37mDEBUG←[0m dns: exchange _ts3._udp.op****ne. IN SRV
+0800 2024-01-23 20:51:11 ←[37mDEBUG←[0m dns: exchange _tsdns._tcp.****ne. IN SRV
+0800 2024-01-23 20:51:11 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:11 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;35m688993258←[0m 0ms] inbound/tun[tun-in]: inbound packet connection from 10.255.255.129:57276
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;35m688993258←[0m 0ms] inbound/tun[tun-in]: inbound packet connection to 198.19.85.253:9987
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;35m688993258←[0m 2ms] router: found process path: \****\Program Files\TeamSpeak 3 Client\ts3client_win64.exe
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m [←[38;5;35m688993258←[0m 3ms] router: match[3] !(port=53) && !(process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe]) => raw-out
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;35m688993258←[0m 3ms] outbound/socks[raw-out]: outbound packet connection to 198.19.85.253:9987
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m dns: exchange op****ne. IN AAAA
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m dns: exchange op****ne. IN A
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m dns: match[1] !(geosite=private) => test-server
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m dns: exchanged op****ne NOERROR 0
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m dns: cached op****ne NOERROR 594
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m dns: cached op****ne A op****ne. 594 IN A 198.19.85.253
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m dns: exchanged op****ne. A op****ne. 594 IN A 198.19.85.253
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;207m2342607295←[0m 0ms] inbound/tun[tun-in]: inbound packet connection from 10.255.255.129:61153
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;207m2342607295←[0m 6ms] inbound/tun[tun-in]: inbound packet connection to 198.19.85.253:9987
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;207m2342607295←[0m 12ms] router: found process path: \****\Programz\xcore-go\xray-test.exe
+0800 2024-01-23 20:51:14 ←[37mDEBUG←[0m [←[38;5;207m2342607295←[0m 14ms] router: match[1] process_name=[wxray.exe xray.exe sing-box.exe xray-test.exe] => direct-out
+0800 2024-01-23 20:51:14 ←[36mINFO←[0m [←[38;5;207m2342607295←[0m 17ms] outbound/direct[direct-out]: outbound packet connection
+0800 2024-01-23 20:51:18 ←[37mDEBUG←[0m [←[38;5;181m2013226661←[0m 10.6s] inbound/tun[tun-in]: connection closed: io: read/write on closed pipe | upstream: context canceled
+0800 2024-01-23 20:51:19 ←[31mERROR←[0m dns: exchange failed for _tsdns._tcp.****ne. IN SRV: context deadline exceeded
+0800 2024-01-23 20:51:19 ←[36mINFO←[0m outbound/direct[dns-d-out]: outbound packet connection to 127.0.0.1:10853
+0800 2024-01-23 20:51:19 ←[37mDEBUG←[0m [←[38;5;171m225026459←[0m 10.1s] inbound/tun[tun-in]: connection closed: io: read/write on closed pipe | upstream: context canceled
+0800 2024-01-23 20:51:19 ←[31mERROR←[0m dns: exchange failed for _ts3._udp.op****ne. IN SRV: context deadline exceeded
+0800 2024-01-23 20:51:19 ←[36mINFO←[0m outbound/direct[dns-d-out]: outbound packet connection to 127.0.0.1:10853
+0800 2024-01-23 20:51:20 ←[31mERROR←[0m [←[38;5;42m1581251354←[0m 5.1s] inbound/tun[tun-in]: dial tcp 20.231.121.79:80: connectex: i/o timeout
+0800 2024-01-23 20:51:21 ←[31mERROR←[0m dns: exchange failed for _ts3._udp.op****ne. IN SRV: context canceled
+0800 2024-01-23 20:51:21 ←[31mERROR←[0m dns: exchange failed for _tsdns._tcp.****ne. IN SRV: context canceled

希望不是 FakeDNS 功能跟某些地方耦合导致的问题。~理想情况下 FakeDNS 应该在入站的时候路由之前就被终结,被转换为域名,只是不知道是否出于一些局限或者性能考量所以实现上有奇怪的地方。~

KobeArthurScofield avatar Jan 23 '24 21:01 KobeArthurScofield

客户端(mihomo)执行 curl -v --http3-only https://www.google.com.hk server端日志:

2024/03/05 15:13:41 [Info] [3961181656] proxy/vless/inbound: received request for tcp:v1.mux.cool:0
2024/03/05 15:13:41 [Info] [3961181656] proxy: Xtls Unpadding new block, content 1224 padding 0 command 0
2024/03/05 15:13:41 [Info] [3961181656] common/mux: received request for udp:185.45.7.185:443
2024/03/05 15:13:41 [Info] [3961181656] common/mux: XUDP new [239 112 130 139 101 205 19 187]
2024/03/05 15:13:41 [Info] [3961181656] app/dispatcher: default route for udp:185.45.7.185:443
2024/03/05 15:13:41 [Info] [3961181656] proxy/freedom: connection opened to udp:185.45.7.185:443, local endpoint [::]:21523, remote endpoint 185.45.7.185:443
2024/03/05 15:13:42 [Info] [3961181656] proxy: Xtls Unpadding new block, content 1216 padding 0 command 1

执行 curl -v -I https://www.google.com.hk server端日志:

2024/03/05 15:14:50 [Info] [110381494] proxy/vless/inbound: firstLen = 1181
2024/03/05 15:14:50 [Info] [110381494] proxy/vless/inbound: received request for tcp:www.google.com.hk:443
2024/03/05 15:14:50 [Info] [110381494] app/dispatcher: default route for tcp:www.google.com.hk:443
2024/03/05 15:14:50 [Info] [110381494] transport/internet/tcp: dialing TCP to tcp:www.google.com.hk:443
2024/03/05 15:14:50 [Info] [110381494] proxy: Xtls Unpadding new block, content 517 padding 585 command 0
2024/03/05 15:14:50 [Info] [110381494] proxy: XtlsFilterTls found tls client hello! 517
2024/03/05 15:14:50 [Info] [110381494] proxy/freedom: connection opened to tcp:www.google.com.hk:443, local endpoint [2406:ef80:1:64ea:91::a]:2673, remote endpoint [2404:6800:4005:820::2003]:443
2024/03/05 15:14:50 [Info] [110381494] proxy: XtlsFilterTls found tls 1.3! 4317 TLS_AES_256_GCM_SHA384
2024/03/05 15:14:50 [Info] [110381494] proxy: XtlsPadding 4317 122 0
2024/03/05 15:14:50 [Info] [110381494] proxy: Xtls Unpadding new block, content 235 padding 857 command 2
2024/03/05 15:14:50 [Info] [110381494] proxy: CopyRawConn readv
2024/03/05 15:14:50 [Info] [110381494] proxy: XtlsPadding 648 333 2
2024/03/05 15:14:50 [Info] [110381494] proxy: CopyRawConn splice

y1rn avatar Mar 05 '24 09:03 y1rn

应该 v188 修了 如果还有问题再打开

yuhan6665 avatar Mar 07 '24 02:03 yuhan6665

感谢回复!至少客户端 v1.8.8 (v2rayNG 1.8.17) 下带 FakeDNS 直连的 QUIC 恢复正常了(之前似乎有问题,无法正常触发)。 不过服务端与客户端同为 v1.8.8 时 ~~代理 QUIC 似乎无法触发(flow 为 xtls-rprx-vision-upd443,是否实际响应会偏慢的问题?),~~ (更正:443 端口的 QUIC 正常,线路问题) 被代理的 Teamspeak 之类的应用似乎也有问题(响应似乎很缓慢)。

另外因为才想到可以用虚拟机来做客户端,然后将模拟的服务端放置在宿主机或者另一个虚拟机中,这样就可以在保证没有隐私问题的同时获得详细记录(不过 UDP 回包依然不会被 log...) 然后似乎的确还有点问题(比如 Teamspeak 依然不通,被代理的 QUIC 也可能会有问题但是大部分几率会触发)。

现在的测试如下图,用到的服务实际可以直连使用:

客户端程序 ---- sing-box (as tun2socks) ---- Xray-core (as client) ||(VM)====VLESS TCP====(Host)|| Xray-core (as server)

其中 sing-box 依然为 1.8.x,Xray-core 为 1.8.9。另外使用 Wireshark 监听通过 sing-box TUN 的数据包。作为对照,Wireshark 的采样有两份,一份是 tun + fakedns 下的采样,一份是默认无代理无其它处理的采样。

减少呈现内容起见所有内容使用附件:(测试用文件内疑似隐私信息均在处理前就隐蔽) 以下是用到的配置文件: sing-box (as tun2socks): sbox-t2s.json Xray-core (as client): xrayclient.json Xray-core (as server): xrayserver.json 以下是日志文件: sing-box: tun.txt Xray-core (client): client.txt Xray-core (server): server.txt 以下是 Wireshark 抓包,重点关注与对端 (voice.teamspeak.com) UDP 9987 端口的来回包(另外包含使用默认设置下的 Edge 浏览器访问 cloudflare-quic.com 的数据包): TUN + FakeIP: domain-throught.zip 直接连接:direct.zip

无法正常代理的 UDP 要求为在代理客户端到代理服务端传递的不是 IP 地址而是域名,即服务端接收到的 UDP 地址是域名。

如果确定不是 core 中 UDP 链路处理上的问题,可以转为 discussion 蹲一个有缘人(?)

KobeArthurScofield avatar Mar 11 '24 15:03 KobeArthurScofield

你搞那么复杂干嘛,这种环境谁给你去看,sb_tunin-sb_socksout<->ray_socksin-ray_directout, sb_tunin-sb_socksout<->sb_socksin-sb_directout 这两种情况本地测试抓包看下 Loopback 网卡的 SOCKS5 (以及出口网卡的流量)有什么区别,测试下你的软件对于域名地址的 UDP 请求,UDP 响应是否必须是域名地址才能工作 sb_tunin-sb_socksout.json sb_socksin-sb_directout.json ray_socksin-ray_directout.json

dyhkwong avatar Mar 11 '24 17:03 dyhkwong

感谢回复,这个方法的确有效果

sb_tunin-sb_socksout<->ray_socksin-ray_directout, sb_tunin-sb_socksout<->sb_socksin-sb_directout 这两种情况本地测试抓包看下 Loopback 网卡的 SOCKS5 (以及出口网卡的流量)有什么区别

如果是 sb_tunin-sb_socksout<->ray_socksin-ray_directout 的情况,发出的 SOCKS5 UDP 为域名,返回的 SOCKS5 UDP 为 FakeIP 范围内的 IP 地址(应该是 Xray-core 的 DNS 查询被 sing-box 一同劫持了),TUN 上的抓包是 FakeIP 返回,连接成功。(如果是这样的话将 sing-box 和 Xray-core 拆开到两个机器上面可能会有不一样的效果)

如果是 sb_tunin-sb_socksout<->sb_socksin-sb_directout 的情况,SOCKS5 中的 UDP 均为域名,TUN 上的抓包是 FakeIP 返回,连接成功。

KobeArthurScofield avatar Mar 30 '24 17:03 KobeArthurScofield

https://github.com/XTLS/Xray-core/issues/3213#issuecomment-2028081075

dyhkwong avatar Mar 30 '24 18:03 dyhkwong

切换成两个端点不同机器的话

如果是 sb_tunin-sb_socksout<->ray_socksin-ray_directout 的情况,发出的 SOCKS5 UDP 为域名,返回的 SOCKS5 UDP 为实际地址,TUN 上的抓包是真实地址返回,连接失败。

如果是 sb_tunin-sb_socksout<->sb_socksin-sb_directout 的情况,SOCKS5 中的 UDP 均为域名,TUN 上的抓包是 FakeIP 返回,连接成功。

KobeArthurScofield avatar Mar 30 '24 18:03 KobeArthurScofield