1.8 KiB
1.8 KiB
easytier 连接 peer 超时
问题原因
easytier 使用 network_mode: host,它发起的 peer 连接属于宿主机本机流量,会经过 nat OUTPUT。
pyxray 开启 transparent redirect 后,会把宿主机本机 TCP 流量转到 Xray transparent inbound:
iptables -t nat -I OUTPUT -p tcp -j TP_OUT
iptables -t nat -A TP_OUT -j TP_RULE
iptables -t nat -A TP_RULE -p tcp -j REDIRECT --to-ports 52345
因此 easytier 访问 peer 时,连接会被改写:
flowchart LR
E[easytier-core<br/>tcp://117.72.47.28:33010] --> O[nat OUTPUT]
O --> TPO[TP_OUT]
TPO --> TPR[TP_RULE]
TPR --> R[REDIRECT :52345]
R --> X[Xray transparent inbound]
结果是 easytier 没有直连到自己的 peer,日志表现为:
connecting to peer dst=tcp://117.72.47.28:33010
connect to peer error ... Timeout
解决方案
在 UI 的“核心 -> transparent”里添加 OUTPUT 绕过规则,让 easytier peer 连接在进入 TP_RULE 前直接 RETURN。
示例:
tcp 117.72.47.28:33010
生成后的关键规则:
iptables -t nat -A TP_OUT -p tcp -d 117.72.47.28 --dport 33010 -j RETURN
iptables -t nat -A TP_OUT -j TP_RULE
修复后的流量路径:
flowchart LR
E[easytier-core<br/>tcp://117.72.47.28:33010] --> O[nat OUTPUT]
O --> TPO[TP_OUT]
TPO --> B{match tcp<br/>117.72.47.28:33010}
B -->|yes| D[RETURN<br/>直连 peer]
B -->|no| TPR[TP_RULE]
TPR --> R[REDIRECT :52345]
规则格式:
tcp 117.72.47.28:33010
all 192.168.0.0/24
udp 198.51.100.10:3478
说明:
redirect模式只处理 TCP,因此只生成 TCP 绕过规则。tproxy模式支持 TCP 和 UDP。- 规则只作用于宿主机本机
OUTPUT,不改变 Docker 容器透明代理的PREROUTING行为。