openVPN desconectar via linha de comando no linux

10

Existe uma maneira de desconectar uma conexão openvpn estabelecida por free-radius com uma linha de comando do shell?

Eu tenho todas as informações sobre a conexão openvpn:

  • Nome de usuário
  • IP do cliente
  • AccountSeassionID
  • ...
por hamedsh 05.08.2010 / 08:59

4 respostas

9

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

o comando pkill permite sinalizar um processo baseado em nome ou outros atributos

Isso enviará SIGTERM para o openvpn, fazendo com que ele seja encerrado e feche a interface tun. Você pode / precisará modificar a seção após -f para corresponder ao modo como você iniciou a conexão openvpn.

Encontrei isso na seção Signals da página man do openvpn.

   SIGINT, SIGTERM
      Causes OpenVPN to exit gracefully.
    
por 04.02.2015 / 08:02
3

Determine a interface virtual com 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 desligue-o com:

sudo ifconfig tap0 down

Aqui está o script de inicialização que eu escrevi para o RedHat:

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

então você pode usá-lo como de costume:

# /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...
    
por 07.09.2011 / 07:09
0

Eu nunca usei free-radius, mas estou familiarizado com um problema similar no OpenVPN. Se a conexão for iniciada a partir da linha de comando, o cliente VPN permanecerá ativo no prompt ou se retirará para o segundo plano, mas não haverá comando para interromper explicitamente a conexão.
No Linux, a única maneira de parar a conexão é com um comando "kill" ou "killall". Poderia ser semelhante para conexões de raio livre.

    
por 05.08.2010 / 15:48
0

Pensei em atualizar meu comentário com uma resposta mais completa (o que pode não ser relevante, considerando que eu não sei sobre free-radius).

Eu tenho usado uma distribuição Debian Linux e instalei o pacote openvpn. A configuração do cliente no Debian pode ser iniciada via linha de comando, o que leva a este problema de aparentemente não haver uma maneira simples de encerrar / gerenciar a conexão ...

Eu aprendi hoje que há um script /etc/init.d/openvpn que é executado no momento da inicialização e se eu colocar o arquivo de configuração openvpn em / etc / openvpn / (a extensão do arquivo deve ser .conf), eu posso controlar a conexão usando /etc/init.d/openvpn stop e etc / init.d / openvpn start (ou "service openvpn stop").

Colocar o arquivo de configuração em / etc / openvpn / também faz com que o túnel VPN apareça automaticamente no momento da inicialização. Ele também se reconecta após desconectar automaticamente também.

    
por 06.02.2013 / 12:10