Вопрос или проблема
Я собираюсь подключиться к VPS по SSH и подключиться к сервису WireGuard VPN на нем.
Но как только я запускаю клиент WireGuard, соединение SSH разрывается.
Конечно, я знаю, что это происходит из-за изменения правил маршрутизации и исправлял эти проблемы в случае OpenVPN, но сейчас это не работает.
Чем WireGuard отличается?
Это файл конфигурации клиента.
# TorGuard WireGuard Config
[Interface]
PrivateKey = uEHhYaGQy9eV5NP++IDlf/ffWrF8siKE0q79PYXHfWY=
ListenPort = 51820
DNS = 1.1.1.1
Address = 10.10.7.15/24
[Peer]
PublicKey = dHeUCCVg8iBJWTOGOY3KpqlSQhvK6+rug9p44hHUbS0=
AllowedIPs = 0.0.0.0/0
Endpoint = 46.107.90.26:1443
PersistentKeepalive = 25
Заранее спасибо.
Возможно, вы можете сделать это
route add -host <Ваш-Публичный-IP> gw <IP-адрес-Gateway-SSH-Сервера>
Таким образом, по крайней мере, ваш ПК может оставаться подключенным
Просто добавьте шаг PostUp/Down, чтобы всегда маршрутизировать трафик к вашему IP через основной интерфейс, а не через интерфейс WireGuard.
PostUp = ip route add <ваш публичный ip>/32 dev eth0
PostDown = ip route del <ваш публичный ip>/32 dev eth0
Ответ или решение
Проблема потери SSH-соединения при подключении к сервису WireGuard часто связана с изменением маршрутов, которые происходят в результате активации VPN. Так как WireGuard имеет особенности конфигурации маршрутизации, важно правильно настроить маршруты, чтобы восстановить доступ к вашему VPS через SSH.
Анализ проблемы
Когда вы подключаетесь к WireGuard, конфигурация маршрута по умолчанию может перенаправить весь ваш трафик через VPN-туннель (как это указано в вашем параметре AllowedIPs = 0.0.0.0/0
). Это приводит к тому, что ваш SSH-клиент теряет связь с VPS, так как запросы на IP-адрес VPS отправляются через WireGuard, что потенциально может вызвать разрыв соединения.
Что отличает WireGuard от OpenVPN?
WireGuard использует более простую архитектуру и минималистский подход к конфигурации по сравнению с OpenVPN. В WireGuard нет встроенного механизма для сохранения маршрутов для определённых IP-адресов, и из-за этого вы должны это явно прописать в конфигурации. Без дополнительных настроек WireGuard будет пытаться маршрутизировать весь исходящий трафик в туннеле, что не всегда желательно.
Решение проблемы
Есть несколько способов сохранить соединение SSH при использовании WireGuard. Один из наиболее популярных способов — это использование параметров PostUp
и PostDown
в конфигурации WireGuard для добавления и удаления маршрута к вашему публичному IP. Ниже приведен пример, как это можно реализовать:
-
Добавить маршруты в конфигурацию: Измените файл конфигурации клиента WireGuard, добавив следующие строки:
PostUp = ip route add <ваш публичный IP>/32 dev eth0 PostDown = ip route del <ваш публичный IP>/32 dev eth0
Замените
<ваш публичный IP>
на ваш реальный публичный IP-адрес. Параметрeth0
должен соответствовать интерфейсу вашей сети, по которому происходит связь. -
Перезапустить WireGuard: После внесения изменений, не забудьте перезапустить WireGuard, чтобы новые настройки вступили в силу.
Альтернативный метод
Вместо использования пост-настроек, вы также можете попробовать добавить маршрут вручную после подключения к VPN:
route add -host <ваш публичный IP> gw <IP-адрес вашего шлюза>
Этот метод обеспечит постоянное соединение, пока он активен, но может потребовать повторной настройки каждый раз при подключении к VPN.
Итог
Проблемы с потерей SSH-соединения при использовании WireGuard связаны с тем, что весь трафик перенаправляется через VPN. Правильная настройка маршрутов с использованием PostUp
и PostDown
, а также альтернативное добавление маршрутов вручную помогут вам сохранить доступность вашего SSH-соединения. Убедитесь, что вы тестируете конфигурацию и учитываете все возможные сценарии использования, чтобы минимизировать потенциальные простои.