| Configuring NAT on your network. |
| ================================ |
| |
| To start setting up NAT, we need to define which is your "internal" interface |
| and which is your "external" interface. The "internal" interface is the |
| network adapter connected to the network with private IP addresses which |
| you need to change for communicating on the Internet. The "external" |
| interface is configured with a valid internet address. |
| |
| For example, your internal interface might have an IP# of 10.1.1.1 and be |
| connected to your ethernet, whilst your external interface might be a PPP |
| connection with an IP number of 204.51.62.176. |
| |
| Thus your network might look like this: |
| |
| <Internal Network> |
| [pc] [pc] |
| | | |
| +-+---------+------+ |
| | |
| [firewall] |
| | |
| | |
| Internet |
| <External Network> |
| |
| |
| Writing the map-rule. |
| --------------------- |
| When you're connected to the Internet, you will either have a block of IP |
| addresses assigned to you, maybe several different blocks, or you use a |
| single IP address, i.e. with dialup PPP. If you have a block of addresses |
| assigned, these can be used to create either a 1:1 mapping (if you have |
| only a few internal IP addresses) or N:1 mappings, where groups of internal |
| addresses map to a single IP address and unless you have enough Internet |
| addresses for a 1:1 mapping, you will want to do "portmapping" for TCP and |
| UDP port numbers. |
| |
| For an N:1 situation, you might have: |
| |
| map ppp0 10.1.0.0/16 -> 209.23.1.5/32 portmap tcp/udp 10000:40000 |
| map ppp0 10.1.0.0/16 -> 209.23.1.5/32 portmap |
| |
| where if you had 16 addresses available, you could do: |
| |
| map ppp0 10.1.0.0/16 -> 209.23.1.0/28 portmap tcp/udp 10000:40000 |
| map ppp0 10.1.0.0/16 -> 209.23.1.0/28 portmap |
| |
| Or if you wanted to allocate subnets to each IP#, you might do: |
| |
| map ppp0 10.1.1.0/24 -> 209.23.1.2/32 portmap tcp/udp 10000:40000 |
| map ppp0 10.1.2.0/24 -> 209.23.1.3/32 portmap tcp/udp 10000:40000 |
| map ppp0 10.1.3.0/24 -> 209.23.1.4/32 portmap tcp/udp 10000:40000 |
| map ppp0 10.1.1.0/24 -> 209.23.1.2/32 portmap |
| map ppp0 10.1.2.0/24 -> 209.23.1.3/32 portmap |
| map ppp0 10.1.3.0/24 -> 209.23.1.4/32 portmap |
| |
| *** NOTE: NAT rules are used on a first-match basis only! |
| |
| |
| Filtering with NAT. |
| ------------------- |
| IP Filter will always translate addresses in a packet _BEFORE_ it checks its |
| access list for inbound packets and translates addresses _AFTER_ it has |
| checked the access control lists for outbound packets. |
| |
| For example (using the above NAT rules), if you wanted to prevent all hosts |
| in the 10.1.2.0/24 subnet from using NAT, you might use the following rule |
| with ipf: |
| |
| block out on ppp0 from 10.1.2.0/24 to any |
| block in on ppp0 from any to 10.1.2.0/24 |
| |
| and use these with ipnat: |
| |
| map ppp0 10.1.0.0/16 -> 209.23.1.0/28 portmap tcp/udp 10000:40000 |
| map ppp0 10.1.0.0/16 -> 209.23.1.0/28 portmap |