disconnessione openVPN tramite riga di comando in linux


11

C'è un modo per disconnettere una connessione openvpn stabilita da free-radius con una riga di comando della shell?

Ho tutte le informazioni sulla connessione openvpn:

  • Nome utente
  • IP client
  • AccountSeassionID
  • ...

TL; DR: sudo pkill openvpn
Andrew,

Risposte:


9

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

il comando pkill consente di segnalare un processo in base al nome o ad altri attributi

Questo invierà SIGTERM a openvpn causandone la chiusura e la chiusura graduali dell'interfaccia tun. Potrebbe essere necessario / sarà necessario modificare la sezione dopo -f in modo che corrisponda al modo in cui è stata avviata la connessione openvpn.

L'ho trovato nella sezione Segnali della pagina man di openvpn.

   SIGINT, SIGTERM
      Causes OpenVPN to exit gracefully.

wow, molto utile ed elegante
georgiecasey

OOF! ^ Spero che fosse il sarcasmo
Andrew,

4

Determina l'interfaccia virtuale con 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)

e spegnilo con:

sudo ifconfig tap0 down

Ecco lo script di init che ho scritto per RedHat basato:

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

allora puoi usarlo come al solito:

# /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
Questo lo porta giù OK, ma non uccide il processo openvpn. Se voglio ripristinare nuovamente la connessione, devo ripristinare l'interfaccia, quindi devo terminare il processo openvpn, e quindi devo eseguire di nuovo openvpn --config <blah>. Io (e penso che l'OP) si chiedesse se questo è il modo in cui è inteso, o se esiste un modo più ordinato di cui non siamo a conoscenza.
JKim

@jkim: ha aggiunto uno script init per RedHat in base alla mia risposta.
maggio

SIMPATICO! 123456789101112
dmourati,

Sì, questo "funziona" ma non uccide OpenVPN.
Andrew,

1

Semplicemente correre ha sudo pkill openvpnfunzionato bene per me. (Linux Mint 19.1)


0

Non ho mai usato il raggio libero, ma ho familiarità con un problema simile in OpenVPN. Se la connessione viene avviata dalla riga di comando, il client VPN rimane attivo sul prompt o si ritira in background, ma non esiste alcun comando per interrompere esplicitamente la connessione.
Sotto Linux l'unico modo per interrompere la connessione è con un comando "kill" o "killall". Potrebbe essere simile per le connessioni a raggio libero.


0

Ho pensato di aggiornare il mio commento con una risposta più completa (che potrebbe non essere pertinente, considerando che non conosco il raggio libero) ..

Sto usando una distro Debian Linux e ho installato il pacchetto openvpn. La configurazione del client in Debian può essere avviata dalla riga di comando, il che porta a questo problema in quanto apparentemente non esiste un modo pulito per terminare / gestire la connessione ...

Oggi ho imparato che esiste uno script /etc/init.d/openvpn che viene eseguito all'avvio e se inserisco il file di configurazione di openvpn in / etc / openvpn / (l'estensione del file deve essere .conf), posso controllare la connessione usando /etc/init.d/openvpn stop e etc / init.d / openvpn start (o "service openvpn stop").

Se si inserisce il file di configurazione in / etc / openvpn /, il tunnel VPN si attiva automaticamente all'avvio. Si riconnette automaticamente anche dopo la disconnessione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.