Вопрос или проблема
У меня возникли проблемы с подключением по SSH к виртуальной машине, работающей на другом ПК с Proxmox, из внешней сети через VPN-туннель.
Вот несколько подробностей:
- Я подключаюсь через беспроводную точку доступа.
- Я запускаю OpenVPN на шлюзе. Подсеть VPN — 192.168.8.X
- За шлюзом конечная точка находится по адресу 192.168.45.X.
- Маска подсети для обеих сетей — 255.255.0.0.
- VPN имеет правило пересылки для маршрутизации трафика с 192.168.8.0 на 192.168.45.0.
- Я могу достигать других устройств за шлюзом и успешно подключаться к ним по SSH.
- Я могу пинговать целевое устройство.
- TCP дамп на целевом устройстве показывает, что SSH-запросы приходят.
- ufw отключён, а iptables настроены на ACCEPT для INPUT, OUTPUT, FORWARD.
- ОС — Ubuntu Server 22.02
Странно, но я могу подключаться по SSH с точки доступа к целевому устройству, но не с устройства, подключенного к точке доступа.
Ответ или решение
Проблема, с которой вы сталкиваетесь при попытке подключиться по SSH к виртуальной машине за шлюзом через VPN-туннель, может быть связана с несколькими факторами. Ниже приведены шаги, которые помогут вам диагностировать и решить эту проблему.
-
Проверка маршрутизации: Убедитесь, что на вашем клиентском устройстве, подключенном к точке доступа, правильно настроены маршруты для доступа к сети 192.168.45.X. Используйте команду
route
илиip route
для проверки. Необходимо убедиться, что маршрут к сети 192.168.45.0 через VPN установлен. -
Настройки OpenVPN: Проверьте настройки конфигурации OpenVPN на шлюзе. Убедитесь, что директивы
push "route 192.168.45.0 255.255.0.0"
иredirect-gateway
присутствуют и правильно настроены. Это даст возможность клиентам VPN маршрутизировать весь трафик через шлюз. -
Firewall на шлюзе: Несмотря на то, что вы упомянули, что iptables настроен на ACCEPT, стоит убедиться, что правила не блокируют трафик, пришедший из сети 192.168.8.0 в 192.168.45.0. Проверьте все возможные цепочки (INPUT, FORWARD, OUTPUT) и уберите потенциальные правила, которые могут блокировать данный трафик.
-
Проверка SSH-доступа: Убедитесь, что служба SSH на целевом устройстве действительно слушает на порту 22. Для этого выполните
sudo netstat -tuln | grep :22
и убедитесь, что она настроена на прослушивание на всех интерфейсах (0.0.0.0) или на конкретном адресе, который вы ожидаете. -
Логи SSH: Проверьте логи SSH на целевом устройстве для получения дополнительной информации о том, почему соединение отклоняется. Логи можно найти в
/var/log/auth.log
(или аналогичном), и они могут дать подсказки о причине. -
Проблема с MTU: Иногда проблемы с MTU могут вызывать сбои соединений VPN. Попробуйте установить MTU на VPN-клиенте на 1400 или 1300 (если он больше) и проверьте, решается ли проблема.
-
Тестирование подключения: Попробуйте использовать другой SSH-клиент на вашем устройстве (например, PuTTY или другой) для тестирования подключения, а также проверьте, нет ли конфликта программного обеспечения (например, установленных брандмауэров или антивирусных программ), которые могут блокировать SSH-запросы.
Если ни одно из вышеуказанных предложений не помогло, попробуйте временно активировать tcpdump
на шлюзе и целевом устройстве, чтобы отследить, где происходит сбой в соединении, и захватить пакеты для дальнейшего анализа.
Надеюсь, эти шаги помогут вам найти и устранить проблему с SSH-доступом к вашей виртуальной машине через VPN. Если у вас будут дополнительные вопросы, не стесняйтесь задавать их!