一次 XrayR 节点不能用的排查记录:最后发现竟然是运营商问题

# 一次 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、端口监听、用户同步成功、证书正常、面板连接正常。

但客户端还是不能用,最后换网络才发现,**真正的问题是运营商网络限制或干扰**。

最大的结论:**节点不能用,不一定是服务器坏了。服务端全部正常时,一定要换网络测试。**


已发布

分类

来自

标签: