Ok, więc szukałem w Internecie rozwiązań tego problemu bez odpowiedzi, które wydają mi się skuteczne. Mam nadzieję, że ktoś może mi pomóc. Próbuję tylko skonfigurować klienta OpenVPN.
Pracuję CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
i właśnie przełączyłem się na używanie systemd
. Przełączenie przebiegło wystarczająco sprawnie, ale teraz nie mogę zmusić mojego klienta OpenVPN do uruchomienia za pomocą systemd. Próbowałem wykonać te samouczki konfiguracji, ale nic nie działa.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- I spojrzał na kilka innych przewodników.
Mogę wywołać tunel z linii poleceń za pomocą openvpn /etc/openvpn/vpn.conf
. Wiem, że plik konfiguracyjny jest dobry, działał dobrze z sysvinit, więc nie jestem zaskoczony. Następnie próbuję po prostu zrobić status, w systemctl status [email protected]
wyniku czego:
$ sudo systemctl status [email protected]
[email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
Uświadomiłem sobie, że muszę przeprowadzić konfigurację usług. Chcę zostać poproszony o hasło, więc po tej instrukcji, aby utworzyć [email protected]
in /etc/systemd/system/
. Jednak ponowne uruchomienie usługi OpenVPN nadal nie monituje o hasło.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
Samouczki Fedory przechodzą przez etapy tworzenia dowiązań symbolicznych, ale nie tworzą żadnych plików .service w instrukcjach.
Jakiego kawałka mi brakuje? Czy muszę utworzyć usługę openvpn@vpn.? Jeśli tak, gdzie dokładnie go umieścić? Wydaje mi się, że nie powinno to być takie trudne, ale nie mogę znaleźć żadnego rozwiązania, które byłoby dla mnie odpowiednie. Z przyjemnością udzielę wszelkich potrzebnych informacji.
Rozwiązanie
-rw-r--r-- 1 root root 319 Aug 7 10:42 [email protected]
[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
[email protected] (END)
Symlink:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 [email protected] -> /lib/systemd/system/[email protected]
Monituj o hasło
Teraz wszystko działa, oprócz monitu o podanie hasła do połączenia. Próbowałem tego rozwiązania . Ulepszyłem nieco plik z góry i dodałem skrypt Expect, jak w przykładzie. Działa jak urok! Moje pliki są poniżej.
Zmodyfikowane linie z powyższego /lib/systemd/system/[email protected]
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
Spodziewaj się skryptu /lib/systemd/system/openvpn_pw.exp
. Wykonaj następujące czynności:
chmod +x
na skrypcie.- zostały
telnet
zainstalowane
Kod skryptu expect:
#!/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
Należy zauważyć, że powyższe rozwiązanie rejestruje hasło wprowadzone w postaci zwykłego tekstu w następujących logach /var/log/syslog
i/var/log/daemon.log
źródło
[email protected]
wygląda plik?journalctl -b -m
dowiedz się, dlaczego OpenVPN zakończył pracę. Jedno z tych miejsc powinno zawierać prawdziwe komunikaty o błędach. (Lub nawetjournalctl -b -m _EXE=/usr/sbin/openvpn
powinien podawać tylko wiadomości OpenVPN).Odpowiedzi:
Myślę, że konfiguracja Debian OpenVPN z systemd jest obecnie nieco zepsuta. Aby to działało na moich komputerach, musiałem:
Utwórz
Zadzwoniłem do mojego pliku/etc/systemd/system/[email protected]
(katalog) i umieść w nim nowy plik z tym:local-after-ifup.conf
. To musi się skończyć.conf
. (Jest to kawałek, który obecnie jest odrobinę zepsuty.)Utwórz plik w
To jest błąd Debiana 741938 (naprawiony w 2.3.3-1)./etc/tmpfiles.d
(nazwałem mójlocal-openvpn.conf
) z zawartością:Utwórz dowiązanie symboliczne w
multi-user.target.wants
(najłatwiejszy sposóbsystemctl enable openvpn@CONF_NAME.service
) Np. Jeśli masz/etc/openvpn/foo.conf
, skorzystasz[email protected]
.Jeśli masz także skrypt inicjujący SysV wyświetlany w systemied, wyłącz go. To jest błąd Debiana 700888 (naprawiony w 2.3.3-1).
UWAGA: 2.3.3-1 lub nowsza wersja nie jest jeszcze testowana , choć jest niestabilna.
źródło
/etc/init.d/openvpn
; systemd domyślnie uruchamia te tak, jak sysv init. Toopenvpn.service
ty masz; musisz go wyłączyć (systemctl disable
). Czy plik/lib/systemd/system/[email protected]
istnieje w twoim systemie?ln -s /lib/systemd/system/[email protected] /etc/systemd/system/multi-user.target.wants/[email protected]
/etc/init.d/openvpn script.
/etc/openvpn/
.Edit
/etc/default/openvpn
. Odkomentuj to:Uruchom
systemctl daemon-reload
.service openvpn start
.źródło
client.conf
, teraz z tym właśnie działa moja pojedyncza konfiguracja. Dzięki!Ten typ pliku jednostkowego jest usługą tworzenia instancji - więcej informacji można znaleźć tutaj
Poniżej znajduje się plik jednostkowy
openvpn
CentOS 7:i rezyduje jako
/usr/lib/systemd/system/openvpn@service
. Plik%i
w pliku jest zastępowany łańcuchem po nazwie@
w nazwie jednostki.Ponieważ plik konfiguracyjny jest w,
/etc/openvpn/myopenvpn.conf
usługa jest uruchamiana z:źródło
/usr/lib/systemd/user/
nie mam nic innego/usr/lib/systemd
./lib/systemd/system/
? Wydaje mi się, że mam oba w moim systemie z identyczną zawartością (i nie są to dowiązania symboliczne!)Musisz utworzyć plik usługi, włączając
openvpn@<configuration>.service
.Na przykład, jeśli plik konfiguracyjny to
/etc/openvpn/client.conf
, nazwa usługi to[email protected]
.Z Arch Wiki
źródło
/etc/openvpn/vpn.conf
systemctl start [email protected]
nie działa? To powinno zadziałać ...Openvpn @ .service bardzo ewoluował między Debianem 8 i 9. Oryginalny pakiet dla Jessie na przykład nie
systemctl reload openvpn@
. Aby to naprawić, wersja Stretch wprowadza do pliku systemd 10 nowych dyrektyw, w tymPIDFile=
ponowne ładowanie.Dla użytkowników stretch, ja proponuję jechać do backport, a jeśli nie można tego zrobić, przynajmniej uzyskać Systemd plik z https://packages.debian.org/jessie-backports/openvpn i ekstraktu
debian/[email protected]
do/etc/systemd/system/[email protected]
i cieszyć się lepiej funkcjonalność i bezpieczeństwo.źródło
Właściwym rozwiązaniem byłoby skorzystanie z systemd's
systemd-ask-password
/ „ Password Agents ”, które zapewniają wbudowaną metodę systemowego kierowania haseł / haseł do usług.Aby to zrobić, potrzebujesz OpenVPN 2.3.0 lub nowszej wersji .
źródło
Podczas nowej instalacji Jessie_8.0.0:
/etc/openvpn/cluster.conf
(plus*.key
i*.crt
) z wheezyAUTOSTART="all"
w/etc/default/openvpn
- Myślę, że to nie miało wpływu/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart [email protected]
Teraz tunel jest gotowy - zobaczę, co się stanie po ponownym uruchomieniu, ale w tej chwili nie mogę go ponownie uruchomić
źródło