NAT-aware Public-Private GSLB Configuration
An Avi GSLB configuration can serve clients from a mixture of public and private networks.
Typically, the VIP configured in a local virtual service (configured as a GSLB pool member) is a private IP address. But this IP address may not always be reachable by the client. For example, a user on a laptop could come in via the corporate intranet or VPN, but also directly from the public Internet. In the former case, the source IP address would be an intranet private IP address. In the latter case, it would be a public IP address. Note that, with resolvers (LDNS) in the middle and no support for extension mechanism for DNS (EDNS), this may not be as simple.
Note — If EDNS processing is enabled, the client’s IP address is found within the ECS option. For more information, refer to the Extension Mechanisms for DNS Client Subnet Option Insertion article.
The source being a certain set of resolver IP addresses could indicate that the client is coming in from a private network, and another set of IP addresses could indicate that the client is coming in from a public network.
How It Works
Client DNS requests coming in from within the intranet have the private IP served in the A record, and requests from outside are served the public IP address. Please note that datapath health monitoring is performed only against the private IP address.
In the GSLB global configuration (navigating to Infrastructure -> GSLB -> Edit), the user can specify a list of IP addresses (specific addresses, ranges or prefixes), and categorize them as either private or public. Refer to the below screenshot. If a private list is specified, all other addresses are deemed public, and vice versa.
In the GSLB pool member configuration, an optional public IP address can be specified. This field is used to host the public IP address for the VIP, which gets NAT’ed to the private IP by a firewall. Refer to the below screenshot.
In the below CLI sequence, private and public address ranges are defined.
configure gslb glb-1 client_ip_addr_group type gslb_ip_p gslb_ip_private Private IP Address. gslb_ip_public Public IP Address. type gslb_ip_public prefixes 18.104.22.168/24 addrs 22.214.171.124 ranges begin 126.96.36.199 end 188.8.131.52 New object being created save save save ... client_ip_addr_group type GSLB_IP_PUBLIC addrs 184.108.40.206 ranges begin 220.127.116.11 end 18.104.22.168 prefixes 22.214.171.124/24 tenant_ref admin -------------------------------------------------------------------------+
In the below CLI sequence, a public IP address is added to an existing pool member.
configure gslbservice gs-1 Updating an existing object. Currently, the object is: groups index 1 members index 1 public_ip ip 126.96.36.199 save save save save ... members ip 10.10.10.1 ratio 1 enabled True public_ip ip 188.8.131.52