How to install Cisco VPN client on Ubuntu Jaunty Jackalope and Karmic Koala 64 bit

 

Update 2011-05-09: There is a new patch that works (I still recommend the vpnc client instead of Cisco client). I’ve mirrored the patch to my server: fixes-2.6.38.patch. Please note that you should apply the patch against a vanilla vpnclient setup directory (no other patch applied).

cd vpnclient/setup/directory/
wget http://www.lamnk.com/download/fixes-2.6.38.patch
patch < ./fixes-2.6.38.patch
sudo ./vpn_install

Again, from the awesome tuxx-home.at forum.
Update 2011-05-08: Doesn't work for Natty Narwhal 11.04. There is currently no fix for this. You should use vpnc instead. It should be compatible with your VNP server, you just have to install vpnc using Synatics/apt-get and use pcf2vpnc convert your .pcf profile from Cisco client to vpnc .conf profile. Or install network-manager-vpnc-gnome package for a GUI client (doesn't have all capabilities of vpnc on command line).
Update 2010-10-31: Work for Maverick Meerkat 10.10 too
Update 2010-08-26: You can now install with this cisco vpn patch applied. It's all the old patches combined.

cd vpnclient/setup/directory/
wget http://www.lamnk.com/download/fixes.patch
patch < ./fixes.patch
sudo ./vpn_install

This patch is tested on Ubuntu Lucid Lynx 10.04 LTS on 32bit and 64bit.

Old post:
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:132: error: ‘struct net_device’ has no member named ‘hard_start_xmit’
/home/lamnk/vpnclient/interceptor.c:133: error: ‘struct net_device’ has no member named ‘get_stats’
/home/lamnk/vpnclient/interceptor.c:134: error: ‘struct net_device’ has no member named ‘do_ioctl’
/home/lamnk/vpnclient/interceptor.c: In function ‘add_netdev’:
/home/lamnk/vpnclient/interceptor.c:271: error: ‘struct net_device’ has no member named ‘hard_start_xmit’
/home/lamnk/vpnclient/interceptor.c:272: error: ‘struct net_device’ has no member named ‘hard_start_xmit’
/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 4.8.02.0030 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):

    wget http://lamnk.com/download/vpnclient-linux-4.8.02-64bit.patch

    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:

    wget http://lamnk.com/download/vpnclient-linux-2.6.31-final.diff

    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

The patch files are not from me. All credit goes to the people at tuxx-home.at forum

If you can't install or have a problem please leave a comment

Related posts:

  • http://test.com/ Guest

    It works….Latest Ubuntu 10.04 alpha Mar-18 Kernel 2.6.32-16

  • xcolwell

    Thank you! Minor typo in step 3: a missing trailing slash for sed. sed -i 's/^CFLAGS/EXTRA_CFLAGS/' Makefile

  • mhwong

    Thank you. This works on Fedora 12 as well.

  • smart_lrt

    I just installed the Cisco VPN Client vpnclient-linux-x86_64-4.8.02.0030-k9 in Ubuntu 9.10 (kernel 2.6.31-18-generic) following the directions here and for the most part it worked.

    The issue I had was that the machine either rebooted itself or froze randomly. My fix for this was to create a CPUSET of only one cpu-core and launch the vpnclient attached to that cpuset. I've been working for a few hours now and it seems that it did the trick. I'm using kvpnc for my vpn connections so what I did was that I created a script called /usr/local/bin/vpnclient.wrapper which is called by kvpnc. The script does the following:

    mkdir /dev/cpuset
    mount -t cpuset cpuset /dev/cpuset
    cd /dev/cpuset
    mkdir Cisco
    cd Cisco
    /bin/echo 1 > cpus
    /bin/echo 0 > mems
    /bin/echo $$ > tasks
    /usr/local/bin/vpnclient $*

    Basically, what this does is create a cpuset called Cisco with only one CPU. Assigns the current shell pid to the cpuset task list and then calls vpnclient so that it also runs within that cpuset.

    This should take care of the issue reported by others, and noticed by me also, that running vpnclient in a multi-core system ( I have a quad-core) tends to crash it.

  • doombo

    This works on Fedora 12 2.6.32.11-99 kernal, thanks you!!!

  • perico

    I followed your guide, but instead of tinkering with the linux headers I investigated a bit more in the interceptor.c
    The problem is, as you 'sed' that the net_device_ops pointer inside the netdevice structure is marked as const. But you can circumvent this easily.

    my .2 cents…

  • carterqw

    This also worked for OpenSuSE 11.2! Thanks a lot!

  • Osvaldo

    Hi feed, could you make it work finally? I have the same output from the compiler

  • http://twitter.com/mavimo Marco Moscaritolo

    please change:

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

    to

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

  • http://twitter.com/xavpaice Xav Paice

    Many thanks – works a treat on Fedora 13 2.6.33.5-112.fc13.x86_64

  • http://www.lamnk.com Lamnk

    Thanks, i changed according to your suggestion. Forgot that slash :-)

  • Michel Levy

    http://ilapstech.blogspot.com/2009/09/cisco-vpn…
    http://www.painfullscratch.nl/code/vpn/index.ht…
    I give these two sites, who help to solve my vpn problem : successful compilation of vpnclient but connection broken after being established 30 seconds.

  • Yee Mishi

    This is such a helpful guide! thanks to all of you!

  • mrcarl

    Very Helpful Thanks (on Ubuntu 10.04 LTS – the Lucid Lynx )

  • John Doe

    Amazing. Over an hour of messing with files, and finally found this page…. This WORKS: Ubuntu 10.4 – kernel: 2.6.32-24