在 Passwall 中使用 Xray 时,发现 Tor 浏览器无法正常使用,查阅 Xray 文档 后了解到是 Sniffing 产生的问题,于是博主在 Passwall 中将 流量嗅探只供路由使用 勾选,同时在 VPS 上也将 routeOnly 设置为 true,再次尝试发现 Tor 浏览器可以正常使用。

不久之后,发现了一个新问题,博主的 VPS 是自带流媒体 DNS 解锁功能的,如果将 routeOnly 开启,会导致流媒体解锁失效,这真是一个头疼的问题。

仔细研究 Xray 文档后,博主发现似乎可以在 VPS 上再套一层 Socks 来解决这个问题,配置是这样的:

inbounds 入站配置

[
  {
    "listen": "127.0.0.1",
    "port": 55333,
    "protocol": "socks",
    "settings": {
      "auth": "noauth",
      "ip": "127.0.0.1",
      "udp": true
    },
    "sniffing": {
      "destOverride": [
        "http",
        "tls",
        "quic",
        "fakedns"
      ],
      "enabled": true,
      "routeOnly": false
    },
    "streamSettings": null,
    "tag": "inbound-55333"
  },
  {
    "listen": null,
    "port": 55555,
    "protocol": "xxx",
    "settings": {
      "clients": [
        {
          "email": "xxxx",
          "method": "aes-128-gcm",
          "password": "xxxx"
        }
      ],
      "method": "aes-128-gcm",
      "network": "tcp,udp",
      "password": ""
    },
    "sniffing": {
      "destOverride": [
        "http",
        "tls",
        "quic",
        "fakedns"
      ],
      "enabled": true,
      "routeOnly": true
    },
    "streamSettings": {
      "network": "tcp",
      "security": "none",
      "tcpSettings": {
        "acceptProxyProtocol": false,
        "header": {
          "type": "none"
        }
      }
    },
    "tag": "inbound-55555"
  }
]

routing 路由配置

[
  {
    "type": "field",
    "domain": [
      "geosite:netflix"
    ],
    "inboundTag": [
      "inbound-55555"
    ],
    "outboundTag": "Local-Socks-55333"
  }
]

最后解释一下原理

客户端开启 SniffingrouteOnly,然后将请求发送到 VPS 55555 端口的入站,该入站开启了 routeOnly,服务端检测到域名包含在 geosite:netflix 中时,将请求转发到 55333 端口的 Socks 入站,该入站关闭了 routeOnly,出站时会重新进行 DNS 解析,将请求发送到解锁机上。