Руководство по устранению неполадок¶
Решения типичных проблем r-vpn.
Проблемы с подключением¶
"Failed to connect" или тайм-аут¶
Симптомы: Клиент зависает на Connecting to wss://... и в итоге выходит по тайм-ауту.
Проверка:
-
Порт сервера доступен:
-
Файрвол разрешает порт 443:
-
TLS-сертификат действителен:
-
Путь WebSocket корректен. Клиенты подключаются к
{websocket_path}(например,/api/v1/ws). Если ваш сервер использует другой путь, обновите client.toml.
"TLS handshake failed"¶
Симптомы: Клиент показывает TLS handshake failed или certificate verify failed.
Причины и решения:
-
Сертификат Let's Encrypt не продлён:
-
Неправильное имя хоста в server_address:
-
Несовпадение SNI:
-
iOS: Проблема проверки сертификата в песочнице (старые сборки): Убедитесь, что вы пересобрали библиотеку Rust после обновления. На iOS проверка сертификатов использует системное хранилище доверия через
SecTrustEvaluateWithError.
"Connection refused" сразу¶
Симптомы: Клиент мгновенно завершается с Connection refused.
Проверка:
# Сервер запущен?
sudo systemctl status rvpn-server
# Он слушает на правильном порту?
sudo ss -tlnp | grep 443
# Можно подключиться локально?
curl -I http://127.0.0.1:8443/api/v1/ws
"X3DH handshake failed"¶
Симптомы: Подключение начинается, но завершается ошибкой при настройке шифрования.
Причины:
-
Несовпадение пакета предключей: Клиенты и серверы должны использовать один и тот же пакет предключей. Если сервер ротировал ключи, а у клиента старый пакет, это может завершиться ошибкой.
-
Ключ идентификации изменён: Если ключ идентификации сервера был перегенерирован, всем клиентам нужен новый пакет предключей.
"Too many connections" или превышен лимит запросов¶
Симптомы: Connection refused или Rate limited после успешного подключения в течение некоторого времени.
Проверьте лимиты сервера:
Каждое клиентское подключение занимает один слот. Если у вас много устройств, увеличьте эти значения.
Проблемы TUN-режима¶
Клиент подключён, но нет доступа в интернет¶
Проверка 1: IP-форвардинг на сервере:
Если не включён:
Проверка 2: Правила NAT на сервере:
Вы должны видеть правила MASQUERADE и правила FORWARD ACCEPT.
Если отсутствуют:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Проверка 3: Группа безопасности/файрвол сервера разрешает исходящий трафик: Сервер должен иметь возможность устанавливать исходящие подключения к любому IP на любом порту для работы NAT.
Проверка 4: NAT включён в server.toml:
Проверка 5: Маршруты клиента:
# На клиенте, проверьте таблицу маршрутизации
ip route show # Linux
route -n get 0.0.0.0 # macOS
# Маршрут по умолчанию должен указывать на туннельный интерфейс
Трафик уходит, но ничего не возвращается¶
Симптомы: Вы можете пинговать внешние IP, но не получаете ответа. Журналы сервера показывают пересылку кадров, но нет "Relay completed".
Корневая причина: Ответ SOCKS5 отправлен до готовности туннеля.
Исправление: Это была ошибка в старых версиях. Пересоберите и повторно разверните:
Проверьте журналы сервера:
INFO rvpn_server: Listening on 0.0.0.0:443
INFO rvpn_server: WebSocket path: /api/v1/ws
INFO rvpn_server: TUN mode enabled
Если TUN-режим не включён, клиенты в TUN-режиме не смогут корректно подключиться.
TUN-интерфейс не создан на сервере¶
Проверка:
Если интерфейс не существует:
1. Убедитесь, что enabled = true в [server.tun]
2. Проверьте журналы сервера на наличие ошибок при создании интерфейса
3. Попробуйте другое имя интерфейса в случае конфликта имён
Клиент не может пинговать TUN IP сервера¶
Проверка:
# На сервере
ping 10.200.0.1 # С сервера на самого себя через tun0
# На клиенте
ping 10.200.0.1 # Клиент должен достичь TUN IP сервера
Если клиент не может достичь 10.200.0.1, туннель не установлен корректно.
Проблемы SOCKS5-режима¶
Приложения не маршрутизируются через прокси¶
Проверка 1: Прокси запущен:
Если возвращается IP вашего VPN-сервера, прокси работает.
Проверка 2: Системные настройки прокси:
Убедитесь, что ваша система или приложение настроены на использование 127.0.0.1:1080 как SOCKS5 прокси.
Проверка 3: Настройки прокси браузера: Chrome и Edge используют системные настройки прокси. Firefox имеет собственные настройки прокси.
Проверка 4: Проблемы конкретных приложений: Некоторые приложения не поддерживают SOCKS5 (только HTTP прокси). Используйте адаптер SOCKS5-to-HTTP или переключитесь на TUN-режим.
Утечки DNS в SOCKS5-режиме¶
Симптомы: Тест утечки DNS показывает DNS провайдера, а не VPN DNS.
Исправление: Включите DNS прокси:
Настройте системный DNS на 127.0.0.1. См. Предотвращение утечки DNS для подробной настройки.
Проблема, специфичная для Chrome: Chrome по умолчанию использует собственный безопасный DNS-резолвер, который обходит системный DNS и VPN-туннель.
- На десктопе/Android: Перейдите в Настройки -> Конфиденциальность и безопасность -> Безопасность -> Использовать безопасный DNS и выключите.
- Очистите DNS-кэш Chrome: посетите chrome://net-internals/#dns и нажмите Clear host cache.
- На iOS: Принудительно закройте Chrome или очистите данные просмотра для сброса кэша.
Проблемы мультиплексированного режима¶
Симптомы: Некоторые приложения или сайты не загружаются, выходят по тайм-ауту или ведут себя нестабильно, хотя прокси, похоже, работает.
Исправление: Мультиплексированный режим разделяет один WebSocket туннель между всеми потоками. Если сайт или приложение несовместимо с таким поведением, временно переключитесь на устаревший (немультиплексированный) режим:
Важно: Устаревший режим открывает одно WebSocket-подключение на каждый TCP-поток. Загруженный браузер может легко исчерпать лимит max_connections_per_ip сервера. Если вы планируете регулярно использовать устаревший режим, попросите администратора сервера увеличить лимиты:
Низкая скорость подключения¶
Возможные причины:
- Высокая задержка: VPN-сервер находится далеко географически
- Перегрузка сервера: Слишком много подключений к одному серверу
- Ограничение полосы пропускания: Восходящий канал сервера насыщен
- Проблемы MTU: Фрагментация пакетов на каналах с высокой задержкой
Решения:
-
Уменьшите MTU в client.toml:
-
Попробуйте другой сервер ближе к вашему местоположению
- Проверьте нагрузку сервера:
uptime,htop - Отключите IPv6, если не нужен:
Проблемы iOS-приложения¶
"Failed to start VPN"¶
Проверка:
1. Адрес сервера включает wss:// (не https://)
2. Ключ идентификации сгенерирован (Настройки -> Идентичность)
3. Пакет предключей импортирован
4. Сервер запущен и доступен
Пересоберите библиотеку Rust:
Частые разрывы соединения¶
Возможные причины:
- Нестабильность сети (переключение Wi-Fi на сотовую связь)
- iOS приостанавливает приложение в фоне
- Профиль VPN отзывается
Решения: 1. Включите "Постоянный VPN" в настройках iOS -> VPN 2. Проверьте обновления iOS 3. Пересоберите и переустановите приложение
Не назначен IP¶
Причина: Пул DHCP сервера исчерпан.
Исправление: Увеличьте диапазон DHCP на сервере:
Или отключите неиспользуемых клиентов.
Проблемы split tunnel¶
Обходной трафик всё ещё идёт через VPN¶
Проверка:
[split_tunnel]
enabled = true # Должно быть true для работы обхода
builtin_bypass_countries = ["CN"]
Проверьте загрузку правил: Журналы клиента должны показывать правила обхода при запуске:
Проверьте таблицу маршрутизации:
Убедитесь, что обходные сети не находятся в таблице маршрутизации VPN.
Стриминговый сервис всё ещё блокирует¶
Причины: 1. Стриминговые сервисы могут использовать сигналы GPS/локали, а не только IP 2. Валюта оплаты и история аккаунта влияют на контент 3. IP CDN могут не совпадать с данными обхода по стране
Решения: 1. Очистите куки и кэш браузера/приложения 2. Используйте расширение браузера для подмены часового пояса и локали 3. Может потребоваться полный туннельный режим (без обхода)
Проблемы производительности¶
Высокая задержка через VPN¶
Проверьте задержку до сервера:
Если задержка высока даже до сервера, проблема в географическом расстоянии, а не в VPN.
Оптимизация: 1. Используйте сервер ближе к вашему местоположению 2. Уменьшите MTU при спутниковом или высокозадержечном канале:
Низкая пропускная способность¶
Проверка:
1. Полоса пропускания сервера: тест iperf3 до сервера
2. Оборудование клиента: шифрование нагружает процессор на старых устройствах
3. Сетевая перегрузка
Оптимизация:
[performance]
worker_threads = 4
crypto_worker_count = 4
recv_buffer_size = 262144
send_buffer_size = 262144
Получение дополнительной информации¶
Включите отладочное журналирование¶
Для подробных журналов клиента:
Для журналов сервера:
Проверьте системные журналы¶
# Журнал systemd
sudo journalctl -u rvpn-server -f
# Журналы ядра (для проблем с TUN-интерфейсом)
dmesg | grep tun
Проверьте сетевые пути¶
# Трассировка пути к серверу
traceroute your-server.com
# Трассировка пути от сервера к цели
# (на сервере) sudo tcpdump -i tun0 -n
Типичные сообщения в журнале¶
| Сообщение в журнале | Значение |
|---|---|
Listening on 0.0.0.0:443 |
Сервер успешно запущен |
WebSocket path: /api/v1/ws |
WebSocket эндпоинт настроен |
TUN mode enabled |
TUN-интерфейс сервера активен |
X3DH handshake complete |
Шифрование установлено |
NAT enabled |
Сервер будет маскарадировать трафик клиентов |
Relay completed |
Одна сессия ретрансляции данных завершена |
Too many connections |
Превышен лимит запросов |