Per NAT IP Pool
This approach adds on to the previous one by adding another variable. In this case that variable is the IP addresses on the public side of the FortiGate. By having a pool of IP addresses to assign as the source IP address when NATing, the same number that was potentially available for the Global per protocol method can be multiplied by the number of external IP addresses in the pool. If you can assign a second IP address to the pool, you can double the potential number of sessions.
Example:
In this example it will be assumed that the FortiGate has 2 IP addresses that it can use. This could happen either by using two ISPs, or by having a pool of IP addresses assigned to a single interface. For simplicity will will refer to these IP public IP addresses as u.u.u.1 and u.u.u.2.
Here are two possible packets that would be considered different by the FortiGate so that any responses from the web server would make it back to their correct original sender.
From Student A
Attribute | Original Packet | Packet after NATing |
Source IP address or src-ip |
10.1.1.56 |
u.u.u.1 |
Destination IP address or dst-ip: |
w.w.w.1 |
w.w.w.1 |
Protocol |
tcp |
tcp |
Source port or src-port: |
10000 |
46372 |
Destination port or dst-port |
80 |
80 |
From Student B |
||
Attribute | Original Packet | Packet after NATing |
Source IP address or src-ip |
10.5.1.233 |
u.u.u.2 |
Destination IP address or dst-ip: |
w.w.w.1 |
w.w.w.1 |
Protocol |
tcp |
tcp |
Source port or src-port: |
26785 |
46372 |
Destination port or dst-port |
80 |
80 |
In this example we even made the protocl the same. After the NATing process all of the variables are the same except the sourse addresss. This is still going to make it bake to the original sender.
The drawback is that if you have only one IP address for the purposes of NATing this method does not gain you anything over the last method. Or if you do have multiple IP addresses to use it will still take quite a few to reach the 16 million possible that the subnet is capable of handling.
Fortinet does not use this method.