Em muitos ambientes o F5/GTM está à frente dos servidores de nomes e de outras aplicações. A idéia deste texto é mostar como aprimorar estes ambientes, configurando o F5 como resolvedor de nomes, do tipo Cache. Isto é, quando a requisição DNS chegar, o próprio F5 responderá ao usuário/sistema.
Como o F5 faz isso?
A primeira query DNS sempre será consultada pelo F5 no servidor final. A partir daí, com a resposta do servidor, ele a guardará em memória para responder aos demais usuários. No F5 este tipo de resolução é chamada de transparente.
Quais as vantagens desta configuração?
Evita certo tipos de ataques DNS ao servidor de nomes;Alta disponibilidade do serviço de DNS.Diminui o tempo de resposta ao usuário requisitante;Diminui o overhead dos servidores de nomes.
Pré requisitos para o ambiente:
Um servidor de nomes
F5 BIG-IP com módulo GTM
Configuração do Cache no F5
O servidor DNS deverá estar configurado com pelo menos uma zona com algumas entradas, não importando o tipo de entrada.
Antes de começarmos a configurar o Listener, devemos criar um profile cliente de UDP, um profile de DNS e um profile de Cache, pois o listener depende destes profiles, conforme esquema abaixo:
v Listener (Criará a aplicação no F5)
- Pool (servidores DNS)
- Profile UDP (informa o tipo de trafego e suas especificações)
- Profile DNS (informa o tipo de protocolo e suas especificações)
- Profile Cache (regras de cache)
Criação do profile de Cache
Vá em DNS > Cache > Cache List > Create
Devemos mudar o Resolver Type para Transparent.
Criação do profile de DNS
Vá em DNS > Delivery : Profiles : DNS > Create
Para informar que utilizaremos a feature de Cache, devemos habilitar a mesma (DNS Cache) e abaixo escolher qual o nome do profile de cache (DNS Cache Name).
Criação do profile UDP
Vá em DNS > Delivery : Profiles : Protocol : UDP > Create
Crie um profile novo baseado no Parent Profile udp
Deve-se habilitar a opção Datagram LB
Obs: caso o ambiente receba muitas conexões de diferentes origens simultaneamente, é recomendado que abaixe o Idle Timeout, pois a cada conexão irá permanecer aberta no F5 durante 60 segundos, caso não haja o fechamento pelo usuário, causando o esgotamento de recursos do equipamento.
Criação do Listener
Vá em DNS > Delivery : Listeners : Listener List > Create
Deve-se associar os profiles recentemente criados nas opções Protocol Profile (Client) e DNS Profile. Deve-se associar o pool dos servidores DNS também, em Default Pool.
Obs: neste exemplo configurei o Source Address Translation e Address Translation, pois o F5 não era rota default do servidor de DNS.
Testes
Neste caso utilizei uma máquina Windows 8 como cliente DNS e um Linux como servidor DNS. O F5 configurado, vamos aos testes:
Efetuando dois TCPDUMPs no F5, filtramos a conexão lado Client e lado Server.
Na imagem abaixo, é realizada a requisição ao VS 192.168.159.135, com a Query tipo A “dns.fabio.com.br.” Podemos ver que o F5 recebe e repassa a Query ao servidor Linux (192.168.159.128).
Já na imagem abaixo, foi feito o mesmo teste com a Query dns.fabio.com.br ao VS e desta vez não vemos o F5 perguntando ao servidor Linux. Isto é o cache agindo, portanto, o F5 que nos responde a Query DNS. Podemos observar que na tela do Prompt de comando, a resposta não é autoritária, pois o F5 não é o Authoritative Server.
Na imagem abaixo, o comando para visualizar as entradas que estão no Cache.
Para deletar alguma entrada, utilize o comando da imagem abaixo:
Este comando é muito útil, pois numa mudança de RR(Resource Record) no servidor DNS, deve-se deletar a entrada para que o F5 aprenda a nova RR.
Conforme mencionado anteriormente, esta configuração de “Offload de DNS” possui vantagens bem atrativas, que justificam sua implementação. Nos próximos artigos ensinarei como configurar Cache DNS do tipo Resolver e como “logar” este tráfego DNS no F5.