← Back to Engineering Blog
๐Ÿ—“๏ธ May 22, 2010โฑ๏ธ 6 min read

UTM Polyglot: Multi-Vendor Firewall Troubleshooting across Cisco PIX, Juniper SRX, Fortinet & SonicWALL

Real-world field engineering lessons in multi-vendor firewall CLI syntax, packet evaluation pipelines, and IPSec VPN Phase 2 crypto debugging.

๐ŸŽ™๏ธ Listen to ArticleREADY
AI Audio Synthesis Narrator
Share Post:

โ€œEvery firewall vendor implements packet evaluation order differently. Cisco ASA evaluates NAT before ACLs, Juniper JunOS evaluates Zone Policies after Destination NAT, and Fortinet embeds VIPs directly inside policies. If you donโ€™t know the vendor pipeline, you will spend 8 hours debugging a 5-minute fix.โ€

In 2010, during my field engineering days at Spectranetโ€”what I call The Iron Ageโ€”I spent my days driving across the National Capital Region (Delhi, Gurgaon, Noida) servicing enterprise WAN client sites.

Spectranet provided managed security and internet links to hundreds of corporate businesses.

And every single client site was a multi-vendor polyglot environment.

On Monday, I was CLI-configuring a Cisco PIX 515E or ASA 5510. On Tuesday, a Juniper SRX 210 running JunOS. On Wednesday, a Fortinet FortiGate 60C running FortiOS. On Thursday, a SonicWALL NSA 2400.

If you tried applying Cisco CLI logic to a Juniper SRX or SonicWALL, you broke production every time.


The Multi-Vendor Pipeline Trap

Junior network engineers often struggle in multi-vendor environments because they assume all firewalls follow the same internal execution pipeline.

They donโ€™t.

# Multi-Vendor Firewall Packet Processing Pipeline Comparison

| Vendor              | Primary Architecture                      | NAT vs. Security Policy Order                         | Key Troubleshooting Command          |
| ------------------- | ----------------------------------------- | ----------------------------------------------------- | ------------------------------------ |
| **Cisco ASA / PIX** | Interface-based + Security Levels (0-100) | **NAT evaluated FIRST**, then ACL                     | `packet-tracer input inside tcp ...` |
| **Juniper SRX**     | Zone-based (`trust`, `untrust`, `dmz`)    | **Destination NAT evaluated FIRST**, then Zone Policy | `show security flow session`         |
| **Fortinet**        | Policy-pair object model                  | VIP NAT embedded **INSIDE** Policy Object             | `diagnose debug flow filter ...`     |
| **SonicWALL**       | Matrix zone access rules                  | Policy Matrix (`LAN -> WAN`, `WAN -> DMZ`)            | `logging monitor                     | match "drop"` |

Look at the difference between Cisco ASA and Juniper SRX:

On a Cisco ASA, NAT translation occurs before interface Access Control Lists (ACLs) are checked. Your inbound ACL must reference the real internal IP address of the destination server.

On a Juniper SRX (JunOS), Destination NAT occurs before Security Policies. Your policy must evaluate traffic moving between source and destination zones (untrust -> dmz) referencing the static or pool NAT address!

If you write a Juniper policy using Cisco logic, JunOS silently drops the packet.


The Mess: The 8-Hour IPSec Phase 2 Stall

The classic multi-vendor nightmare occurred during a project to build a site-to-site IPSec VPN tunnel between a clientโ€™s central headquarters (Cisco ASA 5510) and a remote branch office (Juniper SRX 210).

The field engineer assigned to the ticket spent eight hours on site.

He verified physical cables, re-typed pre-shared keys ten times, and confirmed that both gateways could ping each other across the public internet.

IKE Phase 1 negotiated successfully (MM_ACTIVE on Cisco ASA).

But Phase 2 (IPSec SA) refused to establish. The tunnel remained stubbornly down.

# Cisco ASA Command Output: IKE Phase 1 Active, Phase 2 Failing
show crypto isakmp sa
# Output: 1  IKE Peer 202.71.10.5  MM_ACTIVE (Phase 1 OK)

show crypto ipsec sa
# Output: No IPSec SAs established for peer 202.71.10.5! (Phase 2 Dead)

