I do some work for an organization which requires me to authenticate to a Cisco VPN. Getting the VPN client setup under Mac OS X is a simple matter, but doing the same under Linux required some research. Here’s what worked for me. I’m using the 64-bit x86 version of Ubuntu, which didn’t seem to cause any hiccups:

Step 1 – Install the Cisco VPN Client:

  1. Check what kernel you’re running by issuing the uname -a command. You should get something like:
  2. Linux matt-media 2.6.22-14-generic #1 SMP Tue Dec 18 05:28:27 UTC 2007 x86_64 GNU/Linux

  3. Download a copy of Cisco’s VPN client for Linux. If you’re using a 2.6.x kernel, it’s important to use a 4.8.x client.
  4. Confirm that you have kernel sources installed for your kernel version. Check the /lib/modules/ directory.
  5. Download a patch matching your kernel version from http://tuxx-home.at/. I’m running 2.6.22, so I ran:
  6. wget http://tuxx-home.at/projects/cisco-vpnclient/vpnclient-linux-2.6.22.diff

  7. Extract Cisco’s VPN client tarball:
  8. tar -xzf vpnclient-linux-x86_64-4.8.00.0490-k9.tar.gz

  9. Apply the patch:
  10. cd vpnclient
    patch -i ../vpnclient-linux-2.6.22.diff

  11. Install the VPN client:
  12. sudo ./vpn_install

Step 2 – Configure the VPN Client:

  1. Take a backup of a working Cisco VPN client’s configuration. The location below is where these files were located on my Mac OS X system. They’re no doubt located somewhere other than the /private folder in other OSes.
  2. tar -czf cisco-vpnclient.tgz /private/etc/opt/cisco-vpnclient

  3. Copy the cisco-vpnclient.tgz tarball that you just created into the /etc/opt/ directory of your Linux system, and unpack it.
  4. sudo tar -xzf cisco-vpnclient.tgz

  5. Start the vpnclient service.
  6. sudo /etc/init.d/vpnclient_init start

  7. Check the name of your VPN’s profile by listing the contents of the Profiles directory. Your profile’s name will be the name of the the .pcf file, minus the .pcf extension.
  8. ls /etc/opt/cisco-vpnclient/Profiles/

  9. Connect to the VPN, using the profile name found above as the last argument.
  10. sudo vpnclient connect "University of South Florida"

That’s it! You should now be prompted to enter your password, and find yourself connected!