Skip to main content
1 of 3

Cisco ASA NAT/ACL issues across EZVPN

I have an EZVPN running between two locations, Location A has a 5520 and is the EZVPN server, Location B has a 5506 and is a EZVPN client. Currently I'm trying to set NAT and ACL(s) so that hosts on the Location B inside network can access a few servers in Location A's DMZ. Below are my packet traces from both locations. Attached are sanitized configs from both locations.

*

*LocationA-Firewall# packet-tracer input inside tcp <Location B inside ip> 443 <Location A DMZ server ip> 443 detailed
Phase: 1
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:
Additional Information:
in   <Location B inside ip>  255.255.255.0   outside
Phase: 2
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
nat (dmz,outside) source static DMZ_Servers DMZ_Servers destination static (location B)-remote_network (location B)-remote_network no-proxy-arp route-lookup
Additional Information:
NAT divert to egress interface outside
Untranslate <Location B inside ip>/443 to <Location B inside ip>/443
Phase: 3
Type: ACCESS-LIST
Subtype:
Result: DROP
Config:
Implicit Rule
Additional Information:
 Forward Flow based lookup yields rule:
 in  id=0x73cb5f60, priority=11, domain=permit, deny=true
      hits=343658, user_data=0x5, cs_id=0x0, use_real_addr, flags=0x0, protocol=0
      src ip/id=0.0.0.0, mask=0.0.0.0, port=0, tag=0
      dst ip/id=0.0.0.0, mask=0.0.0.0, port=0, tag=0, dscp=0x0
      input_ifc=dmz, output_ifc=any
Result:
input-interface: dmz
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule*

===========================================================

LocationB-Firewall# packet-tracer input inside tcp <Location B inside ip> 443 <Location A DMZ server ip> 443

Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list

Phase: 2
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
found next-hop <internet next hop> using egress ifc  outside

Phase: 3
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
nat (inside,outside) source static Location_B_Networks Location_B_Networks destination static Remote_DMZ Remote_DMZ no-proxy-arp route-lookup
Additional Information:
NAT divert to egress interface outside
Untranslate <Location A DMZ server ip>/443 to <Location A DMZ server ip>/443

Phase: 4
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group OWL_inside in interface inside
access-list OWL_inside extended permit ip any4 any4
Additional Information:

Phase: 5
Type: NAT
Subtype:
Result: ALLOW
Config:      
nat (inside,outside) source static Location_B_Networks Location_B_Networks destination static Remote_DMZ Remote_DMZ no-proxy-arp route-lookup
Additional Information:
Static translate <Location B inside ip>/443 to <Location B inside ip>/443

Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:

Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:

Phase: 8
Type: ACCESS-LIST
Subtype: aaa-user
Result: ALLOW
Config:
Additional Information:

Phase: 9
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
nat (inside,outside) source static Location_B_Networks Location_B_Networks destination static Remote_DMZ Remote_DMZ no-proxy-arp route-lookup
Additional Information:

Phase: 10
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
             
Phase: 11
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:

Phase: 12
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 568767, packet dispatched to next module

Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow

On those packet traces I'm testing HTTPS access since it's one of the ports I need open across the two zones. Since it looks like the problem with Location A's ASA, I've tried the following NAT and ACL additions (outside_access_in is the ACL applied to the outside interface, dmz_access_in is the ACL applied to the DMZ):

access-list dmz_access_in extended permit tcp object (location B)-remote_network object-group DMZ_Servers eq https

nat (dmz,outside) source static DMZ_Servers DMZ_Servers destination static (location B)-remote_network (location B)-remote_network no-proxy-arp route-lookup

access-list outside_access_in extended permit tcp object (location B)-remote_network object-group DMZ_Servers eq https

None of those worked. Besides those ACL entries I have no entries in my ACLs concerning traffic from Location B. ASP packet captures have not helped either. Sanitized configs for both locations are as follows:

:
ASA Version 9.5(2) 
!
hostname LocationB-Firewall
domain-name company.com

names
!
interface GigabitEthernet1/1
 nameif outside
 security-level 0
 ip address dhcp setroute 
!
interface GigabitEthernet1/2
 nameif inside
 security-level 100
 ip address (location B inside) 255.255.255.0 
!
interface Management1/1
 management-only
 no nameif
 no security-level
 no ip address
