关于目前使用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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
对于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