Files
2026-05-27 14:20:30 +08:00

1.8 KiB
Raw Permalink Blame History

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 行为。