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.
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.














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