The new Parallels Desktop 3.0 for Mac is out! At first, everything looks great! Then I noticed my Cisco VPN Client v4.9 stopped working.

Error 51: Unable to communicate with the VPN subsystem. Please make sure that you have at least one network interface that is currently active and has an IP address and start this application again.

I tried uninstalling both the VPN client and Parallels, then reinstalling and everything worked until I rebooted. So, that wasn’t going to work. After doing a ton of digging around, I found this post that suggested a fix that works!

Bring up a terminal and execute an ifconfig -a:

$ ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
vmnet8: flags=8862<BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 172.16.91.1 netmask 0xffffff00 broadcast 172.16.91.255
        ether 00:50:56:c0:00:08
vmnet1: flags=8862<BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 172.16.197.1 netmask 0xffffff00 broadcast 172.16.197.255
        ether 00:50:56:c0:00:01
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 00:17:f2:cd:20:02
        media: autoselect status: inactive
        supported media: autoselect 10baseT/UTP <half-duplex>
                10baseT/UTP vfull-duplex>
                10baseT/UTP <full-duplex,hw-loopback>
                10baseT/UTP <full-duplex,flow-control>
                100baseTX <half-duplex>
                100baseTX <full-duplex>
                100baseTX <full-duplex,hw-loopback>
                100baseTX <full-duplex,flow-control>
                1000baseT <full-duplex>
                1000baseT <full-duplex,hw-loopback>
                1000baseT <full-duplex,flow-control> none
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        tunnel inet  -->
        inet6 fe80::219:e3ff:fe06:93f0%en1 prefixlen 64 scopeid 0x7
        inet 192.168.1.97 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:19:e3:06:93:f0
        media: autoselect status: active
        supported media: autoselect
        vlan: 0 parent interface: <none>
        bond interfaces: <none>
wlt1: flags=41<UP,RUNNING> mtu 1500
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 2030
        inet 169.254.90.185 netmask 0xffff0000 broadcast 169.254.255.255
        lladdr 00:19:e3:ff:fe:69:37:c4
        media: autoselect <full-duplex> status: inactive
        supported media: autoselect <full-duplexv
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::21c:42ff:fe00:0%en2 prefixlen 64 scopeid 0xa
        inet 10.0.1.3 netmask 0xffffff00 broadcast 10.0.1.255
        ether 00:1c:42:00:00:00
        media: autoselect status: active
        supported media: autoselect
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::21c:42ff:fe00:1%en3 prefixlen 64 scopeid 0xb
        inet 10.0.2.12 netmask 0xffffff00 broadcast 10.0.2.255
        ether 00:1c:42:00:00:01
        media: autoselect status: active
        supported media: autoselect

Find the interface that starts with “fw”. In my case, mine is called “fw0″. Next, shut off the interface:

$ sudo ifconfig fw0 down

fw0’s flags will now be 8822 and now the Cisco VPN client should work!

But what happens if you reboot? Oops! The fw0 interface comes back on. Disable the interface when the Cisco VPN subsystem is started:

$ sudo pico /System/Library/StartupItems/CiscoVPN/CiscoVPN

Then change the StartService() function to look like this:

StartService ()
{
    #disable fw0
    /sbin/ifconfig fw0 down

    if [ -d $CISCO_VPN_DIR ]; then
        ConsoleMessage "Starting Cisco Systems VPN Driver"
        kextload $CISCO_VPN_DIR
    fi
}

Test with a quick reboot and everything should work!