Разбор поломки

Свой 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

Шаг 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.

Перебирать разумно от дешёвого к дорогому:

  1. другой порт (минута работы, иногда достаточно);
  2. другой отпечаток клиента в настройках профиля;
  3. включить vision и набивку вместо голой связки;
  4. сменить транспорт: gRPC или XHTTP поверх Reality;
  5. сменить протокол целиком, например на что-то поверх QUIC;
  6. сменить адрес, подсеть и хостера, если ничего не ожило.

Шаг 7. Когда виноват не сервер, а сеть

Самая быстрая проверка на свете: раздай интернет с телефона и подключись тем же ключом. Заработало? Режет домашний провайдер. Не заработало нигде: причина ближе к серверу.

Шпаргалка: симптом и куда смотреть

Что видноГде искать причину
Таймаут, в логах Xray пустоАдрес или порт режут по дороге, сервер здоров
SSH не пускает, ping молчитМашина выключена: баланс, панель хостера
Xray падает в цикле рестартовКонфиг после обновления, память, диск
invalid connection в логахРазъехались ключи, short_id, домен или версии core
Пишет «подключено», трафика нетПодсеть хостинга целиком, смена страны там же не спасёт
Отказывает всем сразу, без причиныЧасы на сервере, синхронизация времени
С мобильного работает, дома нетДомашний провайдер, роутер, DNS

Неприятная правда про свой сервер

Настроил один раз и забыл: так больше не выходит. За один только 2026 год волн было несколько, и каждая означала вечер наедине с конфигом. Приходят они обычно в самый неподходящий момент: в поездке, в час ночи, когда рядом только телефон без нормальной клавиатуры.

Свой VPS это не покупка, а подписка, которую ты оплачиваешь временем. Кому-то такой расклад в радость, нормальное хобби. Но считать его бесплатным нечестно.

Запасной вход держать разумно

Если сервер остаётся своим, минимальная страховка такая:

Или пусть этим занимается кто-то другой

Та же задача решается иначе: точек входа много, и обновляет их не владелец сервера в час ночи, а те, для кого это работа. TRUE VPN держит стабильное и быстрое подключение без ограничений по скорости. Когда одна точка входа перестаёт нравиться фильтрам, её меняют на стороне сервиса, и ты про это не узнаёшь.

Отдельно приятно то, чего на своём сервере добиваешься руками: мессенджер MAX и российские сервисы идут напрямую, без туннеля, поэтому подключение можно не выключать вообще. Что почём сейчас, смотри на сайте TRUE VPN: цены живут там и меняются, цифру мы здесь не пишем.

Открыть happ-truevpn.com

Частые вопросы

Как понять, сервер упал или его просто не пускают?

Зайдите по SSH и посмотрите статус Xray. Процесс работает, порт слушается, места на диске хватает: сервер жив, ломать в нём нечего. Дальше постучитесь в порт снаружи с другой машины: nc -vz ваш_IP 443. С зарубежного хоста порт открывается, а с домашнего интернета нет: трафик режут по дороге, и переписывать конфиг бессмысленно.

В логах Xray пусто, хотя я подключаюсь. О чём это говорит?

О том, что пакеты до сервера не доходят. Xray записывает каждую попытку рукопожатия, поэтому тишина при живом процессе означает обрыв на пути: заблокирован адрес, режется порт или соединение рвут на подходе. Перед разбором логов поднимите уровень записи до warning, иначе половина событий не попадёт в файл.

Что означает строка REALITY: processed invalid connection?

До сервера кто-то дошёл, но проверку не прошёл. Причины две. Первая: в порт стучится посторонний сканер, это фоновый шум, он будет всегда. Вторая: у клиента и сервера разъехались параметры, чаще всего публичный ключ, short_id или домен из serverNames, либо в приложении лежит старая версия профиля. Отдельно проверьте версии Xray-core на обеих сторонах: несовместимые сборки дают ту же ошибку.

Поможет ли смена порта?

Иногда да, и проверить дёшево: одна строка в конфиге и перезапуск службы. Выручает, когда фильтр смотрел именно на номер порта. Если заблокирован сам адрес сервера, порт не изменит ничего: соединение не установится ни на 443, ни на 8443.

Настроил один раз и забыл: так бывает?

Нет, и 2026 год это показал наглядно. В мае массово посыпалась самая ходовая связка VLESS поверх TCP с Reality, в начале июня добавился разбор отпечатка клиента при рукопожатии, а в начале августа под ограничения попали целые подсети зарубежных хостингов, из-за чего смена страны у того же хостера часто не спасала. Каждая волна означает вечер наедине с конфигом.

Как держать запасной вход?

Минимум: второй вход на том же сервере с другим портом и транспортом. Лучше: второй сервер у другого хостера, в другой стране и подсети, потому что подсети блокируют целиком. И раздавайте на устройства ссылку на подписку вместо отдельного ключа: после правки профиль обновится сам. У готового сервиса задача решена с другой стороны: точек входа много, и меняют их без вашего участия.

Оформить подписку — от 49 ₽ →

Ключ приходит сразу после оплаты. Поддержка отвечает круглосуточно.