关于目前使用xtls对于v6v4双栈服务器配置的探讨。 #4639
Unanswered
KingFannie
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
对于v6v4双栈服务器配置来说 将v6地址数据包转发到v4localhost地址会出错。于是需要在服务端写入两个v4地址入站和v6地址入站分别fallback至v4localhost和v6localhost,加上h2c和http/1.1需要分开配置,共要写四个fallback。
以下为AI生成回答:
基于目前 Xray 的标准配置和文档,Xray 的 Fallback 功能在回落到 Unix domain socket 时,没有提供直接像 PROXY Protocol 那样,通过一个专门的参数(如 xver)将客户端的真实 IP 地址传递过去的功能。
原因如下:xver 参数仅适用于 TCP: Xray Fallback 配置中的 xver: 1 参数是用于在回落到 TCP 地址 (IP:端口) 时启用 PROXY Protocol Version 1,以便在 TCP 连接层面传递客户端真实 IP 和端口。PROXY Protocol 本身就是为 TCP 设计的,不适用于 Unix domain socket。
Fallback 到 Unix Socket 的实现方式: 当 Xray Fallback 到 Unix socket 时,它基本上是将收到的连接或特定数据流(如果匹配了路径或 ALPN)重定向或转发到指定的 Unix socket 文件。这个过程更侧重于连接的转发,标准配置中没有内置在转发过程中自动添加 HTTP 头部(如 X-Real-IP)的功能。
如果客户端直接连接到 Xray,并且 Xray 决定 Fallback: 标准的 Xray Fallback 功能本身并不会自动在转发到 Unix socket 的连接中添加 X-Real-IP 或 X-Forwarded-For 头部。所以 Nginx 在这种情况下通过 Unix socket 收到的请求就不会有这些头,$http_x_real_ip 会是 -。
结论:标准的 Xray Fallback 配置,特别是通过 xver 参数传递真实 IP 的机制,不支持用于回落到 Unix domain socket。Fallback 到 Unix socket 时,无法通过标准的 PROXY Protocol 传递真实 IP。
如果你的应用场景允许,更推荐的回落方案是让 Nginx 监听一个本地 TCP 端口(例如 127.0.0.1:8080),然后在 Xray 的 Fallback 配置中将 dest 指向这个 TCP 端口,并设置 xver: 1。同时在 Nginx 的 listen 127.0.0.1:8080 指令后面加上 proxy_protocol 参数。这是 Xray 和 Nginx 标准支持的、用于 Fallback 传递真实 IP 的方式。
Beta Was this translation helpful? Give feedback.
All reactions