Files
3XUI/IPv6 中转、IPv4 出口配置攻略(3X-UI).MD

184 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<span style="color:#34c759">**Xray: IPv6 中转、IPv4 出口配置攻略**</span>
## 目标链路
~~~
客户端
↓ IPv6
节点 AVLESS 入站)
↓ IPv6
节点 BShadowsocks 入站)
↓ IPv4
Internet
~~~
## 一、节点 B:创建 Shadowsocks 入站
在节点 B 创建一个独立的 Shadowsocks 入站,例如:
~~~
入站标签: ss-in-from-a
监听地址:任意地址
端口:自定义
加密方式:双方保持一致
密码:双方保持一致
网络: TCP/UDP
~~~
确认该端口正在监听 IPv6
~~~
ss -6 -lntup | grep '<SS端口>'
~~~
## 二、节点 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": "<SS端口>",
"method": "<加密方式>",
"password": "<SS密码>"
}
]
}
}
```
注意:
- 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 <SS端口>'
```
使用客户端连接并产生流量。如果看到:
```
节点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 私钥或其他认证信息。