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
() автор топика
Тема будет перемещена в архив .