EasyTier 组网后能 ping 通对方,但 HTTP 访问失败——这是隧道已建立、应用层流量被拦截的典型现象。
快速定位(3 条命令)
① 客户端测试 TCP 连通性
curl -v http://对方EasyTierIP:端口
Connection refused:网络通,服务没监听Connection timed out:防火墙或路由拦截- 返回 HTTP 内容:服务正常,排查客户端代理
② 服务端抓包
sudo tcpdump -i tun0 tcp port 80
同时客户端访问一次:
| 抓包结果 | 结论 |
|---|---|
| 看到 SYN | 流量到了服务器,查服务监听或防火墙 |
| 看不到 SYN | 路由或 EasyTier 转发问题 |
| SYN 无 SYN-ACK | 防火墙或服务未监听 |
③ 查看监听端口
ss -lntp | grep -E ':80|:443|:8080'
原因一:服务只监听 127.0.0.1(最常见)
ss -lntp 看到 127.0.0.1:80,EasyTier 的 tun0 流量就无法到达服务。
修改方法:
# uvicorn
uvicorn main:app --host 0.0.0.0 --port 8000
# nginx
listen 0.0.0.0:80;
# Node.js
app.listen(80, '0.0.0.0')
原因二:防火墙拦截 tun0
ping 用 ICMP,HTTP 用 TCP,如果防火墙只放行了 ICMP 或者对 EasyTier 网卡有限制:
# 查看规则
sudo iptables -L -n
sudo ufw status
# 临时放行 tun0(测试用)
sudo iptables -I INPUT -i tun0 -j ACCEPT
sudo iptables -I FORWARD -i tun0 -j ACCEPT
永久规则(以 ufw 为例):
sudo ufw allow in on tun0
原因三:Docker 端口绑定到 localhost
docker ps
如果看到 127.0.0.1:80->80/tcp,改成:
docker run -p 80:80 ...
原因四:服务绑定到特定网卡 IP
服务器有多个网卡(公网 IP + EasyTier IP),应用可能只绑到了公网 IP:
ss -lntp | grep 8080
如果看到 103.x.x.x:8080,需要改为 0.0.0.0:8080。
原因五:代理劫持 HTTP 流量
系统装了 Clash、sing-box 等,可能把内网 IP 的 HTTP 也走了代理:
curl --noproxy '*' http://10.x.x.x
如果这样能通,就是代理规则问题,把 EasyTier 网段加入 bypass 列表。
原因六:MTU 问题
现象:ping 小包正常,HTTP 建连后卡住或大文件下载失败。
ping -M do -s 1472 目标IP
失败则把 EasyTier 网卡 MTU 调小:
sudo ip link set tun0 mtu 1280
EasyTier 配置自定义 IP 段
默认 dhcp = true 由网络中的 DHCP 节点分配 IP。如果要固定 IP:
dhcp = false
ipv4 = "10.88.0.2/24"
如果加入的是他人的 EasyTier 网络,单方面改客户端配置通常不生效,需要整个网络统一规划地址段。
诊断工具速查
# 确认 EasyTier 接口和 IP
ip addr show tun0
# 确认路由(流量是否走 tun0)
ip route | grep tun0
# TCP 连通性测试
nc -vz 目标IP 80
# 本机自测(服务端执行)
curl -v http://127.0.0.1:80
curl -v http://tun0_IP:80