How to install Cisco VPN client on Debian / Ubuntu (jaunty and Karmic) 64 bit

Cisco module again doesn’t let us compile against the new kernel in Ubuntu 9.04 and 9.10 beta:

/home/lamnk/vpnclient/interceptor.c: In function ‘interceptor_init’:
/home/lamnk/vpnclient/interceptor.c: In function ‘remove_netdev’:
/home/lamnk/vpnclient/interceptor.c:294: error: ‘struct net_device’ has no member named ‘hard_start_xmit’
make[2]: *** [/home/lamnk/vpnclient/interceptor.o] Error 1
make[1]: *** [_module_/home/lamnk/vpnclient] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.31-1-generic’
make: *** [default] Error 2
Failed to make module “cisco_ipsec.ko”.

Before installtion I assume that you have the latest version and the required packages for compiling ie gcc, libstdc++6 … The kernel version should be from 2.6.30 to 2.6.32

* Download the client and extract it
* Go to vpnclient folder:

cd vpnclient

* Download patch file for 64 bit and apply it (users on 32bit systems can skip this step):


patch < ./vpnclient-linux-4.8.02-64bit.patch

sed -i 's/^CFLAGS/EXTRA_CFLAGS' Makefile

* Download patch file for newer kernel (2.6.30+) and apply it:


patch < ./vpnclient-linux-2.6.31-final.diff

* Next we must edit a kernel source file

sudo sed -i 's/const\ struct\ net_device_ops\ \*netdev_ops;/struct\ net_device_ops\ \*netdev_ops;/' `find /usr/src -name netdevice.h`

Yes, it is a one liner, you should copy & paste that command instead of typing 😉 The command's translation into English: find the string const struct net_device_ops *netdev_ops; and change it to struct net_device_ops *netdev_ops; in the file locates at

find /usr/src -name netdevice.h

* And finally, install Cisco VPN Client:

sudo ./vpn_install

3 Responses to “How to install Cisco VPN client on Debian / Ubuntu (jaunty and Karmic) 64 bit”

  1. Alexandre Martinazzo Says:

    Compiling worked flawlessly for me on Ubuntu Lucid 64. Thanks for the post!

  2. Ivan Says:

    It compiled in Debian 6, but it failed to load:

    * You may wish to change these permissions to restrict access to root.
    * You must run “/etc/init.d/vpnclient_init start” before using the client.
    * You will need to run this script every time you reboot your computer.
    root@z:/home/me/Downloads/vpnclient# /etc/init.d/vpnclient_init start
    Starting /opt/cisco-vpnclient/bin/vpnclient: insmod: error inserting ‘/lib/modules/2.6.32-5-686/CiscoVPN/cisco_ipsec.ko’: -1 Invalid module format
    Failed (insmod)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: