Network Address Translation (NAT) is an Internet technology that was originally developed to work around the growing scarcity of Internet Protocol (IP) addresses on the Internet. The current, and most widely used, Internet Protocol (IPv4) supports more than four billion addresses. However, because of inefficient allocation of addresses, routing constraints, and the Internet's phenomenal growth, this number has proven insufficient. The NAT solution is to use private addresses on a company's (or homeowner's) internal network and only convert those internal addresses to globally routable IP addresses when communicating through a gateway (e.g., router, firewall, other switching or routing device) to hosts (other computers/servers) on the Internet. In some applications, hosts currently communicating will get their own globally routable IP address, while in other applications, as few as one globally routable IP address may be used for multiple internal hosts. Ideally, this translation will be invisible to the underlying networking applications and protocols. NAT functionality can also be exploited for its security features (internal IP addresses are effectively “hidden” to the external world) and has been employed in session redirection and load balancing.
There are many products available today that employ NAT functionality, including routers for business and home use, firewalls, and Internet/residential gateways. Some computer operating systems also implement NAT functionality so that a server or workstation running such an operating system can act as a NAT-enabled software router or firewall. Applications of NAT have been focused on address translations based on network structure, resource availability, and simple application requirements.
As is understood in the prior art, the first user 160 transmits packets to the externally known IP address for the application server 140 (196.28.43.2). With no regard for who the user is or what the resource is, the NAT router 110 receives the packets containing the externally known destination IP address 180 (196.28.43.2) and utilizes the NAT map 100 to translate the external address (196.28.43.2) to a corresponding internal IP address (10.33.96.5) 190 and routes the packets accordingly. The second user 170 sends packets to the file server 150 (using external IP address 196.29.74.4) and the NAT router 110 translates the external address to the internal IP address (10.33.96.9) and forwards to the file server 150. If the application server 140 or file server 150 communicates with an external user, the NAT router 110 utilizes the NAT map 100 to translate the source address from the internal IP address 190 (10.33.96.5 and 10.33.96.9 respectively) to the externally known IP address 180 (196.28.43.2 and 196.29.74.4) prior to forwarding the packets externally. The external users therefore do not know the internal IP addresses. Although as illustrated in
Session flow, also referred to herein as flow, is well known to those skilled in the art and is described in detail in the Internet Engineering Task Force (IETF) Request for Comments (RFC) 2663, which is incorporated herein by reference. Session flow is a combination of inbound and outbound packets that form part of a session initiated in one direction. Packet flow is defined in RFC 2663 as the direction in which the packet has traveled with reference to a network interface. As an example, a session (session flow) initiated by a user on a server for telnet would consist of packet flows in both the inbound and outbound directions.
As network applications and Web application services have proliferated and corporate networks have become more distributed, there has been a growing need for more flexibility in address translation functionality. NAT is a process in which IP addresses are mapped from one group to another, transparent to end users. Network Address Port Translation (NAPT) is a method by which many network addresses and their TCP/UDP (Transmission Control Protocol/User Datagram Protocol) ports are translated into a single network address and its TCP/UDP ports. NAPT works well to share a single globally routable IP address when an internal user initiates the contact and receives a reply on the same port. The processes of NAT and NAPT are well known to those skilled in the art and are described in detail in ETF document RFC 3022, which is incorporated herein by reference. However, when multiple applications using the same well-known port (such as TCP port 443 for secure socket layer) are placed behind an NAPT enabled device some of the applications may become inoperative for inbound flows.
Other features of NAT have been developed, including the use of NATs for load sharing, where a session load can be distributed across a pool of servers, instead of directed to a single server. The use of NATs for load sharing is described in the IEETF document RFC 2391, which is incorporated herein by reference. A type of NAT has been developed for interfacing between end-nodes using version 6 of the Internet protocol (V6) trying to communicate with end-nodes using version 4 (V4) and vice versa. This type of Network Address Translation—Protocol Translation (NAT-PT) is described in RFC 2766, which is incorporated by reference herein.
The prior art systems essentially use address maps to provide address translations regardless of who the client is and what the service is. This limited flexibility results in unrestricted user access and uniform address translation. What is needed is a way to create and adjust network address translation configurations based on user and resource-specific network policies. Such capability would result in higher security based on user authorization, greater control of network resources and the general ability to vary network address translation for a wide range of purposes.
A network protection device (firewall or network access management system) may be responsible for establishing and enforcing packet traffic policies into and out of a corporate or home network. Each packet entering a piece of network protection equipment may be classified into a particular flow and, based on the established policies, either forwarded to a destination or dropped. In some cases, the source and/or destination addresses and ports may be modified for all packets in a particular flow. This may be done for a number of reasons, including security, load balancing, and to work around equipment failures. This rewriting of addresses and ports is referred to herein as “translation.” The set of translations that are active at any particular time is called a NAT configuration.
In an advanced access management system, resources may be made available (authorized) for specific users at specific times and in user-specific ways. A “policy” may be defined by the precise rules for how a particular resource is made available to a particular user at a particular time. An advanced access management system may filter some or all packets entering the system based on all of the policies in force when the packet arrives. In one embodiment, each policy within an access management system may employ a different NAT configuration. In this way, the address translation may vary from policy to policy (user to user). In an embodiment, no two policies need carry the same set of NAT translation parameters. This allows for resources to be given customized access rules and address translation functionality for each user.
Before explaining at least one embodiment in detail, it is to be understood that the invention is not limited in its application to the details of construction and to the arrangements of the components set forth in the description or illustrated in the drawings. The invention is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein, as well as the abstract, are for the purpose of description and should not be regarded as limiting.
Those skilled in the art will appreciate that the conception upon which this disclosure is based may readily be used as a basis for designing other structures, methods, and systems for carrying out the several purposes of the present invention.
The accompanying drawings, which are incorporated in and form a part of the specification, illustrate embodiments of the present invention and, together with the description serve to explain the principles of the invention.
In describing an embodiment of the invention illustrated in the drawings, specific terminology will be used for the sake of clarity. However, the invention is not intended to be limited to the specific terms so selected, and it is to be understood that each specific term includes all technical equivalents which operate in a similar manner to accomplish a similar purpose.
The firewall 240 may provide traditional proxy/firewall protection based on simple packet rules. The typical proxy/firewall will block most or all external intruders, while allowing users within the company to access internal resources as well as resources connected to the Internet 250. The AMS 230 provides for authenticated, secure access to internal server equipment (e.g., application servers 210) by utilizing policies established by, for example, a system administrator. The policies define the use of more complex, multi-layer packet filtering rules, along with a means for authenticating users wishing to access resources within the company. The AMS 230 may also perform network address translation based on policies defined (e.g., authenticated users).
We will now discuss an embodiment of network address translation for communications with this network 400 with respect to the NAT map 300 of
Packets in the return flow (from application server 430 or file server 440) have their source address translated from local address (10.33.96.5 and 10.33.96.9 respectively) to the externally known address (198.76.29.2 and 198.76.29.6 respectively based on the user the packet is destined for). The AMS 420 determines the user by looking at the destination IP address. TCP/UDP port numbers are also mapped, as necessary, in a similar fashion. In this way, the user at the external/partner company 440 has no direct knowledge of the host IP addresses internal to the company and cannot directly access hosts within the company.
Referring back to
Referring to
When used herein the term policy refers to a set of access or security rules associated with one or more parameters of a user including, but not limited to, group membership, level of authorization or clearance, current network address, time of day, or location. Policies allow users access to certain network resources, and deny them access to other resources, either temporarily (e.g. for time of day based rules or location based rules) or permanently (level of authorization or clearance). In one embodiment, a user logs onto a system with a user ID and a password, and based on the policies associated with that user, they receive access to, or are denied access to, certain network resources. Other mechanisms can be used to determine which policies are applicable, including determinations based on information transmitted from the user.
According to one embodiment, an AMS may utilize a NAT map where the user address map and the resource address map can be divided into internal maps and external maps. That is, the NAT map may include a user address map as well as a resource address map.
In the event that the incoming packet belongs to an existing flow 617, the bind selector 660 will look up the active address binds 650 against the existing flow ID and determine the appropriate address bind to be applied for the flow associated with the incoming packet.
For flows originating from the internal network to the external network, the AMS may utilize a particular policy based NAT table. Similarly, for flows originating from the external network to the internal network, a different policy based NAT table may be utilized.
For example, if an internal user wishes to access an external web server (an external resource) and has a specific IP address they use for the web server, the internal user address map may identify the resource associated with the unique IP address as an external resource. The outside resource address map may then identify the common IP address for that resource.
NAT address maps may be generated automatically, and they may optionally be edited by a system administrator. In addition, the administrator may set policies for the generation and/or selection of NAT address maps. The particular NAT address map that is used at any given time may depend on the policy that applies to the particular packet flow that is being routed. For example, the NAT resource address maps are typically generated by the AMS at the time of resource definition. User address maps may be automatically generated from policies established during system configuration, but may also be edited manually to fine tune policies. According to one embodiment, default NAT address maps are generated during the initialization and configuration of the AMS.
Computer program instructions to implement a software embodiment of the present invention may be stored in a computer program memory or on a computer readable carrier such as a disk, memory stick, portable memory device, communications signal or carrier wave. The instruments may be carried out in any computer programming language.
The many features and advantages of the invention are apparent from the detailed specification. Since numerous modifications and variations will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation illustrated and described. Accordingly, all appropriate modifications and equivalents may be included within the scope of the invention.
This present application claims priority to and is a continuation of U.S. Non-Provisional application Ser. No. 10/857,225, entitled “Policy Based Network Address Translation”, filed on May 28, 2004, which claims the benefit of and priority to U.S. Provisional Patent Application No. 60/473,964, filed May 28, 2003, both of which are incorporated herein by reference in their entirety. This patent application incorporates by reference in its entirety each of the following U.S. patent applications: 1) “Method and System for Identifying Bidirectional Packet Flow” filed on May 28, 2004, having U.S. application Ser. No. 10/857,703, now abandoned; 2) “Method, System and Software for State Signing of Internet Resources” filed on May 28, 2004, having U.S. application Ser. No. 10/857,536, now abandoned; and 3) “Multilayer Access Control Security System” filed on May 28, 2004, having U.S. application Ser. No. 10/857,224 and co-pending with the present application.
Number | Name | Date | Kind |
---|---|---|---|
5999525 | Krishnaswamy et al. | Dec 1999 | A |
6006264 | Colby et al. | Dec 1999 | A |
6023724 | Bhatia et al. | Feb 2000 | A |
6058431 | Srisuresh et al. | May 2000 | A |
6104700 | Haddock et al. | Aug 2000 | A |
6173325 | Kukreja | Jan 2001 | B1 |
6249801 | Zisapel et al. | Jun 2001 | B1 |
6289382 | Bowman-Amuah | Sep 2001 | B1 |
6321336 | Applegate et al. | Nov 2001 | B1 |
6321337 | Reshef et al. | Nov 2001 | B1 |
6324582 | Sridhar et al. | Nov 2001 | B1 |
6332163 | Bowman-Amuah | Dec 2001 | B1 |
6333931 | LaPier et al. | Dec 2001 | B1 |
6339832 | Bowman-Amuah | Jan 2002 | B1 |
6360265 | Falck et al. | Mar 2002 | B1 |
6389462 | Cohen et al. | May 2002 | B1 |
6415329 | Gelman et al. | Jul 2002 | B1 |
6434568 | Bowman-Amuah | Aug 2002 | B1 |
6434618 | Cohen et al. | Aug 2002 | B1 |
6434628 | Bowman-Amuah | Aug 2002 | B1 |
6438594 | Bowman-Amuah | Aug 2002 | B1 |
6442748 | Bowman-Amuah | Aug 2002 | B1 |
6477580 | Bowman-Amuah | Nov 2002 | B1 |
6477665 | Bowman-Amuah | Nov 2002 | B1 |
6484206 | Crump et al. | Nov 2002 | B2 |
6496850 | Bowman-Amuah | Dec 2002 | B1 |
6496935 | Fink et al. | Dec 2002 | B1 |
6502213 | Bowman-Amuah | Dec 2002 | B1 |
6523027 | Underwood | Feb 2003 | B1 |
6529909 | Bowman-Amuah | Mar 2003 | B1 |
6529948 | Bowman-Amuah | Mar 2003 | B1 |
6539396 | Bowman-Amuah | Mar 2003 | B1 |
6549949 | Bowman-Amuah | Apr 2003 | B1 |
6550057 | Bowman-Amuah | Apr 2003 | B1 |
6571282 | Bowman-Amuah | May 2003 | B1 |
6571285 | Groath et al. | May 2003 | B1 |
6578068 | Bowman-Amuah | Jun 2003 | B1 |
6584569 | Reshef et al. | Jun 2003 | B2 |
6601192 | Bowman-Amuah | Jul 2003 | B1 |
6601233 | Underwood | Jul 2003 | B1 |
6601234 | Bowman-Amuah | Jul 2003 | B1 |
6606660 | Bowman-Amuah | Aug 2003 | B1 |
6606744 | Mikurak | Aug 2003 | B1 |
6609128 | Underwood | Aug 2003 | B1 |
6615199 | Bowman-Amuah | Sep 2003 | B1 |
6615253 | Bowman-Amuah | Sep 2003 | B1 |
6615357 | Boden et al. | Sep 2003 | B1 |
6633878 | Underwood | Oct 2003 | B1 |
6636242 | Bowman-Amuah | Oct 2003 | B2 |
6640238 | Bowman-Amuah | Oct 2003 | B1 |
6640244 | Bowman-Amuah | Oct 2003 | B1 |
6640249 | Bowman-Amuah | Oct 2003 | B1 |
6665702 | Zisapel et al. | Dec 2003 | B1 |
6671818 | Mikurak | Dec 2003 | B1 |
6683873 | Kwok et al. | Jan 2004 | B1 |
6687732 | Bector et al. | Feb 2004 | B1 |
6691227 | Neves et al. | Feb 2004 | B1 |
6697377 | Ju et al. | Feb 2004 | B1 |
6697824 | Bowman-Amuah | Feb 2004 | B1 |
6704873 | Underwood | Mar 2004 | B1 |
6715145 | Bowman-Amuah | Mar 2004 | B1 |
6718359 | Zisapel et al. | Apr 2004 | B2 |
6718535 | Underwood | Apr 2004 | B1 |
6725253 | Okano et al. | Apr 2004 | B1 |
6731625 | Eastep et al. | May 2004 | B1 |
6735691 | Capps et al. | May 2004 | B1 |
6742015 | Bowman-Amuah | May 2004 | B1 |
6742045 | Albert et al. | May 2004 | B1 |
6760775 | Anerousis et al. | Jul 2004 | B1 |
6772347 | Xie et al. | Aug 2004 | B1 |
6775692 | Albert et al. | Aug 2004 | B1 |
6801528 | Nassar | Oct 2004 | B2 |
6826627 | Sjollema et al. | Nov 2004 | B2 |
6832322 | Boden et al. | Dec 2004 | B1 |
6842906 | Bowman-Amuah | Jan 2005 | B1 |
6871346 | Kumbalimutt et al. | Mar 2005 | B1 |
6880086 | Kidder et al. | Apr 2005 | B2 |
6891830 | Curtis | May 2005 | B2 |
6904449 | Quinones | Jun 2005 | B1 |
6909708 | Krishnaswamy et al. | Jun 2005 | B1 |
6920502 | Araujo et al. | Jul 2005 | B2 |
6931411 | Babiskin et al. | Aug 2005 | B1 |
6934288 | Dempo | Aug 2005 | B2 |
RE38902 | Srisuresh et al. | Nov 2005 | E |
6985901 | Sachse et al. | Jan 2006 | B1 |
6996628 | Keane et al. | Feb 2006 | B2 |
6996631 | Aiken et al. | Feb 2006 | B1 |
7000012 | Moore et al. | Feb 2006 | B2 |
7028333 | Tuomenoksa et al. | Apr 2006 | B2 |
7028334 | Tuomenoksa | Apr 2006 | B2 |
7047424 | Bendinelli et al. | May 2006 | B2 |
7072807 | Brown et al. | Jul 2006 | B2 |
7085854 | Keane et al. | Aug 2006 | B2 |
7093280 | Ke et al. | Aug 2006 | B2 |
7100195 | Underwood | Aug 2006 | B1 |
7102996 | Amdahl et al. | Sep 2006 | B1 |
7113962 | Kee et al. | Sep 2006 | B1 |
7114180 | DeCaprio | Sep 2006 | B1 |
7117530 | Lin | Oct 2006 | B1 |
7123613 | Chawla et al. | Oct 2006 | B1 |
7124101 | Mikurak | Oct 2006 | B1 |
7130807 | Mikurak | Oct 2006 | B1 |
7136645 | Hanson et al. | Nov 2006 | B2 |
7155515 | Brown et al. | Dec 2006 | B1 |
7162509 | Brown et al. | Jan 2007 | B2 |
7181766 | Bendinelli et al. | Feb 2007 | B2 |
7200530 | Brown et al. | Apr 2007 | B2 |
7216173 | Clayton et al. | May 2007 | B2 |
7227872 | Biswas et al. | Jun 2007 | B1 |
7260649 | Somasundaram et al. | Aug 2007 | B1 |
7272853 | Goodman et al. | Sep 2007 | B2 |
7315541 | Housel et al. | Jan 2008 | B1 |
7317717 | Pankajakshan et al. | Jan 2008 | B2 |
7318100 | Demmer et al. | Jan 2008 | B2 |
7334049 | Somasundaram et al. | Feb 2008 | B1 |
7385924 | Riddle | Jun 2008 | B1 |
7395335 | Brown et al. | Jul 2008 | B2 |
7398552 | Pardee et al. | Jul 2008 | B2 |
7464264 | Goodman et al. | Dec 2008 | B2 |
7512702 | Srivastava et al. | Mar 2009 | B1 |
20010016914 | Tabata | Aug 2001 | A1 |
20010037387 | Gilde et al. | Nov 2001 | A1 |
20010047406 | Araujo et al. | Nov 2001 | A1 |
20020023152 | Oguchi | Feb 2002 | A1 |
20020029285 | Collins | Mar 2002 | A1 |
20020032725 | Araujo et al. | Mar 2002 | A1 |
20020032798 | Xu | Mar 2002 | A1 |
20020038339 | Xu | Mar 2002 | A1 |
20020042875 | Shukla | Apr 2002 | A1 |
20020073061 | Collins | Jun 2002 | A1 |
20020081971 | Travostino | Jun 2002 | A1 |
20020083175 | Afek et al. | Jun 2002 | A1 |
20020103846 | Zisapel et al. | Aug 2002 | A1 |
20020106005 | Motiwala et al. | Aug 2002 | A1 |
20020138618 | Szabo | Sep 2002 | A1 |
20020142774 | Saint-Hilaire et al. | Oct 2002 | A1 |
20020147822 | Susai et al. | Oct 2002 | A1 |
20020152373 | Sun et al. | Oct 2002 | A1 |
20020165960 | Chan | Nov 2002 | A1 |
20020169887 | MeLampy et al. | Nov 2002 | A1 |
20020191612 | Curtis | Dec 2002 | A1 |
20020199007 | Clayton et al. | Dec 2002 | A1 |
20030014623 | Freed et al. | Jan 2003 | A1 |
20030014628 | Freed et al. | Jan 2003 | A1 |
20030041091 | Cheline et al. | Feb 2003 | A1 |
20030041167 | French et al. | Feb 2003 | A1 |
20030046586 | Bheemarasetti et al. | Mar 2003 | A1 |
20030046587 | Bheemarasetti et al. | Mar 2003 | A1 |
20030055962 | Freund et al. | Mar 2003 | A1 |
20030067874 | See et al. | Apr 2003 | A1 |
20030084162 | Johnson et al. | May 2003 | A1 |
20030088788 | Yang | May 2003 | A1 |
20030093691 | Simon et al. | May 2003 | A1 |
20030110192 | Valente et al. | Jun 2003 | A1 |
20030123481 | Neale et al. | Jul 2003 | A1 |
20030131079 | Neale et al. | Jul 2003 | A1 |
20030149899 | Boden et al. | Aug 2003 | A1 |
20030154283 | Brown | Aug 2003 | A1 |
20030182423 | Shafir et al. | Sep 2003 | A1 |
20030182431 | Sturniolo et al. | Sep 2003 | A1 |
20030188001 | Eisenberg et al. | Oct 2003 | A1 |
20030191799 | Araujo et al. | Oct 2003 | A1 |
20030195984 | Zisapel et al. | Oct 2003 | A1 |
20030198189 | Roberts et al. | Oct 2003 | A1 |
20030212776 | Roberts et al. | Nov 2003 | A1 |
20030217126 | Polcha et al. | Nov 2003 | A1 |
20030223361 | Hussain et al. | Dec 2003 | A1 |
20040006643 | Dolson et al. | Jan 2004 | A1 |
20040059942 | Xie | Mar 2004 | A1 |
20040073707 | Dillon | Apr 2004 | A1 |
20040078621 | Talaugon et al. | Apr 2004 | A1 |
20040095934 | Cheng et al. | May 2004 | A1 |
20040100907 | Illikkal et al. | May 2004 | A1 |
20040100976 | Chang et al. | May 2004 | A1 |
20040177158 | Bauch et al. | Sep 2004 | A1 |
20040215746 | McCanne et al. | Oct 2004 | A1 |
20040218611 | Kim | Nov 2004 | A1 |
20040249975 | Tuck et al. | Dec 2004 | A1 |
20040260922 | Goodman et al. | Dec 2004 | A1 |
20040268357 | Joy et al. | Dec 2004 | A1 |
20040268358 | Darling et al. | Dec 2004 | A1 |
20050013280 | Buddhikot et al. | Jan 2005 | A1 |
20050015507 | Chin | Jan 2005 | A1 |
20050022203 | Zisapel et al. | Jan 2005 | A1 |
20050089025 | Boyer et al. | Apr 2005 | A1 |
20050132030 | Hopen et al. | Jun 2005 | A1 |
20050141507 | Curtis | Jun 2005 | A1 |
20050195780 | Haverinen et al. | Sep 2005 | A1 |
20050198335 | Brown et al. | Sep 2005 | A1 |
20050210150 | Bahl | Sep 2005 | A1 |
20050286466 | Tagg et al. | Dec 2005 | A1 |
20060064478 | Sirkin | Mar 2006 | A1 |
20060080441 | Chen et al. | Apr 2006 | A1 |
20060236095 | Smith et al. | Oct 2006 | A1 |
20070067046 | Berg | Mar 2007 | A1 |
20070156852 | Sundarrajan et al. | Jul 2007 | A1 |
20070245409 | Harris et al. | Oct 2007 | A1 |
20070280232 | Dec et al. | Dec 2007 | A1 |
20080034416 | Kumar et al. | Feb 2008 | A1 |
20080046616 | Verzunov et al. | Feb 2008 | A1 |
20080225748 | Khemani et al. | Sep 2008 | A1 |
20080225753 | Khemani et al. | Sep 2008 | A1 |
20080229381 | Sikka et al. | Sep 2008 | A1 |
20080320151 | McCanne et al. | Dec 2008 | A1 |
Number | Date | Country |
---|---|---|
1 343 296 | Sep 2003 | EP |
1 398 715 | Mar 2004 | EP |
WO-2006012612 | Feb 2006 | WO |
Number | Date | Country | |
---|---|---|---|
20100251335 A1 | Sep 2010 | US |
Number | Date | Country | |
---|---|---|---|
60473964 | May 2003 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10857225 | May 2004 | US |
Child | 12795496 | US |