Remote access VPN remains a core requirement for many organizations. Cisco ASA appliances can provide secure L2TP over IPsec connectivity for client devices (Windows, macOS, Linux, mobile). This guide walks you through a practical, step-by-step configuration with concrete commands, troubleshooting tips, and security considerations so you can deploy L2TP/IPsec on ASA appliances reliably.
Overview and prerequisites
Before beginning configuration, confirm the following:
- ASA software version: use a supported ASA OS (e.g., 9.x or later). Commands below are geared to modern ASA releases; adjust for legacy platforms.
- Public IP on the outside interface (NAT traversal/UDP 500 and 4500 must be reachable).
- Administrative access (enable/privileged) and backup of existing ASA configuration.
- Client-side support for L2TP/IPsec (built-in in most OSes). If using third-party clients, ensure compatibility.
- DNS and routing for reachability to internal resources and ASA management.
Design decisions
Decide on authentication model and IP addressing for remote peers:
- Authentication: local ASA username database (for small deployments) or AAA via RADIUS/LDAP for enterprise-grade centralized authentication.
- Client IP pool: create an IP address pool for remote clients that does not overlap internal networks or NAT pools.
- Split tunneling: choose whether to route all client traffic through the VPN or only specific subnets (recommended for security: full tunnel unless bandwidth concerns).
Step 1 — Configure IKE (ISAKMP) policy
IPsec/IKE settings define how the ASA negotiates the secure channel. Use strong algorithms and compatible settings for clients. Example policy:
crypto ikev1 policy 10
authentication pre-share
encryption aes-256
hash sha
group 14
lifetime 86400
Then enable IKE on the outside interface:
crypto ikev1 enable outside
Notes: For legacy clients you may need to add additional IKE policies with older algorithms. Prefer IKEv1 for L2TP/IPsec (L2TP endpoints typically use IKEv1). If using NAT-T, the ASA automatically supports it with the above configuration.
Step 2 — Create IPsec transform set
Define the IPsec transform set used for the ESP tunnel between client and ASA:
crypto ipsec ikev1 transform-set L2TP-TS esp-aes-256 esp-sha-hmac
Optionally lock down perfect forward secrecy (PFS) in the tunnel-group ipsec-attributes if desired.
Step 3 — Define a group-policy for L2TP clients
Group-policy controls client tunnel characteristics such as protocol and DNS/WINS settings.
group-policy L2TP-Policy internal
group-policy L2TP-Policy attributes
vpn-tunnel-protocol l2tp-ipsec
dns-server value 8.8.8.8 8.8.4.4
wins-server value 10.10.10.10
Important: The vpn-tunnel-protocol l2tp-ipsec directive explicitly enables L2TP over IPsec for this policy.
Step 4 — Create tunnel-group (remote-access)
The tunnel-group ties together the group-policy, IP pool, and authentication settings.
Example using local authentication and an address pool:
ip local pool L2TP-Pool 192.168.200.1-192.168.200.254 mask 255.255.255.0
tunnel-group L2TP-Group type remote-access
tunnel-group L2TP-Group general-attributes
address-pool L2TP-Pool
default-group-policy L2TP-Policy
tunnel-group L2TP-Group ipsec-attributes
pre-shared-key STRONGSharedSecretHere
If you integrate with RADIUS: replace the pre-shared-key/username handling with authentication-server-group RADIUS-SERVER in the general-attributes and configure AAA server groups accordingly.
Step 5 — Configure local usernames (or AAA)
For small deployments you can use local ASA user accounts:
username vpnuser password VeryStrongPass privilege 0
For centralized auth, configure RADIUS/AAA server groups:
aaa-server RADIUS-SERVER protocol radius
aaa-server RADIUS-SERVER (inside) host 10.0.0.10
key
Step 6 — NAT exemption (important)
Remote client traffic must not be NATed when traveling to internal networks. Create an ACL to exempt VPN pool traffic and apply nat 0:
access-list NO-NAT extended permit ip 192.168.200.0 255.255.255.0 10.0.0.0 255.255.255.0
nat (inside) 0 access-list NO-NAT
Without NAT exemption, split-tunneling and access to internal resources will fail.
Step 7 — Apply crypto map (IKEv1) for remote-access
For remote-access on ASA, you typically enable ipsec on the interface for ikev1:
crypto ikev1 enable outside
crypto ikev1 policy 10 ... (as shown above)
Then ensure the tunnel-group ipsec-attributes are configured as previously shown. Note: ASA remote-access uses the tunnel-group approach rather than an explicit crypto map entry per group.
Step 8 — Allow necessary traffic on the outside interface
Ensure your firewall or upstream ACLs permit the following UDP/ESP traffic to the ASA public IP:
- UDP 500 (IKE)
- UDP 4500 (NAT-T)
- UDP 1701 (L2TP control) — when using L2TP over IPsec this is encapsulated but the ASA still expects L2TP control inside the IPsec tunnel; NAT-T handles UDP/4500 encapsulation.
- ESP (protocol 50) — the IPsec payload (ESP) if NAT-T is not applied.
On the ASA itself, you might need to permit VPN connection attempts via management ACLs if administrative restrictions are in place.
Step 9 — Client configuration checklist
On client endpoints ensure:
- Server/gateway: the ASA public IP or DNS name.
- Pre-shared key matches the ASA tunnel-group ipsec-attributes pre-shared-key.
- Username/password configured (local or AAA credentials).
- For Windows clients: create a new L2TP/IPsec VPN entry and set security type to L2TP/IPsec with pre-shared key; if using Windows 10, enable Allow these protocols: MS-CHAP v2.
- For macOS: create an L2TP over IPsec connection, input shared secret and credentials.
Troubleshooting tips
When something goes wrong, these ASA commands are invaluable:
show crypto ikev1 sa— check IKE SAs status and negotiations.show crypto ipsec sa— inspect IPsec SAs and packet counters.show vpn-sessiondb l2landshow vpn-sessiondb remote— remote session details (remote-access).debug crypto ikev1 127anddebug crypto ipsec 127— use carefully in non-production during troubleshooting to observe negotiation failures.- Check NAT rules and ACLs if traffic reaches ASA but cannot access internal resources.
Common issues and fixes:
- IKE negotiation failures: confirm pre-shared-key, IKE policy parameters (encryption/hash/group) match client.
- ESP not negotiated: ensure NAT-T is used if client is behind NAT; ASA will use UDP 4500 automatically when NAT is detected.
- Authentication fails: verify username/password or RADIUS settings and shared secrets.
- Split tunneling problems: review ACLs for exclusion and nat 0 rules.
Security hardening recommendations
- Use strong IKE and IPsec algorithms (AES-256, SHA-2, DH Group 14+).
- Enforce MS-CHAPv2 only if necessary; consider certificates for stronger client authentication.
- Rotate pre-shared keys and service account credentials periodically.
- Limit VPN access via group-policy ACLs to only the resources the user needs.
- Enable logging and forward logs to a SIEM for monitoring unusual access patterns.
Advanced considerations
If you need high availability, integrate the L2TP/IPsec configuration with ASA failover or clustering. Ensure identical configuration for the VPN components (IKE policies, group-policy, pool, tunnel-group) on both units. For large-scale deployments, use RADIUS for authentication, accounting, and dynamic authorization; integrate with certificate-based authentication for enhanced security and non-repudiation.
Example full configuration snippet
Below is a condensed example combining the key pieces (adapt IPs, secrets, and server names to your environment):
!-- IKE Policy
crypto ikev1 policy 10
authentication pre-share
encryption aes-256
hash sha
group 14
lifetime 86400
crypto ikev1 enable outside
crypto ipsec ikev1 transform-set L2TP-TS esp-aes-256 esp-sha-hmac
!-- Address pool
ip local pool L2TP-Pool 192.168.200.1-192.168.200.254 mask 255.255.255.0
!-- Group policy
group-policy L2TP-Policy internal
group-policy L2TP-Policy attributes
vpn-tunnel-protocol l2tp-ipsec
dns-server value 8.8.8.8
!-- Tunnel group (remote access)
tunnel-group L2TP-Group type remote-access
tunnel-group L2TP-Group general-attributes
address-pool L2TP-Pool
default-group-policy L2TP-Policy
tunnel-group L2TP-Group ipsec-attributes
pre-shared-key MyVeryStrongPSK
!-- Local user (optional)
username vpnuser password VeryStrongPass privilege 0
!-- NAT exemption
access-list NO-NAT extended permit ip 192.168.200.0 255.255.255.0 10.0.0.0 255.255.255.0
nat (inside) 0 access-list NO-NAT
Final checklist before go-live
- Validate IKE and IPsec negotiation from a test client.
- Ensure the client receives an IP from the pool and DNS resolution works.
- Verify access to internal resources and that NAT exemption is active.
- Confirm logging and monitoring of VPN events are functioning.
- Document credentials, PSKs, and configuration snapshots in your change management system.
Deploying L2TP over IPsec on Cisco ASA provides a flexible, widely supported remote access option for many client platforms. Follow the steps above, choose strong crypto settings, and integrate with centralized AAA for scalable, auditable deployments.
For more in-depth VPN guides, troubleshooting examples, and dedicated hosting recommendations, visit Dedicated-IP-VPN at https://dedicated-ip-vpn.com/.