!
boot system disk0:/asa952-lfbff-k8.SPA
ftp mode passive
dns server-group DefaultDNS
 domain-name oscarwinski.com
object network obj_any
 subnet 0.0.0.0 0.0.0.0
object-group network Location_A_Networks
 network-object (Location A network).0 255.255.255.0

object-group network Location_B_Networks
 network-object (Location B network).0 255.255.255.0

object-group network Remote_DMZ
 network-object host <Location A dmz server IP>


access-list LocationB_inside extended permit ip any4 any4 
 


no pager
logging console emergencies
logging buffered debugging
logging asdm informational
mtu outside 1500
mtu inside 1500
icmp unreachable rate-limit 1 burst-size 1
e
arp timeout 14400
no arp permit-nonconnected
nat (inside,outside) source static Location_B_Networks Location_B_Networks destination static Location_A_Networks Location_A_Networks no-proxy-arp route-lookup
nat (inside,outside) source static Location_B_Networks Location_B_Networks destination static Remote_DMZ Remote_DMZ no-proxy-arp route-lookup

!
object network obj_any
 nat (any,outside) dynamic interface


access-group LocationB_inside in interface inside

timeout xlate 3:00:00
timeout pat-xlate 0:00:30
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 sctp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
timeout tcp-proxy-reassembly 0:01:00
timeout floating-conn 0:00:00
user-identity default-domain LOCAL
aaa authentication ssh console LOCAL 
http server enable
http 192.168.1.0 255.255.255.0 inside
http 0.0.0.0 0.0.0.0 inside
no snmp-server location
no snmp-server contact
service sw-reset-button
crypto ipsec security-association pmtu-aging infinite
crypto ca trustpool policy
telnet timeout 5
no ssh stricthostkeycheck
ssh (Location A outside interface) 255.255.255.255 outside
ssh 0.0.0.0 0.0.0.0 inside
ssh timeout 5
ssh key-exchange group dh-group1-sha1
console timeout 0
vpnclient server (outside interface)
vpnclient mode network-extension-mode
vpnclient nem-st-autoconnect
vpnclient vpngroup vpn password *****
vpnclient username ezvpn password *****
vpnclient enable

!
dhcpd address (location B network)-(location B network) inside
dhcpd enable inside
!
threat-detection basic-threat
threat-detection statistics access-list
no threat-detection statistics tcp-intercept

dynamic-access-policy-record DfltAccessPolicy

!
class-map inspection_default
 match default-inspection-traffic
!
!
policy-map type inspect dns preset_dns_map
 parameters
  message-length maximum client auto
  message-length maximum 512
policy-map global_policy
 class inspection_default
  inspect dns preset_dns_map 
  inspect ftp 
  inspect h323 h225 
  inspect h323 ras 
  inspect rsh 
  inspect rtsp 
  inspect esmtp 
  inspect sqlnet 
  inspect skinny  
  inspect sunrpc 
  inspect xdmcp 
  inspect sip  
  inspect netbios 
  inspect tftp 
  inspect ip-options 
  inspect pptp
!
service-policy global_policy global
prompt hostname context 

: end

Location A below:

ASA Version 9.1(3) 
!
hostname LocationA-Firewall
domain-name company.com
interface GigabitEthernet0/0
 nameif outside
 security-level 0
 ip address (location A outside) 255.255.255.240 
!
interface GigabitEthernet0/1
 nameif inside
 security-level 100
 ip address (location A inside) 255.255.255.0 
!
!
object network (location B)-remote_network
 subnet (location B) 255.255.255.0
object-group network (Location A)_Networks
 network-object (Location A) 255.255.255.0
object-group network DMZ_Servers
 network-object <DMZ servers IPs>

access-list ezvpn_split extended permit tcp object-group (Location A)_Networks object (location B)-remote_network 


nat (dmz,outside) source static DMZ_Servers DMZ_Servers destination static (location B)-remote_network (location B)-remote_network no-proxy-arp route-lookup

nat (inside,outside) source static (Location A)_Networks (Location A)_Networks destination static (location B)-remote_network (location B)-remote_network no-proxy-arp route-lookup

!
crypto ipsec ikev1 transform-set TRANS_ESP_3DES_SHA esp-3des esp-sha-hmac 
crypto ipsec ikev1 transform-set TRANS_ESP_3DES_SHA mode transport
crypto ipsec ikev1 transform-set ESP-AES-256-MD5 esp-aes-256 esp-md5-hmac 
crypto ipsec ikev1 transform-set ESP-DES-SHA esp-des esp-sha-hmac 
crypto ipsec ikev1 transform-set ESP-3DES-SHA esp-3des esp-sha-hmac 
crypto ipsec ikev1 transform-set ESP-DES-MD5 esp-des esp-md5-hmac 
crypto ipsec ikev1 transform-set ESP-AES-192-MD5 esp-aes-192 esp-md5-hmac 
crypto ipsec ikev1 transform-set ESP-AES-256-SHA esp-aes-256 esp-sha-hmac 
crypto ipsec ikev1 transform-set ESP-AES-128-SHA esp-aes esp-sha-hmac 
crypto ipsec ikev1 transform-set ESP-AES-192-SHA esp-aes-192 esp-sha-hmac 
crypto ipsec ikev1 transform-set ESP-AES-128-MD5 esp-aes esp-md5-hmac 
crypto ipsec ikev1 transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac 
crypto ipsec ikev1 transform-set ESP-AES128-SHA esp-aes esp-sha-hmac 
crypto ipsec ikev1 transform-set aes256set esp-aes-256 esp-sha-hmac 
crypto ipsec security-association pmtu-aging infinite
crypto dynamic-map SYSTEM_DEFAULT_CRYPTO_MAP 65535 set ikev1 transform-set TRANS_ESP_3DES_SHA
crypto dynamic-map vpn_dyn_map 1 set ikev1 transform-set aes256set
crypto dynamic-map vpn_dyn_map 1 set reverse-route
crypto dynamic-map vpn_dyn_map 500 set ikev1 transform-set ESP-3DES-MD5
crypto map VPN 65535 ipsec-isakmp dynamic vpn_dyn_map
crypto map VPN interface outside
crypto isakmp identity address 
crypto isakmp nat-traversal 10
crypto ikev1 enable outside
crypto ikev1 policy 5
 authentication pre-share
 encryption aes
 hash sha
 group 2
 lifetime 86400
crypto ikev1 policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
crypto ikev1 policy 20
 authentication pre-share
 encryption 3des
 hash md5
 group 2
 lifetime 86400
crypto ikev1 policy 90
 authentication pre-share
 encryption aes-256
 hash sha
 group 5
 lifetime 86400
ssh 0.0.0.0 0.0.0.0 inside
management-access inside
no vpn-addr-assign aaa
no vpn-addr-assign dhcp
group-policy DfltGrpPolicy attributes
 vpn-tunnel-protocol ikev1 l2tp-ipsec ssl-client ssl-clientless
!username ezvpn password <removed>
 vpn-group-policy DefaultRAGroup
tunnel-group DefaultL2LGroup ipsec-attributes
 ikev1 pre-shared-key <removed>
tunnel-group DefaultRAGroup ppp-attributes
 no authentication chap
 authentication ms-chap-v2
tunnel-group ezvpn type remote-access
tunnel-group ezvpn general-attributes
 default-group-policy ezvpnpolicy
tunnel-group ezvpn ipsec-attributes
 ikev1 pre-shared-key <removed>
tunnel-group (location A outside) type ipsec-l2l
tunnel-group (location A outside) ipsec-attributes
 ikev1 pre-shared-key <removed>
!
class-map preset_dns_map
class-map global-class
 match access-list global_mpc
class-map apple_class
 match access-list dmz_access_in
class-map inspection_default
 match default-inspection-traffic
!
policy-map type inspect dns preset_dns_map
 parameters
  message-length maximum 512
policy-map type inspect http apple_map
 parameters
 match not request header host regex apple_domain
policy-map global_policy
 description Internet_Netflow
 class inspection_default
  inspect dns preset_dns_map 
  inspect ftp 
  inspect h323 h225 
  inspect h323 ras 
  inspect netbios 
  inspect rsh 
  inspect skinny  
  inspect sqlnet 
  inspect sunrpc 
  inspect tftp 
  inspect xdmcp 
  inspect http 
  inspect icmp 
  inspect rtsp 
  inspect sip  
 class global-class
  flow-export event-type all destination 10.1.1.25
 class apple_class
  inspect http apple_map 
!
service-policy global_policy global
prompt hostname context 
: end