LINUX.ORG.RU
ФорумAdmin

Добавление подключения OpenVPN в автозагрузку

 ,


0

1

Всем привет. Я арендовал VPS и поставил туда OpenVPN, и получил файлы *.ovpn для подключения.

при установке OpenVPN было сообщение, что сервис openvpn3-autoload.service отключен из автозагрузки. Как мне сделать так, чтобы при старте автоматически подключалось к OpenVPN серверу c заданный файлом конфигурации?

Хочу оформить его в виде скрипта, который автоматически ставить нужный файл в автозагрузку. Получилось вот такой скрипт, который не работает

#!/bin/bash
OVPN_FILE="client-0.ovpn"
sudo cp $OVPN_FILE /etc/openvpn3/autoload/openvpn3-autoload.ovpn

sudo cp /usr/lib/systemd/system/openvpn3-autoload.service /etc/openvpn3/autoload/openvpn3-autoload.service

sudo chmod 600 /usr/lib/systemd/system/openvpn3-autoload.service
sudo chmod 600 /etc/openvpn3/autoload/openvpn3-autoload.service

sudo systemctl daemon-reload
sudo systemctl enable openvpn3-autoload.service
sudo systemctl start openvpn3-autoload.service

Что именно не работает, мне не ясно, никаких сообщений при загрузке системы нет, как и нет соединения через OpenVPN.

при запросе статуса

sudo systemctl status openvpn3-autoload.service

получаю

● openvpn3-autoload.service - OpenVPN 3 Linux configuration auto loader and starter
     Loaded: loaded (/lib/systemd/system/openvpn3-autoload.service; enabled; vendor preset: enabled)
     Active: active (exited) since Fri 2023-05-05 14:25:24 UTC; 33min ago
    Process: 679 ExecStart=/usr/sbin/openvpn3-autoload --directory /etc/openvpn3/autoload (code=exited, status=0/SUCCESS)
   Main PID: 679 (code=exited, status=0/SUCCESS)

May 05 14:25:22 testmachine systemd[1]: Starting OpenVPN 3 Linux configuration auto loader and starter...
May 05 14:25:24 testmachine systemd[1]: Finished OpenVPN 3 Linux configuration auto loader and starter.

если запустить вручную

openvpn3 session-start --config /path/to/file.ovpn

то соединение устанавливается и IP меняется

В чём может быть проблема? Используемая операционная система - Ubuntu Server 20.04



Последнее исправление: S9 (всего исправлений: 2)
Ответ на: комментарий от anc

А оно у вас без «автоматически» хоть работает?

да, работает. если запустить

openvpn3 session-start --config /path/to/file.ovpn

то соединение устанавливается и IP меняется

P.S. Добавил эту инфу в первое сообщение

S9
() автор топика
Последнее исправление: S9 (всего исправлений: 2)
Ответ на: комментарий от symon2014

Есть VPS в Польше, там стоит OpenVPN. Есть сервер с виртуальными машинами, стоит дома (в России).

Есть инструкция на openvpn.net, но там не совсем мне всё понятно.

Но нашёл пост, где решали подобный моему вопрос, и вроде решили. Вот ссылка на пост в askubuntu.com, но у меня, похоже, не взлетело

S9
() автор топика
Ответ на: комментарий от symon2014

Нафига мартышкин труд ? Да и скрипт стрёмный

Таков мой путь, у меня так задумано: стрёмные скрипты на GitHub, я их клонирую на домашние виртуальные машины (их много, больше 100 штук), и пытаюсь автоматизировать всякую настройку. Просто по другому не умею.

что за директория /etc/openvpn3 ? Откуда 3 , какое 3 ?

Мне это не известно, но в ней директория autoload, а в ней лежит только openvpn3-autoload.service и client-0.ovpn. И оба файла я закинул.

файл openvpn3-autoload.service выглядит так и я его не правил:

[Unit]
Description=OpenVPN 3 Linux configuration auto loader and starter
After=network.target dbus.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/openvpn3-autoload --directory /etc/openvpn3/autoload
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Клиент openvpn устанавливал так:

sudo apt -y install ca-certificates wget net-tools gnupg ethtool apt-transport-https
sudo wget https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub
sudo apt-key add openvpn-repo-pkg-key.pub
sudo wget -O /etc/apt/sources.list.d/openvpn3.list https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-focal.list
sudo apt update 
sudo apt install openvpn3 -y
S9
() автор топика
Последнее исправление: S9 (всего исправлений: 2)
Ответ на: комментарий от S9

По второй ссылке в самом низу есть скриптик , сделанный как сервис. Если в нём ничего не напутано , то если его ставить в автозагрузку , то впн будет подниматься автоматом при запуске клиента. Сервер должен в это время уже работать.

symon2014 ★★
()
Ответ на: комментарий от S9

Мне это не известно, но в ней директория autoload, а в ней лежит только openvpn3-autoload.service и client-0.ovpn. И оба файла я закинул.

ну вот и ошибка. этого там не должно быть. Сервис видимо все подряд грузит, натыкается на это и отваливается

Anoxemian ★★★★★
()

https://github.com/OpenVPN/openvpn3-linux/blob/master/docs/openvpn3-autoload.md

