nftables (parte 8) - NAT (SNAT, DNAT e Redirect)

Neste tutorial vamos seguir a mesma ideia do tutorial passado, embora vamos limitar na ilustração, indo directo ao ponto, nesse caso ao terminal e mostrar os resultados do tutorial.

SNAT

Num roteador, o NAT de origem (SNAT) permite alterar o IP dos pacotes enviados através de uma interface para um endereço IP específico. O roteador substitui então o IP de origem dos pacotes enviados.
Vamos criar uma tabela de nome NAT e adicionar uma cadeia de nome SNAT.



Por fim, adicionamos uma regra à cadeia que faz o pós-roteamento que substitui o IP de origem dos pacotes de saída através da interface de rede, por um outro IP.
 
 

Vamos entender as últimas 3 imagens:
  • na primeira verificamos o endereço de rede do nosso servidor e constatamos que tem um certo IP.
  • na segunda imagem, adicionamos a regra que faz o pós-roteamento para outro IP.
  • e na última imagem, verificamos a existência da regra dentro da cadeia e concluímos que foi adiciona com sucesso. 

DNAT

O NAT de destino (DNAT) permite redirecionar o tráfego num roteador para um host que não se poder aceder directamente a partir da Internet. Por exemplo, com DNAT, o roteador pode redirecionar o tráfego de entrada enviado para por exemplo as portas 80 e 443 para um servidor web com um certo endereço IP.
Vamos colocar isto em prática. Tomemos como base a tabela NAT anteriormente criada, onde vamos adicionar a cadeia DNAT. Vejamos abaixo.
 

Adicionamos duas cadeias, note que:
  • o primeiro comando adiciona uma cadeia de pré-roteamento que processa pacotes antes da decisão de roteamento, o que altera o local para onde pacotes são enviados (DNAT).
  • o segundo comando adiciona uma cadeia pós-roteamento que processa pacotes após a decisão de roteamento, tornando-a o local para o NAT de origem (SNAT/Masquerade ou mascaramento) alterar o remetente aparente dos pacotes.
  • as prioridades -100 e 100 garantem que estas cadeias sejam processadas na ordem correcta em relação as outras, com o pré-roteamento (-100) tenddo efeito antes e o pós-roteamento (100), depois.
  • a opção -- no comando nft é usada para impedir que o shell interprete o valor de prioridade negativo como uma opção do comando nft.
Outra facto que podemos notar é que estes dois processamentos são independentes, com que então vamos aqui exemplificar com apenas um deles. Vamos adicionar a cadeia DNAT, uma regra que faz o pre-roteamento dos pacotes e que redireciona o tráfego recebido nas portas 80 e 443 na interface do roteador para um servidor web com um certo endereço IP:
  

Regra adicionada com sucesso. Assim sendo, todo tráfego que chega pelas portas 80 e 443 será redirecionado para o servidor com o IP 172.116.54.100

Redirect

O redirecionamento é um caso especial de tradução de endereço de rede de destino (DNAT) que redireciona pacotes para a máquina local, dependendo do hook da cadeia.
Por exemplo, pode redirecionar o tráfego de entrada e encaminhado para uma porta do host local e enviar para outra porta. 
O exemplo abaixo, começa com a adiçao de uma cadeia de pre-roteamento, e depois a adiçao de uma regra que faz o redirecionamento do tráfego da porta 80 para porta 8080.

 

Nota: Usa-se o pré-roteamento quando se precisa alterar o destino de um pacote (DNAT), como por exemplo o encaminhamento de porta ou balanceamento de carga para conexões de entrada. Usa-se o pós-roteamento quando se precisaa alterar a origem aparente de um pacote (SNAT ou mascaramento), como por exemplo ocultar IPs internos para tráfego de saída da Internet. Resumindo, o pré-roteamento altera o destino, o pós-roteamento altera a origem.

Comentários

  1. Leituras adicionais:

    https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/getting-started-with-nftables#configuring-nat-using-nftables

    ResponderEliminar