Вопрос или проблема
Я пытаюсь создать решение OpenVPN на своем виртуальном сервере Ubuntu 20.04. Я нашел, что есть два клиента, которые могут подключаться к серверу OpenVPN (работающему в pfSense): один – network-manager-gnome, а другой – openvpn3.
Для network-manager-gnome я могу импортировать файл .ovpn, но не могу подключиться к серверу OpenVPN с его помощью. Затем я попробовал openvpn3, который требует командной строки для работы, и он смог подключиться к серверу OpenVPN. Я также обнаружил, что openvpn3-autoload можно использовать для подключения к серверу OpenVPN одной командой.
Однако я хочу создать автоматическое решение, чтобы рабочий стол мог подключаться к серверу OpenVPN при запуске без каких-либо ручных действий. Я хотел бы узнать, есть ли решение для этой задачи.
Спасибо.
Нашел решение.
Хотя я прочитал и следовал руководству (https://openvpn.net/openvpn-3-linux-and-auth-user-pass/), я забыл выполнить systemctl daemon-reload
. Без этой команды systemd не знает, что существует новый файл службы.
Сначала нам нужно следовать руководству, чтобы создать директорию, скопировать файлы client.ovpn и создать файлы openvpn_profile.autoload для службы openvpn3-autoload.
Не забудьте изменить права доступа:
chmod 600 $HOME/.openvpn3/autoload/openvpn_profile.ovpn && chmod 600 $HOME/.openvpn3/autoload/openvpn_profile.autoload
Затем скопируйте файл службы:
sudo cp /usr/lib/systemd/system/openvpn3-autoload.service /usr/lib/systemd/system/openvpn3-autoload.service
И отредактируйте файл службы, чтобы добавить пользователя и изменить директорию конфигурации по умолчанию:
sudo vim /usr/lib/systemd/system/openvpn3-autoload.service
[Unit]
Description=OpenVPN 3 Linux configuration auto loader and starter
After=network.target dbus.service
[Service]
Type=oneshot
User=myusername
ExecStart=/usr/sbin/openvpn3-autoload --directory /home/myusername/.openvpn3/autoload
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Перезагрузите демон, включите и запустите службу:
systemctl daemon-reload
systemctl enable openvpn3-autoload.service
systemctl start openvpn3-autoload.service
Перезагрузите виртуальную машину и подтвердите результат.
Существует более простой способ сделать это, и он изложен в учебном пособии “Учебник: Узнайте, как установить и управлять клиентом OpenVPN 3“.
После установки openvpn3
создание службы для автоматического подключения к вашей VPN при загрузке выглядит следующим образом:
1. Импортируйте конфигурационный файл
openvpn3 config-import --config /file/to/profile.ovpn --name CustomNameForVPN --persistent
Это импортирует ваш .opvn
конфигурационный файл в менеджер конфигураций openvpn3, сохраняя его под пользовательским именем CustomNameForVPN. Чтобы гарантировать, что конфигурационный файл сохраняется после перезагрузки, используйте флаг --persistent
.
2. Предоставьте пользователю root
доступ к этому конфигурационному файлу
openvpn3 config-acl --show --lock-down true --grant root --config CustomNameForVPN
Цитируя из учебного пособия, указанного выше:
Это дает пользователю root доступ к импортированному профилю конфигурации CloudConnexa. Аргумент –lock-down true является необязательным, но ограничивает пользователя root в извлечении содержимого профиля конфигурации с помощью команд openvpn3 (или через D-Bus API).
Добавив –transfer-owner-session true к вышеуказанной команде, текущий пользователь, выполняющий эту команду (владелец профиля), также становится «владельцем VPN-сессии», если root является пользователем, который начинает VPN-сессию (обычно через systemd [email protected]).
3. Включите службу
sudo systemctl enable --now [email protected]
Это включает службу, чтобы она запускалась при загрузке, а флаг --now
указывает на то, что она должна запуститься немедленно после выполнения этой команды.
Управление сессией
Чтобы проверить статус службы:
systemctl status [email protected]
Чтобы перечислить активные VPN-сессии:
openvpn3 sessions-list
Чтобы перечислить конфигурации:
openvpn3 configs-list
Чтобы перечислить статистику для VPN-сессии:
openvpn3 session-stats --config CustomNameForVPN
Одно последнее замечание: если вы не включили --transfer-owner-session
, то вышеуказанные команды придется выполнять с sudo
. По данным учебного пособия:
Если ACL профиля конфигурации имеет включенный –transfer-owner-session, конечный пользователь также сможет полностью управлять VPN-сессией без необходимости в привилегиях root.
Ответ или решение
Для автоматического подключения OpenVPN при запуске системы на Ubuntu 20.04 с использованием openvpn3-autoload, выполните следующие шаги:
Шаг 1: Установка openvpn3
Если openvpn3 ещё не установлен, выполните установку:
sudo apt update
sudo apt install openvpn3
Шаг 2: Импорт конфигурационного файла
Импортируйте ваш .ovpn
файл в OpenVPN 3 и задайте ему имя:
openvpn3 config-import --config /путь/к/вашему/profile.ovpn --name CustomNameForVPN --persistent
Флаг --persistent
позволит сохранить конфигурацию после перезагрузки.
Шаг 3: Настройка прав доступа
Чтобы обеспечить доступ к конфигурационному файлу для пользователя root
, выполните следующую команду:
openvpn3 config-acl --show --lock-down true --grant root --config CustomNameForVPN
Флаг --lock-down true
не обязателен, но его стоит использовать, если вы хотите ограничить доступ к содержимому профиля.
Шаг 4: Создание файла службы systemd
Создайте новый системный файл службы для авто-загрузки OpenVPN. Откройте текстовый редактор и создайте файл:
sudo vim /etc/systemd/system/openvpn3-autoload.service
Заполните его следующим содержимым, заменив myusername
на ваше имя пользователя:
[Unit]
Description=OpenVPN 3 Linux auto-loader
After=network.target
[Service]
Type=oneshot
User=myusername
ExecStart=/usr/sbin/openvpn3-autoload
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Шаг 5: Перезагрузка демона systemd
После создания или изменения системного файла службы, обновите системный демон:
sudo systemctl daemon-reload
Шаг 6: Включение и запуск службы
Теперь включите службу, чтобы она запускалась автоматически при старте системы:
sudo systemctl enable --now openvpn3-autoload.service
Шаг 7: Проверка работы
Перезагрузите вашу виртуальную машину и проверьте статус службы:
sudo systemctl status openvpn3-autoload.service
Также вы можете посмотреть активные сессии VPN с помощью:
openvpn3 sessions-list
Заключение
С помощью описанных шагов вы успешно настроили автоматическое подключение к OpenVPN при запуске системы на Ubuntu 20.04 с использованием openvpn3-autoload. Не забудьте проверить, работает ли соединение VPN после перезагрузки и при необходимости выполните отладку, используя команды openvpn3
для просмотра статуса и конфигурации.