Итак, я искал в Интернете решения этой проблемы, но ответы для меня, похоже, не работают. Надеюсь, кто-нибудь сможет мне помочь. Я только пытаюсь настроить клиент 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
journalctl -b -m
узнайте, почему OpenVPN завершился. Одно из этих мест должно содержать реальные сообщения об ошибках. (Или даже journalctl -b -m _EXE=/usr/sbin/openvpn
должен давать только сообщения OpenVPN).
openvpn@.service
файл?