Linux'ta komut satırı üzerinden openVPN bağlantısını kesme


11

Kabuk komut satırı ile serbest yarıçap tarafından kurulan bir openvpn bağlantısını kesmenin bir yolu var mı?

Openvpn bağlantısı hakkında tüm bilgilere sahibim:

  • Kullanıcı adı
  • İstemci IP'si
  • AccountSeassionID
  • ...

TL; DR: sudo pkill openvpn
Andrew

Yanıtlar:


9

pkill -SIGTERM -f 'openvpn --daemon --conf $ OPENVPNCONFFILE'

pkill komutu, adı veya diğer nitelikleri temel alan bir işlemi işaretlemenizi sağlar

Bu, SIGTERM'i openvpn'e göndererek tun arayüzünden zarif bir şekilde çıkmasına ve kapatmasına neden olur. -F'den sonraki bölümü, openvpn bağlantısını başlatma şeklinize uyacak şekilde değiştirmeniz gerekebilir.

Bunu openvpn man sayfasının Sinyaller bölümünde buldum.

   SIGINT, SIGTERM
      Causes OpenVPN to exit gracefully.

vay, çok kullanışlı ve zarif
georgiecasey

OOF! ^ Umarım bu alaycıdır
Andrew

4

Sanal arayüzü aşağıdakilerle belirleyin ifconfig:

tap0      Link encap:Ethernet  HWaddr 32:28:a4:04:34:cc  
          inet addr:172.22.18.14  Bcast:172.22.18.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ve şununla kapat:

sudo ifconfig tap0 down

İşte RedHat tabanlı için yazdığım init betiği:

#! /bin/bash
#
# openvpn-client    Start/Stop the openvpn client
#
# chkconfig: 2345 90 60
# description: start openvpn client at boot
# processname: openvpn

# Source function library.
. /etc/init.d/functions

daemon="openvpn"
prog="openvpn-client"
conf_file="/vagrant/vpn/client-dept18-payment.ovpn"

start() {
    echo -n $"Starting $prog: " 
        if [ -e /var/lock/subsys/openvpn-client ] && [ $(pgrep -fl "openvpn --config /vagrant/vpn/client-dept18-payment.ovpn" | wc -l) -gt 0 ]; then
        echo_failure
        echo
        exit 1
    fi
    runuser -l root -c "$daemon --config $conf_file >/dev/null 2>&1 &" && echo_success || echo_failure
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/openvpn-client;
    return $RETVAL
}

stop() {
    echo -n $"Stopping $prog: "
    pid=$(ps -ef | grep "[o]penvpn --config $conf_file" | awk '{ print $2 }')
    kill $pid > /dev/null 2>&1 && echo_success || echo_failure
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/openvpn-client;
    return $RETVAL
}   

status() {
    pgrep -fl "openvpn --config /vagrant/vpn/client-dept18-payment.ovpn" >/dev/null 2>&1
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        pid=$(ps -ef | grep "[o]penvpn --config $conf_file" | awk '{ print $2 }')
        echo $"$prog (pid $pid) is running..."
    else
        echo $"$prog is stopped"
    fi
}   

restart() {
    stop
    start
}   

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    status)
        status
        ;;
    condrestart)
        [ -f /var/lock/subsys/openvpn-client ] && restart || :
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart}"
        exit 1
esac

o zaman her zamanki gibi kullanabilirsiniz:

# /etc/init.d/openvpn-client start
Starting openvpn-client:                                   [  OK  ]
# /etc/init.d/openvpn-client start
Starting openvpn-client:                                   [FAILED]
# /etc/init.d/openvpn-client status
openvpn-client (pid 5369) is running...

# /etc/init.d/openvpn-client stop
Stopping openvpn-client:                                   [  OK  ]
# /etc/init.d/openvpn-client stop
Stopping openvpn-client:                                   [FAILED]
# /etc/init.d/openvpn-client status
openvpn-client is stopped

# /etc/init.d/openvpn-client restart
Stopping openvpn-client:                                   [  OK  ]
Starting openvpn-client:                                   [  OK  ]
# /etc/init.d/openvpn-client status
openvpn-client (pid 5549) is running...

1
Bu sorun OK'yi indirir, ancak openvpn işlemini öldürmez. Bağlantıyı tekrar geri getirmek istersem, arabirimi tekrar geri getirmeliyim ve sonra openvpn işlemini öldürmem ve sonra tekrar openvpn --config <blah> 'ı çalıştırmam gerekiyor. Ben (ve bence OP) bunun amaçlandığı gibi olup olmadığını veya farkında olmadığımız daha temiz bir yol olup olmadığını merak ediyordum.
JKim

@jkim: Cevabım temelinde RedHat için bir init betiği ekledi.
quanta

GÜZEL! 123456789101112
dmourati

Evet bu "çalışıyor" ama OpenVPN'i öldürmüyor.
Andrew

1

Sadece koşmak sudo pkill openvpnbenim için iyi çalıştı. (Linux Mint 19.1)


0

Hiç serbest yarıçap kullanmadım, ancak OpenVPN'de benzer bir soruna aşinayım. Bağlantı komut satırından başlatılırsa, VPN istemcisi istemde canlı kalır veya arka plana geri çekilir, ancak bağlantıyı açıkça durdurmak için herhangi bir komut yoktur.
Linux altında bağlantıyı durdurmanın tek yolu bir "kill" veya "killall" komutudur. Serbest yarıçap bağlantıları için benzer olabilir.


0

Sadece daha geniş bir cevapla yorumumu güncelleyeceğimi düşündüm (serbest yarıçap hakkında bilmediğim düşünülerek ilgili olmayabilir) ..

Debian Linux dağıtımını kullandım ve openvpn paketini kurdum. Debian'daki istemci yapılandırması, bağlantıyı sonlandırmak / yönetmek için görünüşte düzgün bir yol olmadığı için bu soruna yol açan komut satırı aracılığıyla başlatılabilir ...

Bugün önyükleme sırasında çalışan bir /etc/init.d/openvpn komut dosyası olduğunu öğrendim ve openvpn config dosyasını / etc / openvpn / (dosya uzantısı .conf olmalıdır) içine yerleştirirsem bağlantıyı kontrol edebilirim /etc/init.d/openvpn stop ve etc / init.d / openvpn start (veya "service openvpn stop") kullanarak.

Yapılandırma dosyasını / etc / openvpn / dizinine koymak, VPN tünelinin önyükleme sırasında otomatik olarak gelmesine de neden olur. Bağlantı kesildikten sonra da otomatik olarak yeniden bağlanır.

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.