Коротко — ошибки при подключении через V2Ray/Xray могут быть сетевые (таймаут/вх. блокировка), протокольные (TLS/Reality/WS mismatch), аутентификационные (неверный id/ключ) и системные (лимиты/файрвол/не слушает порт). Ниже — список типичных ошибок, что они обычно означают и что проверить/сделать.
1) dial tcp ...: i/o timeout
- Что значит: клиент не получил ответ при попытке установить TCP-соединение (таймаут).
- Причины: сервер недоступен/не отвечает, порт закрыт, межсетевой экран/провайдер блокирует, неправильный IP/порт, NAT/маршрутизация, packet loss.
- Что проверить:
- ping/traceroute до IP.
- nc -vz <IP> <PORT> или telnet <IP> <PORT> (проверить, открыт ли порт).
- nmap -sT (и для UDP -sU) на соответствующий порт.
- на сервере: ss -lntp / ss -lunp — слушает ли xray нужный порт.
- firewall/iptables/ufw/Security Group правилa.
- провайдер/ISP блокирует ли порт (часто для 443 нет проблем, для других — возможно).
- временно отключить NAT/порт-форвардинг проблемы.
- включить debug-лог в клиенте и сервере.
2) dial tcp ...: connection refused
- Что значит: TCP-пакет дошёл, но на порту нет слушающего процесса.
- Причины: xray не запущен, слушает на другом порту/интерфейсе, firewall блокирует ответ.
- Что проверить: на сервере проверка процесса/конфигурации, логи xray, ss/netstat.
3) no such host / lookup ...: no such host
- Что значит: DNS не может разрешить домен.
- Что проверить: nslookup/dig домен, провайдерские DNS, кеш, правильность записи A/AAAA.
4) tls: handshake failure / x509: certificate signed by unknown authority / certificate is valid for ...
- Что значит: проблемы TLS — сертификат недействителен/не доверен/не соответствует SNI или клиент пытается не-TLS на TLS-порт.
- Причины: просроченный/неправильный сертификат, SNI не совпадает, самоподписанный сертификат без доверия, клиент отправляет plain вместо TLS (или наоборот).
- Что проверить:
- openssl s_client -connect host:port -servername host (посмотреть сертификат, цепочку и SNI).
- сравнить serverName в конфиге Reality/TLS.
- проверить сроки действия и CA.
- включить debug-логи.
5) Reality-specific: handshake failed / unexpected EOF / peer closed connection / invalid fingerprint
- Что значит: рукопожатие Reality не удалось.
- Причины: неверный server_public_key/fingerprint у клиента или на сервере, неправильный sni/shortid/flow, сеть режет трафик, версия реализации несовместима.
- Что проверить:
- совпадение публичного ключа reality между сервером и клиентом.
- правильный SNI/transport type.
- логи на сервере — обычно там пишется почему handshake упал.
- проверить, не режет ли провайдер трафик, попробовать другой port/SNI.
6) websocket/HTTP errors (e.g. unexpected response / 403 / 404 / oversized record)
- Что значит: mismatch транспортов — клиент ожидает ws/http2, сервер отдает другое, либо недопустимый HTTP-ответ.
- Причины: неправильный path, host header, SNI, обслуживающий прокси (nginx) неправильно проксирует.
- Что проверить:
- path и host в конфиге клиента совпадают с серверным.
- если через nginx/traefik — проверьте proxy_pass и websocket forward.
- лог веб-сервера.
7) connection reset by peer / EOF / remote closed
- Что значит: сервер закрыл соединение сразу после установления (или что-то посередине).
- Причины: сервер отвергает из-за неверной авторизации/конфигурации, лимиты, middlebox (IDS) разрывает, mismatch протокола.
- Что проверить: серверный лог, проверка id/uuid/flow, детальный debug.
8) authentication failed / invalid user / unauthorized
- Что значит: неверный id/uuid/alterId или метод аутентификации.
- Что проверить: uuid/возможные expiration/limits в конфиге, client id совпадает с сервером.
9) too many open files / resource temporarily unavailable
- Что значит: системные лимиты (ulimit) достигнуты.
- Что сделать: увеличить ulimit, оптимизировать conn reuse, проверить открытые файлы/сокеты.
10) dns timeout / failed to resolve
- Что значит: DNS-запросы с клиента не проходят.
- Что сделать: сменить DNS, проверить forward DNS на сервере, временно прописать IP в hosts для теста.
Диагностика — краткий чеклист команд
- nc -vz <IP> <PORT> — проверить TCP-порт
- nmap -Pn -p <PORT> <IP>
- openssl s_client -connect host:port -servername host — проверить TLS
- ss -lntp / ss -lunp — локально слушает ли процесс
- journalctl -u xray / cat /var/log/xray/*.log — посмотреть логи сервера
- tcpdump -i any host <IP> and port <PORT> — посмотреть пакеты
- dig +short domain ; nslookup domain — DNS
- traceroute <IP> — маршрут до сервера
Рекомендации
- Включите debug-логи на клиенте и сервере, чтобы получить подробности ошибки.
- Начните с простого: проверить доступность порта, затем TLS/Reality handshake, затем авторизацию.
- Если видите i/o timeout — сначала сеть/файервол, если connection refused — сервис не слушает.
- Для Reality/加密 — убедитесь в точности публичных ключей/fingerprint и в правильном SNI.
Если хотите, пришлите полные логи клиента и сервера (с уровнем debug) и конфигурации (замаскируйте UUID/ключи) — я помогу интерпретировать и подскажу точные шаги.