OpenVPN'i systemd ile kullanma


24

Tamam, bu yüzden bu soruna çözüm bulmak için web’de arama yapıyorum. Umarım biri bana yardım edebilir. Sadece OpenVPN İstemcisini yapılandırmaya çalışıyorum.

Koştum CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linuxve kullanmaya başladım systemd. Geçiş yeterince sorunsuz geçti ama şimdi OpenVPN istemcisimin sistemi kullanarak gelmesini sağlayamıyorum. Bu yapılandırma eğitimlerini izlemeye çalıştım ama hiçbir şey işe yaramadı.

Tüneli komut satırından ile getirebilirim openvpn /etc/openvpn/vpn.conf. Yani config dosyasının iyi olduğunu biliyorum, sysvinit ile çalışıyordu, bu yüzden şaşırmadım. Sonra sadece systemctl status openvpn@vpn.servicesonuçlanan bir durum yapmaya çalışıyorum :

$ sudo systemctl status openvpn@vpn.service
  openvpn@vpn.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)

Servisler için biraz kurulum yapmam gerektiğini anladım. Bir şifre sorulmasını istiyorum, bu yüzden bir openvpn@.servicegiriş yapmak için bu kılavuzu takip ettim /etc/systemd/system/. Ancak OpenVPN servisini yeniden başlatmak hala bir şifre sormuyor.

$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.

Fedora dersleri sembolik linkler oluşturma adımlarından geçiyor, ancak gezintilerde .service dosyalarından herhangi birini yaratmayın.

Hangi parçayı özlüyorum? Bir openvpn@vpn.service oluşturmam gerekiyor mu? Eğer öyleyse, tam olarak nereye yerleştireceğim? Bu kadar zor olmamalı gibi hissediyorum ama benim için işe yarayan bir çözüm bulamıyorum. İhtiyacınız olan daha fazla bilgi vermekten mutluyum.

Çözüm

-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)

Simgesel:

lrwxrwxrwx  1 root root   36 Aug  7 10:47 openvpn@vpn.service -> /lib/systemd/system/openvpn@.service

Şifre İstemi

Bağlanmak için bir parola istenmesi dışında her şey çalışıyor. Bu çözümü denedim . Dosyayı biraz yukarıdan çimdikledim ve örnekteki gibi bir Expect betiği ekledim . Bir cazibe gibi çalışmak! Dosyalarım aşağıda.

Yukarıdakilerden değiştirilmiş çizgiler /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

Senaryoyu bekle /lib/systemd/system/openvpn_pw.exp. Aşağıdakileri yaptığınızdan emin olun:

  • chmod +x senaryoda.
  • telnetyüklü

Beklenti betiğinin kodu:

#!/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

Yukarıda çözüm aşağıdaki günlüklerinde düz metin olarak girilen şifrenizi log olmadığını belirtmek gerekir /var/log/syslogve/var/log/daemon.log


openvpn@.serviceDosya nasıl görünüyor?
Cristian Ciupitu


/Var/log/{syslog.daemon.log} dosyasına bakın ve journalctl -b -mOpenVPN'in neden çıktığını bulmak için. Bu yerlerden biri gerçek hata mesajlarını içermelidir. (Ya da journalctl -b -m _EXE=/usr/sbin/openvpnsadece OpenVPN mesajları vermelisiniz).
derobert

Evet, oraya gidiyordum. Şifre sorununu vuruyoruz. Bunun için bu çözümü deneyeceğim: bbs.archlinux.org/viewtopic.php?id=150440 Tüm yardımlarınız için teşekkürler!
RoraΖ

Yanıtlar:


11

