OpenVPN başarıyla bağlandıktan sonra bir betiği nasıl çalıştırabilirim?


50

Bir betiği OpenVPN ile nasıl ilişkilendirebilirim ki VPN başarılı bir şekilde bağlandığında çalışabilir?


Müşteri durumunda sanırım? Hangi yazılımı kullanıyorsun? OpenVPN veya bir sarıcı (ör. NetworkManager)?
Lekensteyn

@Lekensteyn, sarıcı network-manger-openvpn.
Oxwivi

Yanıtlar:


62

network-manager-openvpnBöyle bir işlevsellik sağlamaz, openvpndoğrudan kullanmanız gerekir .

Bağlarken --script-security 2 --up /path/to/your/scriptona ilet. /etc/openvpn/Adresinde bulunan bir yapılandırma dosyası kullanıyorsanız , sonraki satırları yapılandırma dosyanıza ekleyin:

script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh

Gönderen OpenVPN man :

--script-güvenlik seviyesi [yöntem]
              Bu yönerge OpenVPN kullanımı üzerinde politika düzeyinde kontrol sunar
              harici programlar ve komut dosyaları. Düşük seviye değerleri daha fazla
              kısıtlayıcı, daha yüksek değerler daha müsaittir. Ayarları
              seviyesi:

              0 - Kesinlikle dış program çağrısı yok.
              1 - (Varsayılan) Yalnızca ifconfig gibi dahili yürütülebilir dosyaları arayın,
              ip, rota veya netsh.
              2 - Dahili çalıştırılabilir ve kullanıcı tanımlı çağrıların yapılmasına izin ver
              Kodlar.
              3 - Şifrelerin çevre yoluyla komut dosyalarına geçirilmesine izin ver
              değişkenler (potansiyel olarak güvensiz).
       - yukarı cmd
              Başarılı TUN / TAP cihazı açıldıktan sonra çalıştırılacak Shell komutu (ön
              - kullanıcı UID değişikliği). Yukarı komut dosyası belirtmek için yararlıdır
              IP trafiğini özel için yönlendiren rota komutları
              VPN bağlantısının diğer ucunda bulunan alt ağlara
              tünel.
Script Yürütme Sırası
       --up TCP / UDP soket bağlantısı ve TUN / TAP açıldıktan sonra yürütülür.
       --down TCP / UDP ve TUN / TAP kapandıktan sonra yürütülür.

Komut dosyası yürütme için daha fazla olay var, bunlar kılavuz sayfasında bulunabilir .

Yaratın /etc/openvpn/up.shve izinlerini verin (755 veya 700). Bir IPv6 adresi ve yolu eklemek için örnek içerik (eğitim amaçlı gösterilir, doğrudan kopyalamaz):

#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev

Bu upbetiğin root olarak çalıştırıldığına dikkat edin. A Userve Groupayarını belirtmediyseniz , OpenVPN downde root gibi scriptler çalıştıracaktır .


Openvpn'yi nasıl doğrudan kullanacağınızı bilmiyorsanız, mevcut konfigürasyon bilgilerinizi ekleyin: Bağlantı tipi (örn. X509-sertifikaları), Ağ Geçidi portu, LZO-sıkıştırma, TCP'nin gücü, kademe cihazı kullanımı, şifre, HMAC ve TLS. Otomatik olmadıklarında IP ayarlarınızdan da bahsedin. Gizliliğinizi artırın, gerçek adreslerinizi dışarıda bırakın.
Lekensteyn

