|
|||
|
|||
An address pool is a supply of two or more addresses whose use is shared among a group of users. An address pool can be specified as the redirection address in rdr rules, as the translation address in nat rules, and as the target address in route-to, reply-to, and dup-to filter options.
There are four methods for using an address pool: bitmask - grafts the network portion of the pool address over top of the address that is being modified (source address for nat rules, destination address for rdr rules). Example: if the address pool is 192.0.2.1/24 and the address being modified is 10.0.0.50, then the resulting address will be 192.0.2.50. If the address pool is 192.0.2.1/25 and the address being modified is 10.0.0.130, then the resulting address will be 192.0.2.2. random - randomly selects an address from the pool.
source-hash - uses a hash of the source address to determine which address to use from the pool. This method ensures that a given source address is always mapped to the same pool address. The key that is fed to the hashing algorithm can optionally be specified after the source-hash keyword in hex format or as a string. By default, pfctl(8) will generate a random key every time the ruleset is loaded. round-robin - loops through the address pool in sequence. This is the default method and also the only method allowed when the address pool is specified using a table.
Except for the round-robin method, the address pool must be expressed as a CIDR (Classless Inter-Domain Routing) network block. The round-robin method will accept multiple individual addresses using a list or table. The sticky-address option can be used with the random and round-robin pool types to ensure that a particular source address is always mapped to the same redirection address. NAT Address Pool
An address pool can be used as the translation address in nat rules. Connections will have their source address translated to an address from the pool based on the method chosen. This can be useful in situations where PF is performing NAT for a very large network. Since the number of NATed connections per translation address is limited, adding additional translation addresses will allow the NAT gateway to scale to serve a larger number of users. In this example a pool of two addresses is being used to translate outgoing packets. For each outgoing connection PF will rotate through the addresses in a round-robin manner.
One drawback with this method is that successive connections from the same internal address will not always be translated to the same translation address. This can cause interference, for example, when browsing websites that track user logins based on IP address. An alternate approach is to use the source-hash method so that each internal address is always translated to the same translation address. To do this, the address pool must be a CIDR network block.
This nat rule uses the address pool 192.0.2.4/31 (192.0.2.4 - 192.0.2.5) as the translation address for outgoing packets. Each internal address will always be translated to the same translation address because of the source-hash keyword.
Load Balance Incoming Connections Address pools can also be used to load balance incoming connections. For example, incoming web server connections can be distributed across a web server farm:
Successive connections will be redirected to the web servers in a round-robin manner with connections from the same source being sent to the same web server. This "sticky connection" will exist as long as there are states that refer to this connection. Once the states expire, so will the sticky connection. Further connections from that host will be redirected to the next web server in the round robin. Load Balance Outgoing Traffic Address pools can be used in combination with the route-to filter option to load balance two or more Internet connections when a proper multi-path routing protocol (like BGP4) is unavailable. By using route-to with a round-robin address pool, outbound connections can be evenly distributed among multiple outbound paths. One additional piece of information that's needed to do this is the IP address of the adjacent router on each Internet connection. This is fed to the route-to option to control the destination of outgoing packets. The following example balances outgoing traffic across two Internet connections:
The route-to option is used on traffic coming in on the internal interface to specify the outgoing network interfaces that traffic will be balanced across along with their respective gateways. Note that the route-to option must be present on each filter rule that traffic is to be balanced for. Return packets will be routed back to the same external interface that they exited (this is done by the ISPs) and will be routed back to the internal network normally.
Finally, NAT can also be used on each outgoing interface:
A complete example that load balances outgoing traffic might look something like this: lan_net = "192.168.0.0/24" How can I do equal-cost multipath routing? # route add -mpath default 10.130.128.1
# netstat -rnf inet | grep default
# sysctl net.inet.ip.multipath=1
# traceroute -n 154.11.0.4 # traceroute -n 154.11.0.5
| |||
|
Please register, you are currently just a guest here.
|
|||
| Similar Articles: | |||
|
|
|||
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|
|||
Members of Guest cannot leave comments. |
|||
Welcome to XNUXER.OR.ID, by visit our site we like to help you to get main information about internet security and opensource so dont forget to update your knowledge every time using our website.
To access file download or private information here you must register, please register here.
| Top Contributors: | |||
| 1 | webmaster | 166 | |
Articles: |
| This Hour: 0 |
| Today: 0 |
| This Month: 0 |
| All Time: 164 |
| Membership: |
| Registered Today :18 |
| This Hour:1 |
| This Month:333 |
| Total:4540 |
| Banned:0 |
| What do you think about our website? |