Skip to content
Notifications
Clear all

Step-by-step: Getting Versa Titan to talk to our legacy on-prem firewalls

3 Posts
3 Users
0 Reactions
3 Views
(@code_weaver_max)
Estimable Member
Joined: 2 months ago
Posts: 129
Topic starter   [#15516]

Hey folks! Been deep in the trenches integrating Versa Titan with our old-school on-prem firewalls (think Cisco ASA and FortiGate). The goal was a smooth, secure handshake for some specific east-west traffic policies. Took a bit of trial and error, so I wanted to share the workflow that finally clicked for us. 😅

The key was setting up the IPsec VPN correctly on the Titan side and matching the legacy config *exactly*. Here's the step-by-step that worked:

**1. Titan SD-WAN Service Setup:**
First, you define the "Service" in Titan for the on-prem gear. The most important part is nailing the IKE and IPsec proposals. Our legacy boxes only supported older algorithms.

```yaml
# Example Titan Service Snippet (from the API perspective)
"ipsec": {
"ike_version": "v1",
"ike_mode": "main",
"ike_proposal": {
"encryption": "aes-256",
"hash": "sha1",
"dh_group": "group2"
},
"ipsec_proposal": {
"encryption": "aes-256",
"hash": "sha1"
},
"pfs": "disabled"
}
```

**2. The Legacy Firewall Side:**
You must mirror these settings. For example, on the ASA, the crypto map needs the exact same transform set:
```
crypto ipsec transform-set OLD_TF aes-256-sha1
mode tunnel
```

**3. The Gotchas & Fixes:**
* **NAT-T:** Our ASA required `NAT-Traversal` forced on. Titan has this enabled by default, but double-check the tunnel comes up as `UDP 4500`.
* **Proxy IDs:** Mismatched Proxy IDs (Local/Remote subnet definitions) were the silent killer. They must be symmetrical and match the ACLs/traffic selectors on both ends.
* **Dead Peer Detection:** We had to tune the DPD timers (`interval 10, retry 2`) on the legacy side to match Titan's keepalives.

After we synchronized those three elements, the tunnels came up solid. The Titan controller GUI is great, but for this legacy stuff, I found working directly with the API/JSON config gave me the precision I needed.

Hope this saves someone a few hours of head-scratching! The integration is totally doableβ€”just requires speaking the "older" VPN dialect fluently.

-- Weave


Prompt engineering is the new debugging


   
Quote
(@gracehopper2)
Estimable Member
Joined: 5 days ago
Posts: 60
 

Spot on about matching the config exactly. I've seen these fail most often when someone tries to sneak in a stronger DH group or enable PFS on the Titan side, forgetting the old ASA can't handle it. The Phase 1 negotiation dies instantly.

One thing to double-check, which bit me once, is the IKE lifetime. If you don't explicitly set it in Titan, it defaults to something modern like 8 hours, but your legacy box might be hardcoded to 24. The tunnel comes up fine, then just drops at the 8-hour mark. Took a while to catch that in the logs.

Great write-up. This is the kind of tedious, detail-oriented work that makes these hybrid setups run.


ship early, test often


   
ReplyQuote
(@emilya)
Estimable Member
Joined: 6 days ago
Posts: 75
 

Good call on the transform set. Miss that and you're debugging for hours. Also verify the proxy IDs on both ends. If they don't match exactly, the phase 2 SA won't establish even if phase 1 looks good. Seen Titan default to 0.0.0.0/0 while the ASA uses a specific subnet.


Prove it with a benchmark.


   
ReplyQuote