Introduction
This document discusses the configuration required on the Cisco Security Appliance/FWSM to allow a Point-to-Point Tunneling Protocol (PPTP)/Layer 2 Tunneling Protocol (L2TP) client to connect to a PPTP server through Network Address Translation (NAT).
The FWSM 3.1.x and later supports PPTP pass through with PAT. Use the PPTP inspection in order to enable this functionality.
Note: Use the same configuration of PIX for FWSM.
Refer to Configuring the Cisco Secure PIX Firewall to Use PPTP in order to configure a security appliance to accept PPTP connections.
In order to configure L2TP over IP Security (IPsec) from remote Microsoft Windows 2000/2003 and Windows XP clients to a PIX/ASA Security Appliance corporate office that use pre-shared keys with Microsoft Windows 2003 Internet, refer to L2TP Over IPsec Between Windows 2000/XP PC and PIX/ASA 7.2 Using Pre-shared Key Configuration Example.
Prerequisites
Requirements
In order to attempt this configuration, you must have a working PPTP server and client before you involve the PIX/ASA/FWSM.
Components Used
The information in this document is based on these software versions:
-
Cisco PIX Firewall Versions 6.x and above
-
Cisco ASA 5500 Series Security Appliance that runs version 7.x or above
-
FWSM that runs version 3.1.x or above
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Background Theory
PPTP is described in RFC 2637 . This protocol uses a TCP connection that uses port 1723 and an extension of generic routing encapsulation (GRE) [protocol 47] to carry the actual data (PPP frame). The TCP connection is initiated by the client, followed by the GRE connection that is initiated by the server.
Version 6.2 and Earlier Information
Because the PPTP connection is initiated as TCP on one port and the response is GRE protocol, the PIX Adaptive Security Algorithm (ASA) does not know that the traffic flows are related. As a result, it is necessary to configure ACLs to allow the return traffic into the PIX. PPTP through the PIX with NAT (one-to-one address mapping) works because the PIX uses the port information in the TCP or User Datagram Protocol (UDP) header to keep track of translation. PPTP through the PIX with Port Address Translation (PAT) does not work because there is no concept of ports in GRE.
Version 6.3 Information
The PPTP fixup feature in version 6.3 allows the PPTP traffic to traverse the PIX when configured for PAT. Stateful PPTP packet inspection is also performed in the process. The fixup protocol pptp command inspects PPTP packets and dynamically creates the GRE connections and translations necessary to permit PPTP traffic. Specifically, the firewall inspects the PPTP version announcements and the outgoing call request/response sequence. Only PPTP Version 1, as defined in RFC 2637, is inspected. Further inspection on the TCP control channel is disabled if the version announced by either side is not Version 1. In addition, the outgoing call request and reply sequence is tracked. Connections and/or translations are dynamically allocated as necessary to permit subsequent secondary GRE data traffic. The PPTP fixup feature must be enabled for PPTP traffic to be translated by PAT.
Version 7.x Information
The PPTP Application Inspection Engine in version 7.x operates in the same fashion as fixup protocol pptp does in version 6.3.
Conventions
Refer to Cisco Technical Tips Conventions for more information on document conventions.
PPTP with the Client Inside and the Server Outside
Network Diagram
This document uses this network setup:
Note: The IP addressing schemes used in this configuration are not legally routable on the Internet. They are RFC 1918 addresses which have been used in a lab environment.
Commands to Add for Version 6.2 and Earlier
Complete these steps to add commands for version 6.2:
-
Define the static mapping for the inside PC. The address seen on the outside is 192.168.201.5.
pixfirewall(config)#static (inside,outside) 192.168.201.5 10.48.66.106
netmask 255.255.255.255 0 0 -
Configure and apply the ACL to permit the GRE return traffic from the PPTP server to the PPTP client.
pixfirewall(config)#access-list acl-out permit gre host 192.168.201.25
host 192.168.201.5 -
Apply the ACL.
pixfirewall(config)#access-group acl-out in interface outside
Commands to Add for Version 6.3
Complete these steps to add commands for version 6.3:
-
Enable the fixup protocol pptp 1723 using this command.
pixfirewall(config)#fixup protocol pptp 1723
-
You do not need to define a static mapping because the PPTP fixup protocol is enabled. You can use PAT.
pixfirewall(config)#nat (inside) 1 0.0.0.0 0.0.0.0 0 0
pixfirewall(config)#global (outside) 1 interface
Commands to Add for Versions 7.x and 8.0 using inspection
Complete these steps to add commands for versions 7.x and 8.0 using the inspect command:
-
Add PPTP inspection to the default policy-map using the default class-map.
pixfirewall(config)#policy-map global_policy
pixfirewall(config-pmap)#class inspection_default
pixfirewall(config-pmap-c)#inspect pptp
-
You do not need to define a static mapping because the PIX now inspects PPTP traffic. You can use PAT.
pixfirewall(config)#nat (inside) 1 0.0.0.0 0.0.0.0 0 0
pixfirewall(config)#global (outside) 1 interfaceOR
Commands to Add for Versions 7.x and 8.0 using ACL
Complete these steps to add commands for versions 7.x and 8.0 using ACL.
-
Define the static mapping for the inside PC. The address seen on the outside is 192.168.201.5.
pixfirewall(config)#static (inside,outside) 192.168.201.5 10.48.66.106
netmask 255.255.255.255 0 0 -
Configure and apply the ACL to permit the GRE return traffic from the PPTP server to the PPTP client.
pixfirewall(config)#access-list acl-out permit gre host 192.168.201.25
host 192.168.201.5
pixfirewall(config)#access-list acl-out permit tcp host 192.168.201.25
host 192.168.201.5 eq 1723 -
Apply the ACL.
pixfirewall(config)#access-group acl-out in interface outside
Configuration for Versions 6.2 and Earlier
PIX Configuration - Client Inside, Server Outside |
---|
pixfirewall(config)#write terminal |
L2TP with the Client Inside and the Server Outside
Complete these steps in order to add commands for versions 7.x and 8.x that use ACL. (This configuration assumes the PPTP client and the server IP addresses are the same as for L2TP client and server.)
-
Define the static mapping for the inside PC. The address seen on the outside is 192.168.201.5.
pixfirewall(config)#static (inside,outside) 192.168.201.5 10.48.66.106
netmask 255.255.255.255 0 0 -
Configure and apply the ACL to permit the L2TP return traffic from the L2TP server to the L2TP client.
pixfirewall(config)#
pixfirewall(config)#access-list acl-out permit udp host 192.168.201.25
host 192.168.201.5 eq 1701 -
Apply the ACL.
pixfirewall(config)#access-group acl-out in interface outside
PPTP with the Client Outside and the Server Inside
Network Diagram
Note: The IP addressing schemes used in this configuration are not legally routable on the Internet. They are RFC 1918 addresses which have been used in a lab environment.
Commands to Add to All Versions
In this configuration example, the PPTP server is 192.168.201.5 (static to 10.48.66.106 inside), and the PPTP client is at 192.168.201.25 .
access-list acl-out permit gre host 192.168.201.25 host 192.168.201.5
access-list acl-out permit tcp host 192.168.201.25 host 192.168.201.5 eq 1723
static (inside,outside) 192.168.201.5 10.48.66.106 netmask 255.255.255.255 0 0
access-group acl-out in interface outside
L2TP with the Client Outside and the Server Inside
In this configuration example, the L2TP server is 192.168.201.5 (static to 10.48.66.106 inside), and the L2TP client is at 192.168.201.25. (This configuration assumes the PPTP client and server IP addresses are the same as for L2TP client and server.)
access-list acl-out permit udp host 192.168.201.25 host 192.168.201.5 eq 1701
static (inside,outside) 192.168.201.5 10.48.66.106 netmask 255.255.255.255 0 0
access-group acl-out in interface outside
Allow L2TP Over IPsec Through PIX/ASA 7.x and Above
The outside L2TP client tries to establish the L2TP over IPsec VPN connection with the inside L2TP server. In order to allow the L2TP over IPsec packets through the middle PIX/ASA, you must allow the ESP, ISAKMP(500), NAT-T, and L2TP port 1701 to establish the tunnel. The L2TP packets are translated in PIX and sent through the VPN tunnel.
global (outside) 1 interface
nat (inside) 0 0.0.0.0 0.0.0.0
static (inside,outside) 10.99.99.12 10.1.1.2 netmask 255.255.255.255
access-group outside_access_in in interface outside
access-list outside_access_in remark Access Rule to Allow ESP traffic
access-list outside_access_in extended permit esp host 10.99.99.2
host 10.99.99.12
access-list outside_access_in remark Access Rule to allow ISAKMP to
host 10.99.99.12
access-list outside_access_in extended permit udp host 10.99.99.2 eq isakmp
host 10.99.99.12
access-list outside_access_in remark Access Rule to allow port 4500 (NAT-T) to
host 10.99.99.12
access-list outside_access_in extended permit udp host 10.99.99.2 eq 4500
host 10.99.99.12
access-list outside_access_in remark Access Rule to allow port 1701 (L2TP) to
host 10.99.99.12
access-list outside_access_in extended permit udp host 10.99.99.2 eq 4500
host 10.99.99.12
Verify
There is currently no verification procedure available for this document.
Troubleshoot
This section provides information you can use to troubleshoot your configuration.
Multiple PPTP/L2TP Connections Fail when using PAT
You can only have one PPTP/L2TP connection through the PIX Security Appliance when you use PAT. This is because the necessary GRE connection is established over port 0 and the PIX Security Appliance only maps port 0 to one host.
Debug Commands
The Output Interpreter Tool ( registered customers only) (OIT) supports certain show commands. Use the OIT to view an analysis of show command output.
Note: Refer to Important Information on Debug Commands before you use debug commands.
This example shows a PPTP client inside the PIX initiating a connection to a PPTP server outside the PIX when there is no ACL configured to allow GRE traffic. With logging debug on the PIX, you can see the TCP port 1723 traffic initiation from the client and the rejection of the GRE protocol 47 return traffic.
pixfirewall(config)#loggin on
pixfirewall(config)#loggin console 7
pixfirewall(config)#302013: Built outbound TCP connection 4 for outside:
192.168.201.25 /1723 (192.168.201.25 /1723) to inside:10.48.66.106/4644
(192.168.201.5 /4644)
106010: Deny inbound protocol 47 src outside:192.168.201.25 dst
inside:192.168.201.5
106010: Deny inbound protocol 47 src outside:192.168.201.25 dst
inside:192.168.201.5