# 一次 XrayR 节点不能用的排查记录:最后发现竟然是运营商问题
> 这是一篇真实的 XrayR 节点排查记录。从安装错架构、systemd 服务文件缺失、启动参数错误,到检查面板同步、证书、端口、防火墙、域名解析,最后发现真正的问题竟然是运营商网络导致。
这两天折腾了一次 XrayR 节点,过程非常典型。一开始看起来像是服务端问题,后来又像是配置问题,中间还怀疑过证书、端口、防火墙、面板同步,最后排查一圈才发现,真正的问题居然是客户端所在网络运营商导致的。
## 一、最开始的问题:XrayR 启动失败
刚开始启动服务的时候,日志里出现了一个非常关键的错误:
“`
Failed to execute /usr/local/XrayR/XrayR: Exec format error
XrayR.service: Failed at step EXEC spawning /usr/local/XrayR/XrayR
“`
这个错误其实很典型,意思是当前这个二进制文件不能在这台机器上运行。
检查机器架构:
“`bash
uname -m
# 输出:aarch64
“`
说明这台机器是 ARM64 架构。
再检查 XrayR 文件架构:
“`bash
file /usr/local/XrayR/XrayR
# 输出:ELF 64-bit LSB executable, x86-64
“`
这就很明确了:机器是 ARM64,但我装的是 x86-64 版本。
## 二、换成正确的 ARM64 版本
XrayR 的 release 包里有很多版本:
– `XrayR-linux-64.zip` → x86_64 / amd64
– `XrayR-linux-arm64-v8a.zip` → aarch64 / arm64
– `XrayR-linux-arm32-v7a.zip` → armv7l
我这台 ARM 机器,应该使用 `XrayR-linux-arm64-v8a.zip`
下载 ARM64 包,解压后替换 `/usr/local/XrayR/XrayR`,重新检查:
“`bash
file /usr/local/XrayR/XrayR
# 输出:ELF 64-bit LSB executable, ARM aarch64
“`
架构问题解决。
## 三、systemd 服务文件缺失
在另一台 x86-64 机器上手动安装 XrayR 时,遇到:
“`bash
systemctl restart XrayR
# Unit XrayR.service could not be found.
“`
程序文件有了,但 systemd 服务文件没有创建。
手动创建服务文件 `/etc/systemd/system/XrayR.service`:
“`ini
[Unit]
Description=XrayR Service
After=network.target nss-lookup.target
[Service]
User=root
WorkingDirectory=/usr/local/XrayR
ExecStart=/usr/local/XrayR/XrayR -c /usr/local/XrayR/config.yml
Restart=on-failure
RestartSec=10
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
“`
然后执行:
“`bash
systemctl daemon-reload
systemctl enable XrayR
systemctl restart XrayR
systemctl status XrayR –no-pager
“`
## 四、启动参数错误
中间还遇到过一个错误:
“`
unknown command “/usr/local/XrayR/config.yml” for “XrayR”
“`
一开始服务文件里写的是:
“`ini
ExecStart=/usr/local/XrayR/XrayR -config /usr/local/XrayR/config.yml
“`
但当前 XrayR 版本并不认 `-config` 这个写法。
查看帮助:
“`bash
/usr/local/XrayR/XrayR –help
# 看到支持的是:-c, –config string
“`
所以正确写法应该是:
“`ini
ExecStart=/usr/local/XrayR/XrayR -c /usr/local/XrayR/config.yml
“`
## 五、XrayR 正常启动,面板同步正常
服务启动成功后,日志里开始出现正常信息:
“`
XrayR 0.9.4
Start the panel..
Xray 1.8.20 started
Added 17 new users Host=”https://new.mfjc.cc” ID=23 Type=Trojan
Added 17 new users Host=”https://new.mfjc.cc” ID=22 Type=V2ray
Start node monitor periodic task
“`
这说明:
– ✅ XrayR 已经正常启动
– ✅ 已经成功连接面板
– ✅ Trojan 节点 ID 23 正常
– ✅ V2ray 节点 ID 22 正常
– ✅ 用户同步成功
## 六、端口监听正常
“`bash
ss -lntp | grep XrayR
# LISTEN 0 1024 *:3659
# LISTEN 0 1024 *:53452
“`
XrayR 已经监听了两个端口:3659 和 53452。
## 七、防火墙排查
检查 UFW:
“`bash
ufw status
# 系统没有安装 UFW
“`
检查 iptables:
“`bash
iptables -L -n
# ACCEPT tcp dpt:53452
# ACCEPT tcp dpt:3659
“`
端口已放行。云服务器安全组也确认放行,外网端口测试正常。
到这一步,服务端排查结果:
– ✅ XrayR 服务正常
– ✅ 面板同步正常
– ✅ 用户同步正常
– ✅ 证书正常
– ✅ 端口监听正常
– ✅ 系统防火墙正常
– ✅ 云安全组正常
**按理说,节点应该可以用了。但是客户端还是连不上。**
## 八、继续看日志,发现没有真正的连接请求
在服务器上开实时日志:
“`bash
journalctl -u XrayR -f
“`
然后客户端点连接。
正常情况下,日志里应该看到 TLS 握手、用户验证等信息。但实际情况是,日志里大部分都是:
“`
0 user deleted, 0 user added
Added 1 new users
“`
这些只是面板同步用户的日志,**不是客户端连接日志**。
也就是说,客户端虽然显示在连接,但服务端这边基本没有收到有效连接。
排查方向变了:问题可能不是 XrayR,也不是面板,而是客户端到服务器之间的网络链路。
## 九、检查域名解析
节点证书域名是:`jiaguwen102.lijiuling.com`
“`bash
ping -c 3 jiaguwen102.lijiuling.com
# PING jiaguwen102.lijiuling.com (150.230.109.102)
# 64 bytes from 150.230.109.102
“`
解析正常,域名指向的也是当前服务器 IP。
## 十、最后真相:换一个网络就正常了
排查到这里,服务端能查的基本都查完了。
于是我换了一个网络环境测试,比如从某个 WiFi 换到手机流量,或者从一个运营商换到另一个运营商。
**结果,节点直接能用了。**
这一下就很明确了:不是服务器问题,不是 XrayR 问题,不是面板问题,也不是证书问题,而是**原来的网络运营商对这个节点端口或者协议有干扰**。
## 十一、为什么运营商会导致节点不能用?
### 第一种可能:运营商对非常规高端口不友好
这次节点端口是 3659 和 53452,这些都不是常见的 80、443 端口。有些运营商、公司网络、校园网、公共 WiFi,会限制陌生高端口连接。
### 第二种可能:协议特征被干扰
Trojan、V2ray、VMess、TLS、SNI、gRPC、WebSocket 这些协议,如果流量特征被识别,某些网络可能会主动阻断或干扰。
表现可能是:
– 客户端一直连接中
– 客户端 timeout
– 服务端没有明显日志
– 换网络后立刻正常
### 第三种可能:线路质量问题
不同运营商到 VPS 的线路差异很大。有些线路绕路严重,有些晚高峰丢包,有些出口策略比较严格。
## 十二、排查经验总结
以后遇到节点不能用,按这个顺序排查:
1. **确认服务是否运行**:`systemctl status XrayR –no-pager`
2. **确认架构是否正确**:`uname -m` 和 `file /usr/local/XrayR/XrayR`
3. **确认日志是否正常**:`journalctl -u XrayR -n 100 –no-pager`
4. **确认端口是否监听**:`ss -lntp | grep XrayR`
5. **确认防火墙和云安全组是否放行**
6. **确认域名解析是否正确**
7. **客户端连接时实时看日志**:`journalctl -u XrayR -f`
8. **换网络测试** ← 关键一步
如果换网络后正常,那基本可以确定是原来的运营商或网络环境有问题。
## 十三、后续优化建议
1. **尽量使用 443 端口** – 兼容性最好
2. **准备多个节点** – 不同端口、不同地区备用
3. **域名不要开 Cloudflare 橙云** – 除非明确使用 WS+TLS+CDN 配置
4. **客户端换 DNS 试试** – 1.1.1.1、8.8.8.8、223.5.5.5
5. **排查时一定要看服务端实时日志**
## 总结
这次 XrayR 节点不能用,前面确实遇到了几个真实问题:
– 安装错架构,ARM 机器装了 x86-64 包
– systemd 服务文件不存在
– 启动参数写成了 `-config`,实际应该用 `-c`
这些问题一个个修好后,XrayR 已经正常运行:服务 active、端口监听、用户同步成功、证书正常、面板连接正常。
但客户端还是不能用,最后换网络才发现,**真正的问题是运营商网络限制或干扰**。
最大的结论:**节点不能用,不一定是服务器坏了。服务端全部正常时,一定要换网络测试。**