Итак, я искал в Интернете решения этой проблемы, но ответы для меня, похоже, не работают. Надеюсь, кто-нибудь сможет мне помочь. Я только пытаюсь настроить клиент OpenVPN.
Я бегу, CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
и я просто переключился на использованиеsystemd
. Переключение прошло достаточно гладко, но теперь я не могу заставить свой клиент OpenVPN запускаться с использованием systemd. Я пытался следовать этим учебникам по настройке, но ничего не работает.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- И посмотрел на кучу других разных руководств.
Я могу вызвать туннель из командной строки openvpn /etc/openvpn/vpn.conf
. Так что я знаю, что файл конфигурации хорош, он работал с sysvinit просто отлично, поэтому я не удивлен. Затем я пытаюсь просто сделать статус с systemctl status openvpn@vpn.service
результатом:
$ sudo systemctl status openvpn@vpn.service
openvpn@vpn.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
Я понял, что мне нужно сделать некоторые настройки для служб. Я хочу быть предложено ввести пароль , так что я после этого руководства для создания openvpn@.service
ин /etc/systemd/system/
. Но перезапуск службы OpenVPN по-прежнему не запрашивает пароль.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
В учебниках по Fedora описаны этапы создания символических ссылок, но не следует создавать файлы .service в пошаговых руководствах.
Какой кусок мне не хватает? Нужно ли создавать openvpn@vpn.service? Если так, то где именно я это размещу? Я чувствую, что это не должно быть таким сложным, но я не могу найти решение, которое работает для меня. Я рад предоставить любую дополнительную информацию, которая необходима.
Решение
-rw-r--r-- 1 root root 319 Aug 7 10:42 openvpn@.service
[Unit]
Description=OpenVPN connection to %i
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
[Install]
WantedBy=multi-user.target
openvpn@.service (END)
Symlink:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 openvpn@vpn.service -> /lib/systemd/system/openvpn@.service
Запрашивать пароль
Теперь все работает, за исключением запроса пароля для подключения. Я пытался это решение . Я немного подправил файл сверху и добавил скрипт Expect. как в примере. Работать как шарм! Мои файлы ниже.
Модифицированные строки из выше /lib/systemd/system/openvpn@.service
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --management localhost 5559 --management-query-passwords --management-forget-disconnect --config /etc/openvpn/%i.conf
ExecStartPost=/usr/bin/expect /lib/systemd/system/openvpn_pw.exp
Ожидайте сценарий /lib/systemd/system/openvpn_pw.exp
. Обязательно сделайте следующее:
chmod +x
по сценарию.- Были
telnet
установлены
Код ожидаемого скрипта:
#!/usr/bin/expect
set pass [exec /bin/systemd-ask-password "Please insert Private Key password: "]
spawn telnet 127.0.0.1 5559
expect "Enter Private Key Password:"
send "password 'Private Key' $pass\r"
expect "SUCCESS: 'Private Key' password entered, but not yet verified"
send "exit\r"
expect eof
Следует отметить, что вышеуказанное решение действительно регистрирует ваш пароль, введенный в виде открытого текста, в следующих журналах /var/log/syslog
и/var/log/daemon.log
openvpn@.service
файл?journalctl -b -m
узнайте, почему OpenVPN завершился. Одно из этих мест должно содержать реальные сообщения об ошибках. (Или дажеjournalctl -b -m _EXE=/usr/sbin/openvpn
должен давать только сообщения OpenVPN).Ответы:
Я думаю, что установка Debian OpenVPN с systemd в настоящее время немного сломана. Чтобы заставить его работать на моих машинах, мне нужно было:
Создайте
Я назвал свой файл/etc/systemd/system/openvpn@.service.d
(каталог) и поместите в него новый файл со следующим:local-after-ifup.conf
. Это должно закончиться.conf
. (Это бит, который сейчас немного сломан.)Создайте файл в
Это ошибка Debian 741938 (исправлена в 2.3.3-1)./etc/tmpfiles.d
(я назвал мойlocal-openvpn.conf
) с содержанием:Создайте символическую ссылку в
multi-user.target.wants
(самый простой способsystemctl enable openvpn@CONF_NAME.service
) Например, если у вас есть/etc/openvpn/foo.conf
, вы бы использовалиopenvpn@foo.service
.Если у вас также есть сценарий инициализации SysV в systemd, отключите его. Это ошибка Debian 700888 (исправлена в 2.3.3-1).
ПРИМЕЧАНИЕ: 2.3.3-1 или более поздняя версия еще не в тестировании , хотя она нестабильна.
источник
/etc/init.d/openvpn
; systemd по умолчанию запускает те же функции, что и sysv init. Это уopenvpn.service
вас есть; Вы должны отключить его (systemctl disable
). Существует ли файл/lib/systemd/system/openvpn@.service
в вашей системе?ln -s /lib/systemd/system/openvpn@.service /etc/systemd/system/multi-user.target.wants/openvpn@vpn.service
/etc/init.d/openvpn script.
/etc/openvpn/
.Редактировать
/etc/default/openvpn
. Раскомментируйте это:Беги
systemctl daemon-reload
.service openvpn start
.источник
client.conf
, теперь с этим просто запускается мой единственный конфиг. Благодарность!Этот тип файла модуля является созданной службой - более подробная информация доступна здесь
Ниже приведен файл модуля для
openvpn
CentOS 7:и это проживает как
/usr/lib/systemd/system/openvpn@service
. Символ%i
в файле заменяется строкой после@
имени устройства.Поскольку файл конфигурации находится в
/etc/openvpn/myopenvpn.conf
то время, служба запускается с:источник
/usr/lib/systemd/user/
Ничего другого на/usr/lib/systemd
уровне у меня нет ./lib/systemd/system/
? Кажется, в моей системе есть оба идентичных содержимого (и они не являются символическими ссылками!).Вам нужно создать сервисный файл, включив
openvpn@<configuration>.service
.Например, если файл конфигурации -
/etc/openvpn/client.conf
имя службыopenvpn@client.service
.Из Arch Wiki
источник
/etc/openvpn/vpn.conf
systemctl start openvpn@vpn.service
не работает? Это должно сработать ...Openvpn @ .service значительно развился между Debian 8 и 9. Например, оригинальный пакет для Jessie не работает
systemctl reload openvpn@
. Чтобы исправить это, версия Stretch вводит 10 новых директив в systemd-файл, включаяPIDFile=
повторную загрузку.Для пользователей Stretch, я предлагаю идти на Backport, и если нет возможности сделать это, по крайней мере , получить Systemd-файл из https://packages.debian.org/jessie-backports/openvpn и экстракта
debian/openvpn@.service
в/etc/systemd/system/openvpn@.service
и наслаждаться лучше функциональность и безопасность.источник
Правильным решением было бы использовать systemd
systemd-ask-password
/ « Password Agents », который предоставляет системный встроенный способ направлять пароли / парольные фразы к сервисам.Вам понадобится OpenVPN 2.3.0 или новее, чтобы сделать это.
источник
На новой установке Jessie_8.0.0 я сделал:
/etc/openvpn/cluster.conf
(плюс*.key
и*.crt
) файлы из wheezyAUTOSTART="all"
в/etc/default/openvpn
- я думаю, что это не имело никакого эффекта/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart openvpn@cluster.service
Теперь туннель запущен - я посмотрю, что произойдет после перезагрузки, но я не могу перезагрузиться в этот момент
источник