**Xray: IPv6 中转、IPv4 出口配置攻略** ## 目标链路 ~~~ 客户端 ↓ IPv6 节点 A(VLESS 入站) ↓ IPv6 节点 B(Shadowsocks 入站) ↓ IPv4 Internet ~~~ ## 一、节点 B:创建 Shadowsocks 入站 在节点 B 创建一个独立的 Shadowsocks 入站,例如: ~~~ 入站标签: ss-in-from-a 监听地址:任意地址 端口:自定义 加密方式:双方保持一致 密码:双方保持一致 网络: TCP/UDP ~~~ 确认该端口正在监听 IPv6: ~~~ ss -6 -lntup | grep '' ~~~ ## 二、节点 B:创建 IPv4 出站 创建一个 Freedom 出站: ``` { "tag": "direct-v4", "protocol": "freedom", "sendThrough": "<节点B的IPv4地址>", "settings": { "domainStrategy": "UseIPv4" }, "streamSettings": { "sockopt": { "domainStrategy": "ForceIPv4" } } } ``` 其中: - `sendThrough` 填写节点 B 本机的公网 IPv4。 - `UseIPv4` 和 `ForceIPv4` 用于优先或强制解析 IPv4。 - 不会影响节点 B 上的其他入站和用户。 ## 三、节点 B:添加路由规则 将来自节点 A 的 SS 入站转发到 IPv4 出站: ``` { "type": "field", "inboundTag": [ "ss-in-from-a" ], "outboundTag": "direct-v4" } ``` > > 该规则应放在默认直连或兜底规则之前。 ## 四、节点 A:创建 Shadowsocks 出站 地址填写节点 B 的 IPv6: ``` { "tag": "to-node-b-v6", "protocol": "shadowsocks", "settings": { "servers": [ { "address": "<节点B的IPv6地址>", "port": "", "method": "<加密方式>", "password": "" } ] } } ``` 注意: - JSON 中的 IPv6 地址不需要添加方括号。 - 加密方式、端口和密码必须与节点 B 完全一致。 - 建议为该链路使用独立的 SS 入站端口。 ## 五、节点 A:创建独立 VLESS 入站 建议为这条链路创建一个独立 VLESS 入站,例如: ``` 入站标签: vless-in-chain 监听地址: 任意地址 端口: 自定义 传输方式: 根据实际需要设置 ``` > > 客户端使用节点 A 的 IPv6 地址或 AAAA 域名连接。 ## 六、节点 A:添加路由规则 将指定 VLESS 入站流量发送到节点 B: ``` { "type": "field", "inboundTag": [ "vless-in-chain" ], "outboundTag": "to-node-b-v6" } ``` > > 使用 `inboundTag` 通常比按端口匹配更清晰,也不容易误伤其他入站。 ## 七、重启服务 两台服务器保存配置后重启 x-ui: ``` x-ui restart ``` 然后确认 Xray 正常运行: ``` systemctl status x-ui --no-pager ``` ## 八、验证 A 到 B 是否走 IPv6 在节点 A 执行: ``` tcpdump -ni eth0 \ 'ip6 and host <节点B的IPv6地址> and port ' ``` 使用客户端连接并产生流量。如果看到: ``` 节点A的IPv6地址 → 节点B的IPv6地址 ``` 以及双向 TCP 数据包,说明 A 到 B 确实通过 IPv6 通信。 ## 九、验证最终出口是否为 IPv4 通过代理访问 IPv4 地址检测服务: ``` https://api.ipify.org ``` > > 如果显示节点 B 的公网 IPv4,说明配置成功。 最终链路应为: ``` 客户端 → 节点A: IPv6 节点A → 节点B: IPv6 节点B → Internet: IPv4 ``` ## 注意事项 1. JSON 配置应填写到 x-ui 的「出站」或「路由」编辑器中,不要直接粘贴到 Shell。 2. 路由规则应放在默认直连、默认代理或兜底规则之前。 3. 如果 x-ui 会自动删除出站中的 `targetStrategy`,可以在节点 B 使用 `Freedom + sendThrough + sockopt.domainStrategy` 实现 IPv4 出口。 4. 如果目标已经是 IPv6 地址,Xray 无法自动将它转换为对应的 IPv4。 5. 严格要求 IPv4 出口时,应让域名在节点 B 解析,并避免客户端提前将域名解析成 IPv6 地址。 6. 发布教程时不要公开真实密码、UUID、Reality 私钥或其他认证信息。