The engineer was preparing to replace the Juniper SRX hardware, assuming a faulty crypto accelerator ASIC.

I arrived on site and ran live flow traceoptions on the Juniper SRX JunOS shell:

# Tailing Juniper SRX KMD (Key Management Daemon) Log
set security ike traceoptions file ike-debug
set security ike traceoptions flag all
show log ike-debug | match "proposal|mismatch"
# Output: KMD_PM_SA_PROPOSAL_NONE: No matching Phase 2 proposal found!
# Local PFS Group: Group 5 (1536-bit) | Remote PFS Group: DISABLED

The smoking gun was revealed in vendor default behavior:

  • Cisco ASA Default: Disabled Perfect Forward Secrecy (PFS: Disabled) in Phase 2 transform sets unless explicitly configured.
  • Juniper SRX Default: Enforced PFS Group 5 (1536-bit DH Group) in Phase 2 security proposals.

Because vendor CLI defaults were mismatched, IKE Phase 1 succeeded, but the Juniper SRX silently rejected Ciscoโ€™s Phase 2 proposal because Cisco wasnโ€™t sending a PFS Diffie-Hellman Group 5 exchange!

The Cisco ASA console output showed zero error logsโ€”it simply waited forever for Phase 2 ACKs that never arrived.


The Solution: Explicit Crypto Synchronization & Packet Tracing

We fixed the IPSec VPN in 90 seconds by updating the Cisco ASA crypto map to explicitly match Juniperโ€™s Perfect Forward Secrecy Group 5 requirement:

# Cisco ASA Configuration: Explicitly Matching Phase 2 PFS Group 5
crypto map OUTSIDE_MAP 10 set pfs group5
crypto map OUTSIDE_MAP 10 set ikev1 transform-set ESP-AES-256-SHA
# Verifying IPSec Phase 2 SA Status on Juniper SRX
show security ipsec security-associations
# Output: Total active SAs: 1 | Direction: Inbound/Outbound | State: Active (ESP AES-256 / SHA1 / PFS Group 5)

To eliminate multi-vendor guessing across our team, we established a Multi-Vendor Debugging Matrix:

  1. Never Rely on Vendor Defaults: Always explicitly define Phase 1 / Phase 2 parameters (IKE Lifetime, Encryption AES-256, Hash SHA-256, DH Group 5, PFS Group 5) in code.
  2. Use Native Flow Tracing: Use packet-tracer on Cisco ASA and show security flow session / traceoptions on Juniper SRX to trace raw packet execution through the kernel pipeline.

The Impact

  • Sub-5-Minute VPN Triage: Reduced multi-vendor IPSec VPN troubleshooting times from hours of guessing to minutes of traceoption analysis.
  • Zero Syntax Outages: Trained field engineers on vendor-specific packet processing order across JunOS, ASA, FortiOS, and SonicOS.
  • 100% Interoperability: Standardized multi-vendor crypto templates across hundreds of Spectranet enterprise WAN client sites.

Key Takeaway

Master the Packet Processing Pipeline Across Firewall Vendors.

Never assume different firewall vendors evaluate security policies and NAT rules in the same order. Cisco ASA evaluates NAT before ACLs, Juniper JunOS evaluates Zone Policies after Destination NAT, and vendor default IPSec crypto proposals differ wildly. Always explicitly specify Phase 2 PFS Group parameters and use native kernel flow-tracing CLI tools to diagnose multi-vendor drops.


Architecture and decisions: mine. Debugging sessions at odd hours: mine. AI assistance: structure, syntax, first draft. โ€” Sachin

SKS

Sachin Kumar Sharma

Associate Director (Infrastructure & Cloud Architecture Strategy) | 20+ Yrs Exp

Architecting resilient multi-cloud enterprise landing zones, SDN overlay fabrics, DevSecFinOps automation pipelines, and autonomous Agentic AI platforms.

๐Ÿ“ฌ

๐Ÿ“ฌ Stay Updated on Tech Releases

Sign up to get notified when I publish new production war stories, agentic AI architecture blueprints, or open-source infrastructure tools.

โšก Theme Adaptive Shift
Switching layouts matching domain reading affinity...