Вопрос или проблема
У меня есть Raspberry Pi, подключенный к моей локальной сети через Ethernet-кабель, я получаю к нему доступ с помощью putty через свой ноутбук, подключенный к той же сети, по локальному адресу 192.168.x.x порт 22.
Теперь я хотел бы подключить свой Raspberry Pi к VPN (в данном случае к NordVPN), но, очевидно, после ввода команды nordvpn connect
соединение с putty к Raspberry Pi теряется, думаю, потому что пакеты, выходящие из Raspberry Pi в этот момент, перенаправляются на сервера NordVPN, а не на мой компьютер.
Так есть ли способ правильно подключиться к моему Raspberry Pi в моей сети, пока VPN активен на Raspberry?
Тот же вопрос задается здесь: https://unix.stackexchange.com/questions/365285/how-to-allow-ssh-into-terminal-after-connecting-to-vpn-server-using-nordvpn-serv. Решение заключалось в том, чтобы выполнить команду, позволяющую пакетам ssh обходить соединение VPN.
ip rule add from x.x.x.x table 128
ip route add table 128 to y.y.y.y/y dev eth0
ip route add table 128 default via z.z.z.z
Где x.x.x.x — это ваш публичный IP-адрес сервера, y.y.y.y/y должен быть подсетью вашего публичного IP-адреса сервера, eth0 должен быть вашим публичным Ethernet-интерфейсом сервера, а z.z.z.z должен быть шлюзом по умолчанию.
Ответ или решение
Для подключения к Raspberry Pi через SSH при активном VPN (в данном случае NordVPN), необходимо продумать несколько аспектов, которые помогут избежать потери соединения. Это связано с тем, что после подключения к VPN весь трафик, включая SSH, начинает маршрутизироваться через VPN-сервер, что может привести к отключению от устройства. Ниже приведены подробные инструкции, как обойти эту проблему.
Подготовка к подключению
-
Установите NordVPN на вашем Raspberry Pi и убедитесь, что он корректно работает. Проверьте вашу текущую конфигурацию, используя команду:
nordvpn status
-
Определите локальный IP-адрес Raspberry Pi, который вы используете для подключения (например, 192.168.x.x) и его сетевой интерфейс (обычно это
eth0
илиwlan0
). -
Убедитесь, что вы знаете внешний IP-адрес вашего Raspberry Pi, так как он будет использоваться для маршрутизации.
Отключение SSH от VPN
Для того чтобы ваши SSH-запросы обходили VPN, вам нужно настроить маршруты и правила. Это достигается довольно просто с помощью следующих команд:
-
Создайте специальную таблицу маршрутизации:
sudo ip rule add from YOUR_PUBLIC_IP table 128
Замените
YOUR_PUBLIC_IP
на ваш реальный внешний IP-адрес Raspberry Pi. -
Добавьте маршруты в эту таблицу:
Для определения необходимых параметров можно использовать командуip route
илиip addr
.- Определите подсеть вашего внешнего IP:
ip route show | grep -w YOUR_PUBLIC_IP
- Затем добавьте маршрут:
sudo ip route add table 128 to YOUR_SUBNET dev eth0
Замените
YOUR_SUBNET
соответствующей подсетью.
- Определите подсеть вашего внешнего IP:
-
Укажите основной шлюз:
sudo ip route add table 128 default via YOUR_DEFAULT_GATEWAY
Опять же,
YOUR_DEFAULT_GATEWAY
должен быть вашим основным шлюзом, который можно определить через командуip route
.
Применение настроек
Эти настройки будут сбрасываться при перезагрузке, поэтому для их постоянного применения рекомендуется добавить их в файл конфигурации сети или использовать скрипт при старте системы.
-
Вы можете создать отдельный скрипт, например,
vpn_ssh_bypass.sh
и добавить его в автозагрузку. -
Либо вставьте команды в файл
/etc/network/interfaces
или вrc.local
.
Тестирование соединения
После выполнения вышеуказанных шагов попробуйте подключиться к вашему Raspberry Pi через SSH, используя Putty с локального компьютера под управлением вашей сети:
ssh pi@192.168.x.x
Если всё настроено правильно, вы сможете подключиться к вашему Raspberry Pi даже с активным VPN-соединением.
Заключение
Использование VPN с Raspberry Pi не должно ограничивать вашу возможность подключения к устройству. Следуя приведённым инструкциям по маршрутизации и правильной конфигурации сети, вы сможете обеспечить стабильное и безопасное соединение через SSH.