Delete from the active, upload to the standby first.
FW1/act# dir Directory of disk0:/ 108 -rwx 25251840 06:25:26 Aug 15 2012 asa844-5-k8.bin 110 -rwx 25214976 07:28:06 Jul 13 2012 asa844-1-k8.bin 117 -rwx 18927088 07:28:38 Jul 13 2012 asdm-649.bin 260296704 bytes total (112099328 bytes free)
FW1/stby# dir Directory of disk0:/ 108 -rwx 25251840 06:31:26 Aug 15 2012 asa844-5-k8.bin 109 -rwx 25214976 05:08:20 Jul 10 2012 asa844-1-k8.bin 116 -rwx 18927088 05:08:54 Jul 10 2012 asdm-649.bin 260296704 bytes total (112128000 bytes free)
FW1/act# del /noconfirm disk0:/asa844-1-k8.bin FW1/act# dir Directory of disk0:/ 108 -rwx 25251840 06:25:26 Aug 15 2012 asa844-5-k8.bin 117 -rwx 18927088 07:28:38 Jul 13 2012 asdm-649.bin 260296704 bytes total (137314304 bytes free)
FW1/stby# dir Directory of disk0:/ 108 -rwx 25251840 06:31:26 Aug 15 2012 asa844-5-k8.bin 116 -rwx 18927088 05:08:54 Jul 10 2012 asdm-649.bin 260296704 bytes total (137342976 bytes free)
FW1/act# show run web webvpn enable outside enable inside anyconnect image disk0:/anyconnect-win-3.1.00495-k9.pkg 1 anyconnect image disk0:/anyconnect-macosx-i386-3.1.00495-k9.pkg 2 anyconnect image disk0:/anyconnect-linux-3.1.00495-k9.pkg 3 anyconnect image disk0:/anyconnect-linux-64-3.1.00495-k9.pkg 4 anyconnect profiles WebVPN disk0:/webvpn.xml anyconnect enable FW1/act# dir Directory of disk0:/ 108 -rwx 25251840 06:25:26 Aug 15 2012 asa844-5-k8.bin 114 -rwx 29806775 06:26:08 Aug 15 2012 anyconnect-win-3.1.00495-k9.pkg 115 -rwx 11191648 06:26:24 Aug 15 2012 anyconnect-macosx-i386-3.1.00495-k9.pkg 116 -rwx 9872957 06:26:36 Aug 15 2012 anyconnect-linux-64-3.1.00495-k9.pkg 117 -rwx 18927088 07:28:38 Jul 13 2012 asdm-649.bin 118 -rwx 10978512 06:26:46 Aug 15 2012 anyconnect-linux-3.1.00495-k9.pkg 119 -rwx 2337 16:59:18 Sep 05 2012 webvpn.xml
Note that the WebVPN configuration stanza calls out the AnyConnect XML profile stored in disk0:/webvpn.xml. When we run the same commands on the standby ASA, we notice a difference. The file is missing from the flash storage “dir” output, but the reference to it is also missing from the configuration stanza:
FW1/stby# show run web webvpn enable outside enable inside anyconnect image disk0:/anyconnect-win-3.1.00495-k9.pkg 1 anyconnect image disk0:/anyconnect-macosx-i386-3.1.00495-k9.pkg 2 anyconnect image disk0:/anyconnect-linux-3.1.00495-k9.pkg 3 anyconnect image disk0:/anyconnect-linux-64-3.1.00495-k9.pkg 4 anyconnect enable FW1/stby# dir Directory of disk0:/ 108 -rwx 25251840 06:31:26 Aug 15 2012 asa844-5-k8.bin 113 -rwx 29806775 06:32:00 Aug 15 2012 anyconnect-win-3.1.00495-k9.pkg 114 -rwx 11191648 06:32:16 Aug 15 2012 anyconnect-macosx-i386-3.1.00495-k9.pkg 115 -rwx 9872957 06:32:30 Aug 15 2012 anyconnect-linux-64-3.1.00495-k9.pkg 116 -rwx 18927088 05:08:54 Jul 10 2012 asdm-649.bin 117 -rwx 10978512 06:32:40 Aug 15 2012 anyconnect-linux-3.1.00495-k9.pkg 260296704 bytes total (137342976 bytes free) FW1/stby#
Why did this happen? Simple. I goofed, and forgot to manually copy the webvpn.xml file down from the active unit where it was created and up to the standby ASA. Because of this, the AnyConnect profile would not have applied if the standby unit had taken over the active role. This is a very easy mistake to make, so always be sure to check the file system on both units when dealing with ASDM images, AnyConnect images, CSD/HostScan images, or XML files.
If you do find yourself in this pickle, it’s easy to resolve. Just upload the missing files to the standby unit, and execute (FROM THE ACTIVE UNIT!) a “write standby” which will resync the standby, like this:
FW1/act# write standby Building configuration... [OK] FW1/act# Beginning configuration replication: Sending to mate. End Configuration Replication to mate
However, it’s better to check things out and discover this before a failover occurs, rather than after your primary firewall dies and you find out that your seamless firewall failover wasn’t so seamless because AnyConnect wasn’t actually enabled on the secondary unit.
I really wish Cisco would provide an option to automatically sync the file systems of failover mates, or at least offer a simple process to copy files from the active to the standby unit. It would also be nice if a periodic full re-sync was performed to ensure the standby was always up to date. The incremental-update-only approach used now can let some configuration elements slip through the cracks if the filesystem operations are done in the wrong order.
Great write-up. Thanks a lot.
Glad you liked it, thanks for reading!
I’ve wondered for years why Cisco didn’t sync file systems on the ASA like they do in say a switch stack.
Agree completely. That would be the better solution. My method documented here is a workaround.
Great write up. Now it will be easy to understand ASA and structure it so that filesystem operations are done correctly and monitored closely. Thanks for sharing!