The openvpn3-autoload feature is being deprecated in favour of the newer and better openvpn3-session@.service systemd service unit approach. Please migrate to this approach as soon as possible.

тут явно пишут, что надо использовать

а вообще не знаю где как, но в арче и убунте jammy стандартный пакет openvpn поставляется с systemd-сервисами openvpn-client@ и openvpn-server@. Я бы вообще не стал возиться с этим непонятно откуда поставленным openvpn3, чем меньше магии - тем лучше. Тем более на сервере.

Lrrr ★★★★★
()
Последнее исправление: Lrrr (всего исправлений: 1)
Ответ на: комментарий от Lrrr

Они рекомендуют автозагрузку выполнять через systemd, и написали мануал на GitHub Но у меня, не выходит. Как понимаю, надо ещё файлы куда-то копировать? Или openvpn3 config-import должен всё сам сделать как надо?

crypto@test:~/openvpn$ ls
test-client.ovpn
crypto@test:~/openvpn$ openvpn3 config-import --persistent --name test-session --config test-client.ovpn
Configuration imported.  Configuration path: /net/openvpn/v3/configuration/69e64adcx0d15x41aaxb8a2x5229690ff7e4
crypto@test:~/openvpn$ sudo systemctl start openvpn3-session@test-session
Job for openvpn3-session@test-session.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status openvpn3-session@test-session.service" and "journalctl -xe" for details.
crypto@test:~/openvpn$ systemctl status openvpn3-session@test-session.service
● openvpn3-session@test-session.service - OpenVPN 3 Linux - VPN session for test/session
     Loaded: loaded (/lib/systemd/system/openvpn3-session@.service; disabled; vendor preset: enabled)
     Active: failed (Result: protocol) since Fri 2023-05-05 19:27:35 UTC; 30s ago
       Docs: man:openvpn3-linux(7)
             man:openvpn3-systemd(7)
    Process: 4259 ExecStart=/usr/lib/x86_64-linux-gnu/openvpn3-linux/openvpn3-systemd --start test-session (code=exited, status=0/SUCCESS)
   Main PID: 4259 (code=exited, status=0/SUCCESS)

May 05 19:27:34 test systemd[1]: Starting OpenVPN 3 Linux - VPN session for test/session...
May 05 19:27:34 test openvpn3-systemd[4259]: /usr/lib/x86_64-linux-gnu/openvpn3-linux/openvpn3-systemd: ** ERROR **  No configuration found
May 05 19:27:35 test systemd[1]: openvpn3-session@test-session.service: Failed with result 'protocol'.
May 05 19:27:35 test systemd[1]: Failed to start OpenVPN 3 Linux - VPN session for test/session.
crypto@test:~/openvpn$

После перезагрузки виртуальной машины вывод systemd такой:

crypto@test:~$ systemctl status openvpn3-session@test-session.service
● openvpn3-session@test-session.service - OpenVPN 3 Linux - VPN session for test/session
     Loaded: loaded (/lib/systemd/system/openvpn3-session@.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:openvpn3-linux(7)
             man:openvpn3-systemd(7)
crypto@test:~$ 

сделал

systemctl status openvpn3-session@test-session

и получил опять это же

crypto@test:~$ systemctl status openvpn3-session@test-session
● openvpn3-session@test-session.service - OpenVPN 3 Linux - VPN session for test/session
     Loaded: loaded (/lib/systemd/system/openvpn3-session@.service; enabled; vendor preset: enabled)
     Active: failed (Result: protocol) since Fri 2023-05-05 19:36:06 UTC; 19s ago
       Docs: man:openvpn3-linux(7)
             man:openvpn3-systemd(7)
    Process: 639 ExecStart=/usr/lib/x86_64-linux-gnu/openvpn3-linux/openvpn3-systemd --start test-session (code=exited, status=0/SUCCESS)
   Main PID: 639 (code=exited, status=0/SUCCESS)

May 05 19:36:03 test systemd[1]: Starting OpenVPN 3 Linux - VPN session for test/session...
May 05 19:36:06 test openvpn3-systemd[639]: /usr/lib/x86_64-linux-gnu/openvpn3-linux/openvpn3-systemd: ** ERROR **  No configuration found
May 05 19:36:06 test systemd[1]: openvpn3-session@test-session.service: Failed with result 'protocol'.
May 05 19:36:06 test systemd[1]: Failed to start OpenVPN 3 Linux - VPN session for test/session.
crypto@test:~$
S9
() автор топика
Последнее исправление: S9 (всего исправлений: 2)
Ответ на: комментарий от Lrrr

судя по мануалу у них config-import надо от рута делать, а у тебя он от обычного юзера

Нашёл на GitHub Issues решение моей проблемы:

если config-import не от рута, то надо ещё это сделать:

b) Via systemd: If you imported the configuration file as a non-root user, run following command first: openvpn3 config-acl –config CONFIG_NAME –grant root –transfer-owner-session true –show.

И тогда всё заработало, так как хотел. При старте системы поднимается соединение OpenVPN.

Это победа) Спасибо всем за помощь, теперь радостно пойду править свои стрёмные скрипты)

S9
() автор топика