Tamam, doğrudan OpenVPN kullanmaya karar verdim (ve evet.. İnternet bağlantısı olduğunda otomatik olarak nasıl bağlanacağım? Sonunda, cevabında bahsettiğin satırları nereye ekleyeceğimi anlamadım.
Oxwivi

openvpnDoğrudan kullanmak için cevabı genişlettim . Bir sunucu kurarken, OpenVPN'in sunucu kapandığında yeniden bağlanmaya çalışacağını fark ettim. Ağ arayüzünüz düştüğünde OpenVPN'in denemeye devam edip etmediğinden emin değilim.
Lekensteyn

Sorunum ağ arayüzü kapandığı zaman değil; internet bağlantısı kaybolduğunda ve yeniden kazanıldığında yeniden bağlanmaya çalışıyor. Ne zaman internet bağlantım olsa VPN'e bağlanmak istiyorum.
Oxwivi

Oh, ve script tüm VPN bağlantısı için geçerli mi? Ve lütfen cevaplarken @Oxwivi etiketleyiniz, aksi halde bildirilmeyeceğim.
Oxwivi

5

"VPN başarıyla bağlandığında çalışması için bir betiği OpenVPN ile nasıl ilişkilendirebilirim?" Lekensteyn'in mükemmel bir cevap verdiğini belirtmek isterim . Ancak, cevabının oluşturulduğu sırada, ubuntu makinesinde openvpn'i başlatmak için, özellikle de yeniden başlattıktan sonra aynı şekilde çalışabilmesi için openvpn komut satırı argümanlarının nasıl sağlanacağı konusunda biraz netlik yoktu.


Ubuntu'da Openvpn komut satırı argümanları:

Doğal olarak, herhangi bir mevcut yasal seçeneğe sahip bir komut satırından openvpn'yi başlatabilirsiniz. Ancak, bir Ubuntu makinesinde, bir yeniden başlatma işleminden sonra openvpn'yi aynı komut satırı argümanlarıyla başlatmak istiyorsanız, dosyayı düzenlemeyi düşünmeleri gerekir /etc/default/openvpn. Aşağıdaki satırları inceleyin:

# Optional arguments to openvpn's command line
OPTARGS="" 

Gönderen topluluk openvpn adam sayfasında üzerinde--script-security

- script-güvenlik seviyesi
    Bu yönerge OpenVPN'in harici kullanımı üzerinde politika düzeyinde kontrol sunar 
    programlar ve scriptler. Düşük seviye değerleri daha kısıtlayıcı, daha yüksek
    değerler daha müsaittir. Seviye ayarları:
0 - Kesinlikle dış program çağrısı yok. 
1 - (Varsayılan) Yalnızca ifconfig, ip, route gibi dahili yürütülebilir dosyaları arayın,
veya netsh. 
2 - Dahili çalıştırılabilir kodların ve kullanıcı tanımlı komut dosyalarının çağrılmasına izin verin. 
3 - Şifrelerin çevresel değişkenler aracılığıyla komut dosyalarına geçirilmesine izin ver
(potansiyel olarak güvensiz).

OpenVPN, v2.3'ten önce yayımlanan sürümleri ayrıca, bunun nasıl yapıldığını belirten bir yöntem bayrağını destekledi. 
OpenVPN harici komutları ve komut dosyalarını çağırmalıdır. Bu ya yürütmek olabilir
veya sistem. OpenVPN v2.3'ten itibaren bu bayrak artık kabul edilmemektedir. Çoğu * nix
ortamlarda execve () yaklaşımı sorunsuz olarak kullanılmıştır.

--Up gibi bazı yönergeler, seçeneklerin harici komut dosyasına iletilmesine izin verir.
Bu durumlarda, komut dosyasının adının boşluk veya boşluk içermediğinden emin olun. 
yapılandırma ayrıştırıcısı boğulacak çünkü komut dosyasının yerini belirleyemiyor 
ad biter ve script seçenekleri başlar.

Üzerinde kısaltılmış bir bölüm ile birlikte --up

- yukarı cmd
    Başarılı TUN / TAP cihazı açıldıktan sonra cmd komutunu çalıştırın (kullanıcı öncesi UID değişikliği).
    cmd, isteğe bağlı olarak izlenen komut dosyası (veya yürütülebilir program) yolundan oluşur
    bağımsız değişkenlerle. Yol ve argümanlar tek veya çift alıntı olabilir ve / veya
    ters eğik çizgi kullanarak kaçtı ve bir veya daha fazla boşlukla ayrılmalıdır.

Örnek:

Openpvn server.conf bulunan makinemde dosyamda şu satırlar var /etc/default/openvpn:

OPTARGS="
    --script-security 2
    --up /etc/openvpn/nat.sh
" 

Bu arada, nat.sh, özel ağ trafiğini openvpn istemcilerinden halka açık internete yönlendirmek için ağ adresi çevirisini kurar; Halka açık bir WIFI erişim noktasına güvenmediği zamanlar için iyidir.


Bir yeniden başlatma işleminden sonra beklendiği gibi yeniden başlatmaya izin vermenin yanı sıra, /etc/openvpn/[client or server].confve /etc/default/openvpndosyalar uygun şekilde yapılandırıldığında, openvpn şu şekilde başlatılabilir veya durdurulabilir:

sudo service openvpn start
sudo service openvpn stop

İçin kullanılabilir Diğer yararlı seçenekler service openvpnşunlardır cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.


3

Oldukça eski bir konu olduğu için hala ilgi olup olmadığından emin değilim. Bir VPN'ye bağlanmak için hala NetworkManager'ı kullanmak istiyorsanız, bunun gibi basit bir udev kuralı ekleyebilirsiniz:

KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"

Bu, VPN oluşturulduktan sonra herhangi bir komut dosyasını çalıştırmalıdır.


1

Bu sorunu çözmek için araştırmamdaki cevaba rastladım ve en iyi çözümün (openvpn sunucusunu kullanarak) şöyle olduğunu öğrendim:

Yürütülecek bir komut dosyası oluşturun:

# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh

# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>

Openvpn yapılandırmasına şu satırları ekleyin (genellikle /etc/openvpn/server.conf). Yukarıdaki cevapta, sunucu başladığında (yeniden başlatıldığında) kullanılan yukarı ve aşağı kullanılmıştır. İstemci bağlantısı (ve istemcinin bağlantısı kesilmesi) yönergesi, istemci bağlandığında (bağlantı kesildiğinde) kullanılır.

# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>

İstemci yapılandırma adını günlük dosyasına nasıl eklersiniz?
callisto,
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.