How to stop vpnc IPSec VPNs and close the tunnel interface
Problem:
You have started a VPN connection using vpnc
, e.g.
$ sudo vpnc my-vpn.conf
VPNC started in background (pid: 21763)...
but you can’t find any information on how to stop vpnc
i.e. terminating the VPN connection.
Solution
Preferred method: Use vpnc-disconnect
Run
sudo vpnc-disconnect
This will, for example, print
Terminating vpnc daemon (pid: 21763)
vpnc-disconnect
is the official method of stopping vpnc
and will terminate the vpnc
instance whose PID is written in /var/run/vpnc.pid
. In other words, it will not work properly if you have multiple vpnc instances running at the same time, or if you have specified an alternate PID file for vpnc (e.g. using vpnc --pid-file /var/run/my-vpnc.pid my-vpn.conf
).
Alternate method 1: Stop all vpnc
instances on the current machine
You can kill
all vpnc instances on the current machine using
sudo killall vpnc
however this will stopĀ all vpnc
instances on the current machine. In case you have multiple vpnc
VPN instances active concurrently, this means all of them will be terminated.
Alternate method 2: Kill a specific vpnc
(if you know it’s PID)
vpnc
tells you its process ID when starting it. In our example above:
VPNC started in background (pid: 21763)...
the PID is 21763
so we can kill the process using
sudo kill 21763
This will cleanly stop vpnc
and remove the tunnel interface.
Alternate method 3: Kill a specific vpnc
(if you don’t know it’s PID)
Show all running vpnc instances using
pgrep -a vpnc
This will show you, for example,
21763 vpnc my-vpn.conf
30792 vpnc other-vpn.conf
In that list, find the line with the vpnc
instance you want to kill (you can identify it by the config file name, e.g. my-vpn.conf
- in this example, it would be the first line).
The number at the beginning of the line is the PID of that vpnc
process. Copy it and run
sudo kill [PID]
e.g.
sudo kill 21763
just like inĀ Alternate method 2. This will only stop that specific vpnc
instance and leave all others running.