# easytier 连接 peer 超时 ## 问题原因 `easytier` 使用 `network_mode: host`,它发起的 peer 连接属于宿主机本机流量,会经过 `nat OUTPUT`。 `pyxray` 开启 transparent redirect 后,会把宿主机本机 TCP 流量转到 Xray transparent inbound: ```sh 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 时,连接会被改写: ```mermaid flowchart LR E[easytier-core
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,日志表现为: ```text connecting to peer dst=tcp://117.72.47.28:33010 connect to peer error ... Timeout ``` ## 解决方案 在 UI 的“核心 -> transparent”里添加 OUTPUT 绕过规则,让 easytier peer 连接在进入 `TP_RULE` 前直接 `RETURN`。 示例: ```text tcp 117.72.47.28:33010 ``` 生成后的关键规则: ```sh 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 ``` 修复后的流量路径: ```mermaid flowchart LR E[easytier-core
tcp://117.72.47.28:33010] --> O[nat OUTPUT] O --> TPO[TP_OUT] TPO --> B{match tcp
117.72.47.28:33010} B -->|yes| D[RETURN
直连 peer] B -->|no| TPR[TP_RULE] TPR --> R[REDIRECT :52345] ``` 规则格式: ```text 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` 行为。