OpenVPN вместо SSH туннелей
Эта заметка устарела, есть обновлённая версия.
Для общения с домашними машинами по SSH я обычно использую адреса в зоне local
(zeroconf), а для доступа извне нужно ходить на один из внешних IP адресов и нестандартные порты. В только что закончившемся отпуске решал эту проблему
добавлением в ~/.ssh/config
директив HostName
и Port
, которыми можно
указать, куда на самом деле следует ходить, когда просят подключиться к определённой машине, примерно так:
Host scud.local
HostName home.umonkey.net
Post 8022
Работает прозрачно, но только для SSH. Чтобы ходить на сайт через домашний прокси — а у тамошнего сотового оператора возникали проблемы при большом количестве соединений — нужно было отдельно запустить туннель, что не сложно, но всё равно какое-то лишнее действие.
Вернувшись, решил настроить OpenVPN. Решение более универсальное: получился общесистемный переключатель, ничего редактировать не надо. Доволен. Не осилил TLS сертификаты — настроил на использование фиксированного ключа. Подключаюсь из консоли алиасом, выполняющим команду:
sudo openvpn --cd ~/.openvpn --config ~/.openvpn/scud.conf
Однако в этом случае для работы VPN требуется отдельная вкладка терминала, в который является моим основным рабочим инструментом, и всё лишнее в нём меня напрягает. Гораздо удобнее подключаться через Network Manager, который и так уже висит в области уведомлений.
Подключение через апплет Network Manager
Когда в командной строке всё заработало, я импортировал конфигурационный файл в Network Manager. В выпадающем меню выбираю «Соединения VPN», там выбираю нужное мне. После небольшой паузы к иконке сетевого соединения добавляется небольшой замок: туннель успешно запущен.
Сюрпризом стало то, что теперь весь трафик пошёл через туннель. Чтобы этого не происходило, во вкладке «Параметры IPv4» настроек туннеля нужно нажать на кнопку «Маршруты» и поставить галку «Использовать это соединение только для ресурсов в его сети».
Однако если OpenVPN использует статический ключ, как в моём случае, ресурсами сети считаются только адреса в виртуальной сети 10.1.0.0, а не то, что в действительности находится по ту сторону туннеля. Чтобы всё заработало как нало, я добавил вручную маршрут «10.26.7.0» с маской «255.255.255.0», после этого всё заработало как надо.
Логи подключения можно найти в /var/log/messages
и /var/log/daemon.log
.
Следить за развитием событий можно через RSS ленту или почтовую рассылку.