Ben sistemli Debian OpenVPN kurulumunun şu anda biraz bozulduğunu düşünüyorum. Makinelerim üzerinde çalışabilmesi için:

  1. Yaratın /etc/systemd/system/openvpn@.service.d(dizin) ve içine bununla yeni bir dosya yerleştirin:

    [Birim]
    = Networking.service gerektirir
    = Networking.service sonra
    Dosyamı aradım local-after-ifup.conf. İle bitmesi gerekiyor .conf. (Bu şu anda biraz kırık olan bit.)

  2. İçinde bir dosya oluşturun /etc/tmpfiles.d(benimki adıyla local-openvpn.conf):

    # Tip Yolu Modu UID GID Yaş Argümanı
    d / run / openvpn 0755 kök kökü - -
    Bu Debian bug 741938 ( 2.3.3-1'de düzeltildi).

  3. İçine bir sembolik oluşturun multi-user.target.wants(kolay yoludur systemctl enable openvpn@CONF_NAME.service) Örneğin, varsa /etc/openvpn/foo.conf, kullanmak istiyorum openvpn@foo.service.

  4. Ayrıca systemd'de SysV init betiği de varsa, devre dışı bırakın. Bu Debian bug 700888’dir ( 2.3.3-1’de düzeltilmiştir).

NOT: 2.3.3-1 veya üstü kararsız olmasına rağmen henüz test aşamasında değildir .


systemctl enable, böyle bir dosya veya dizin olmadığını söyleyerek hala başarısız oluyor. Systemd-initctl olmadığı sürece / lib / systemd içinde sysv init komut dosyası göremiyorum?
RoraΖ

@raz SysV betiği /etc/init.d/openvpn; varsayılan olarak systemd, sysv init in çalışacağı gibi çalışır. Bu openvpn.servicesenin; Bunu devre dışı bırakmanız gerekir ( systemctl disable). Dosya /lib/systemd/system/openvpn@.servicesisteminizde var mı?
derobert

@raz Eğer bu dosyaya sahipseniz bir kılavuzu deneyebilirsinizln -s /lib/systemd/system/openvpn@.service /etc/systemd/system/multi-user.target.wants/openvpn@vpn.service
derobert

O dosya bende yok ama oluşturabileceğimden eminim. Ben devre dışı /etc/init.d/openvpn script.
bıraktım

@raz CrunchBang onunla daha yeni OpenVPN paketinin bir backport varsa emin değilim, ama eğer, içinden o senaryoyu yakalayabilir sources.debian.net/src/openvpn/2.3.3-1/debian/...
derobert

8
  1. Tüm openvpn * .conf dosyalarını içine yerleştirin /etc/openvpn/.
  2. Düzen /etc/default/openvpn. Uncomment this:

    AUTOSTART="all"
    
  3. Run systemctl daemon-reload.

  4. Run service openvpn start.

Bunu bir çözüm olarak kullandıklarını düşünüyorum, çünkü şimdi debian 9'da daha da kötüleştiğinde, çok aptalca bir hata meydana gelirse openvpn yeniden başlamıyor ... Birisi bir çözüm veya geçici çözüm biliyorsa, openvpn olup olmadığını doğrulamak için bir komut dosyası yazıyorum hala çalışıyor!
Luciano Andress Martini

Bu mükemmeldi. bariz olarak adlandırdığım halde başlayacak ve duracaktı client.conf, şimdi bununla benim tek yapılandırma sadece çalışıyor. Teşekkürler!
Mitchell Currie

6

Bu tür birim dosyası yetkili servisdir - burada daha fazla ayrıntı mevcuttur

openvpnCentOS 7'deki birim dosya şudur :

[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=syslog.target network.target

[Service]
PrivateTmp=true
Type=forking
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf

[Install]
WantedBy=multi-user.target

ve olarak bulunur /usr/lib/systemd/system/openvpn@service. %iDosyada sonra dizeyle değiştirilir @birim adına.

Config dosyası şu anda /etc/openvpn/myopenvpn.confolduğu gibi servis şu şekilde başlar:

systemctl start openvpn@myopenvpn.service

Ben sadece seviyede /usr/lib/systemd/user/ başka bir şeyim yok /usr/lib/systemd.
RoraΖ

Ne hakkında /lib/systemd/system/? Her ikisinde de sistemimde aynı içerik var gibi görünüyor (ve onlar sembolik değil!).
garethTheRed

Bu dosyayı yeni ekledim, yayınımı her şeyle güncelledim.
RoraΖ

5

Etkinleştirerek servis dosyasını oluşturmanız gerekir openvpn@<configuration>.service.

Örneğin, eğer konfigürasyon dosyası ise /etc/openvpn/client.confservis adıdır openvpn@client.service.

Arch Wiki'den


$ sudo systemctl openvpn@vpn.service [sudo] şifresini etkin kılar: kullanıcı için yöntem çağrısı
yapılamadı

Yapılandırma dosyanızın adı "vpn"?
Karlo

Evet,/etc/openvpn/vpn.conf
RoraΖ

systemctl start openvpn@vpn.serviceYa da çalışmıyor mu ? Bu çalışması gerekir ...
Karlo

1
Bu benim için Raspbian GNU / Linux 8 (Debian Jessie) 'da çalışıyor. Teşekkürler!
neuhaus

1

Openvpn @ .service, Debian 8 ve 9 arasında büyük ölçüde gelişti systemctl reload openvpn@. Bunları düzeltmek için, Stretch sürümü PIDFile=yeniden yükleme çalışmasını da içeren sistemd dosyasında 10 yeni yönerge sunar .

Stretch kullanıcıları için, ben backport için gidiş önermek istiyorum ve mümkün olmadığı takdirde gelen systemd dosyasını almak en azından o, yapmak https://packages.debian.org/jessie-backports/openvpn ve özü debian/openvpn@.serviceiçine /etc/systemd/system/openvpn@.serviceve daha iyi zevk işlevsellik ve güvenlik.



0

Yeni bir Jessie_8.0.0 kurulumunda yaptım:

  1. eski /etc/openvpn/cluster.conf(artı *.keyve *.crt) dosyaları wheezy'den kopyalayın
  2. uncommented AUTOSTART="all"içinde /etc/default/openvpn- Bu hiçbir etkisi olduğunu düşünüyorum
  3. /lib/systemd/system-generators/openvpn-generator cluster
  4. systemctl restart openvpn@cluster.service

Şimdi tünel açıldı - Bir yeniden başlatma sonrasında ne olacağını göreceğim, ancak şu anda yeniden başlayamıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.