Свой VPN отвалился: почему VLESS с Reality перестал пускать
Вечер, приложение крутит «Подключение», потом таймаут. Ты ничего не менял: сервер оплачен, конфиг не трогали с весны, вчера всё летало. Ниже порядок проверок, который экономит вечер: от самого дешёвого вопроса до неприятного вывода в конце.
Шаг 1. Развести две разные поломки
Симптом один, а причины противоположные. Либо сервер лёг: упал Xray, кончилась память, хостер выключил машину. Либо сервер бодр, а трафик до него не доезжает. Путать их дорого: люди неделями переписывают конфиг машине, до которой просто не добраться.
Первым делом зайди по SSH:
ssh root@ТВОЙ_IP
Пустило: машина работает, идём смотреть Xray. Не пустило, и ping молчит:
вопрос к хостеру и к балансу. Не пустило, а ping идёт: кто-то режет TCP
на подходе.
Теперь проверка снаружи. С любой другой машины (второй сервер, консоль хостера, ноутбук друга в другой стране) постучись в рабочий порт:
nc -vz ТВОЙ_IP 443
С зарубежного хоста порт открывается, а с домашнего интернета нет? Сервер здоров, дело в дороге до него. Дальше чинить конфиг бесполезно, переходи сразу к шагу 4.
Шаг 2. Живой ли Xray и цел ли конфиг
Три команды на сервере закрывают половину случаев:
systemctl status xray
xray -test -c /usr/local/etc/xray/config.json
ss -lntp | grep xray
Первая покажет, работает процесс или падает в цикле рестартов. Вторая проверит конфиг отдельно от запуска: после автообновления бывает, что старый JSON новая версия уже не принимает, служба стартует и тут же умирает. Третья скажет, слушается ли твой порт. Xray работает, а порта в выводе нет? Значит слушает он не то, что прописано в клиенте.
Заодно посмотри, не задохнулась ли машина:
free -m
df -h
journalctl -u xray -n 200 --no-pager
Забитый под ноль диск или съеденная память дают ровно ту же картину, что и блокировка: на дешёвом тарифе Xray улетает под убийцу процессов, пока владелец третий час подбирает новый транспорт.
Шаг 3. Что видно в логах
Сначала подними уровень записи, иначе половина событий не попадёт в файл.
В разделе log:
"log": {
"loglevel": "warning",
"access": "/var/log/xray/access.log",
"error": "/var/log/xray/error.log"
}
Перезапусти службу, попробуй подключиться с телефона и смотри хвост:
tail -f /var/log/xray/error.log
- Полная тишина при живом процессе. Пакеты до сервера не доходят. Xray записывает каждую попытку рукопожатия, и если попыток ноль, обрыв случился раньше. Тебе к шагу 4.
-
REALITY: processed invalid connection. До сервера кто-то дошёл, но проверку не прошёл. Либо в порт стучится посторонний сканер (фоновый шум, он будет всегда), либо разъехались публичный ключ,short_idили домен изserverNames, либо в приложении лежит старый профиль. Отдельная засада: несовместимые версии Xray-core на сервере и в клиенте дают ту же строку, хотя параметры сходятся до буквы. -
i/o timeoutна исходящих. Клиент дошёл, а сервер сам не может выйти наружу: DNS, firewall или проблемы у хостера. Проверь с сервераcurl -I https://example.com.
Шаг 4. Адрес в блоке или подсеть целиком
Признаки узнаваемые: снаружи из другой страны порт открыт, а из дома соединение не встаёт вообще. Иногда приложение бодро пишет «подключено», при этом ни один сайт не грузится: канал есть, трафика нет.
Проверяется дёшево: попроси у хостера сменить IP. Новый адрес ожил, а конфиг не трогали? Блокировали именно адрес.
Подводный камень 2026 года: под ограничения попадают и отдельные адреса, и подсети хостингов целиком. В начале августа так разом отвалились серверы у множества владельцев, причём смена страны у того же хостера чаще всего не спасала. Если новый IP из той же подсети умер следом, менять надо не адрес, а хостера и сеть.
Шаг 5. Маскировка: донор и часы
Reality прячет соединение за настоящий чужой сайт: клиент здоровается так, будто открывает его, и сертификат берётся оттуда же. Отсюда две поломки, о которых вспоминают последними.
Донор перестал годиться
Сайт, под который ты маскируешься, живёт своей жизнью: переехал на другой CDN, сменил набор шифров, перестал держать нужную версию TLS, а то и сам попал под блокировку. Проверь донора прямо с сервера:
openssl s_client -connect example.com:443 -tls1_3 -servername example.com
Донор должен отвечать по TLS 1.3, быть сетево близко к серверу и не иметь отношения ни к России, ни к спискам блокировок.
Уехали часы
Рукопожатие завязано на актуальное время. Машина, простоявшая месяц без синхронизации, начинает отказывать всем подряд без внятной причины:
timedatectl
Нужна строка System clock synchronized: yes. Стоит no: включай
NTP и пробуй снова, лечится одной командой.
Шаг 6. Порт, отпечаток, транспорт
Порт меняется за минуту и выручает, когда фильтр смотрел именно на номер. При заблокированном адресе не даст ничего: соединение не встанет ни на 443, ни на 8443.
С транспортом сложнее, и честный ответ такой: вечной настройки нет, набор «того, что держится» меняется волнами. В мае 2026 массово посыпалась самая ходовая связка VLESS поверх TCP с Reality: рукопожатие обрывалось на подходе, до Xray. В начале июня добавился разбор отпечатка клиента, и под раздачу попали самые массовые, браузерные отпечатки. Отпечаток корректный, но популярный, по популярности его и вычисляют. Лучше держались другие транспорты поверх того же Reality: gRPC и XHTTP.
Перебирать разумно от дешёвого к дорогому:
- другой порт (минута работы, иногда достаточно);
- другой отпечаток клиента в настройках профиля;
- включить vision и набивку вместо голой связки;
- сменить транспорт: gRPC или XHTTP поверх Reality;
- сменить протокол целиком, например на что-то поверх QUIC;
- сменить адрес, подсеть и хостера, если ничего не ожило.
Шаг 7. Когда виноват не сервер, а сеть
Самая быстрая проверка на свете: раздай интернет с телефона и подключись тем же ключом. Заработало? Режет домашний провайдер. Не заработало нигде: причина ближе к серверу.
- Регион и оператор. Ограничения включают точечно, и у соседа по лестничной клетке с другим провайдером в тот же вечер всё летает.
- Роутер и DNS. Перезагрузка, «умные» фильтры, DNS. Клиент, который ходит за подпиской по домену, без DNS молча останется со старым профилем.
- MTU. Мелочь открывается, а тяжёлые страницы виснут на середине? Похоже на MTU, покрути его вниз.
- Само приложение. Обновилось и потеряло часть настроек, бывает. Заведи профиль заново из ссылки, а не правь старый руками.
Шпаргалка: симптом и куда смотреть
| Что видно | Где искать причину |
|---|---|
| Таймаут, в логах Xray пусто | Адрес или порт режут по дороге, сервер здоров |
| SSH не пускает, ping молчит | Машина выключена: баланс, панель хостера |
| Xray падает в цикле рестартов | Конфиг после обновления, память, диск |
| invalid connection в логах | Разъехались ключи, short_id, домен или версии core |
| Пишет «подключено», трафика нет | Подсеть хостинга целиком, смена страны там же не спасёт |
| Отказывает всем сразу, без причины | Часы на сервере, синхронизация времени |
| С мобильного работает, дома нет | Домашний провайдер, роутер, DNS |
Неприятная правда про свой сервер
Настроил один раз и забыл: так больше не выходит. За один только 2026 год волн было несколько, и каждая означала вечер наедине с конфигом. Приходят они обычно в самый неподходящий момент: в поездке, в час ночи, когда рядом только телефон без нормальной клавиатуры.
Свой VPS это не покупка, а подписка, которую ты оплачиваешь временем. Кому-то такой расклад в радость, нормальное хобби. Но считать его бесплатным нечестно.
Запасной вход держать разумно
Если сервер остаётся своим, минимальная страховка такая:
- второй вход на том же сервере: другой порт, другой транспорт;
- второй сервер у другого хостера, в другой стране и в другой подсети;
- раздавать не отдельный ключ, а ссылку на подписку: поправил на сервере, устройства подтянули новый профиль сами.
Или пусть этим занимается кто-то другой
Та же задача решается иначе: точек входа много, и обновляет их не владелец сервера в час ночи, а те, для кого это работа. TRUE VPN держит стабильное и быстрое подключение без ограничений по скорости. Когда одна точка входа перестаёт нравиться фильтрам, её меняют на стороне сервиса, и ты про это не узнаёшь.
Отдельно приятно то, чего на своём сервере добиваешься руками: мессенджер MAX и российские сервисы идут напрямую, без туннеля, поэтому подключение можно не выключать вообще. Что почём сейчас, смотри на сайте TRUE VPN: цены живут там и меняются, цифру мы здесь не пишем.
Частые вопросы
Как понять, сервер упал или его просто не пускают?
Зайдите по SSH и посмотрите статус Xray. Процесс работает, порт слушается, места на
диске хватает: сервер жив, ломать в нём нечего. Дальше постучитесь в порт снаружи с
другой машины: nc -vz ваш_IP 443. С зарубежного хоста порт открывается,
а с домашнего интернета нет: трафик режут по дороге, и переписывать конфиг
бессмысленно.
В логах Xray пусто, хотя я подключаюсь. О чём это говорит?
О том, что пакеты до сервера не доходят. Xray записывает каждую попытку рукопожатия,
поэтому тишина при живом процессе означает обрыв на пути: заблокирован адрес,
режется порт или соединение рвут на подходе. Перед разбором логов поднимите уровень
записи до warning, иначе половина событий не попадёт в файл.
Что означает строка REALITY: processed invalid connection?
До сервера кто-то дошёл, но проверку не прошёл. Причины две. Первая: в порт стучится
посторонний сканер, это фоновый шум, он будет всегда. Вторая: у клиента и сервера
разъехались параметры, чаще всего публичный ключ, short_id или домен из
serverNames, либо в приложении лежит старая версия профиля. Отдельно
проверьте версии Xray-core на обеих сторонах: несовместимые сборки дают ту же ошибку.
Поможет ли смена порта?
Иногда да, и проверить дёшево: одна строка в конфиге и перезапуск службы. Выручает, когда фильтр смотрел именно на номер порта. Если заблокирован сам адрес сервера, порт не изменит ничего: соединение не установится ни на 443, ни на 8443.
Настроил один раз и забыл: так бывает?
Нет, и 2026 год это показал наглядно. В мае массово посыпалась самая ходовая связка VLESS поверх TCP с Reality, в начале июня добавился разбор отпечатка клиента при рукопожатии, а в начале августа под ограничения попали целые подсети зарубежных хостингов, из-за чего смена страны у того же хостера часто не спасала. Каждая волна означает вечер наедине с конфигом.
Как держать запасной вход?
Минимум: второй вход на том же сервере с другим портом и транспортом. Лучше: второй сервер у другого хостера, в другой стране и подсети, потому что подсети блокируют целиком. И раздавайте на устройства ссылку на подписку вместо отдельного ключа: после правки профиль обновится сам. У готового сервиса задача решена с другой стороны: точек входа много, и меняют их без вашего участия.