Criando NAT com NFTABLES no DEBIAN
Aqui temos um breve tutorial de como configurar NAT utilizando NFTABLES em um Servidor Linux Debian 11.5
Topologia
Configurado os ips das interfaces dos dispositivos de ponta(usuários), podemos seguir para as configurações do Servidor
NO SERVIDOR DEBIAN / NAT
Configurando as Interfaces de Acordo com o cenário
Configurando LAN
ip address add 192.168.0.1/24 dev ens5
Configurando WAN
ip address add 192.168.122.100/24 dev ens4
Habilitando roteamento entre interfaces
echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
Instalando o NFTABLES
$ sudo apt update && sudo apt install -y nftables ;
Habilitando o NFTABLES
sudo systemctl enable nftables
sudo systemctl start nftables
Iniciando as configurações do NFTABLES
Apagando configurações anteriores
$ nft flush ruleset
Criando Tabela NAT
$ nft add table nat
Adicionando chaves de Roteamento e Pré-Rotemaento na tabela NAT
nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
nft add chain nat postrouting { type nat hook postrouting priority 100 ; }
Adicionanod Regra de Mascaramento
$ nft add rule nat postrouting oifname "ens4" masquerade
Configurando regra de Saída de NAT(NA WAN)
$ nft add rule nat postrouting oifname "ens4" snat to 192.168.122.100
Configurando Regra de Entrada de NAT(NA LAN)
$ nft add rule nat prerouting iifname ens4 dnat to 192.168.0.0/24
NA MAQUINA LAN-CLIENT1
$ ping 8.8.8.8
Observamos o sucesso e correto funcionamento do comando.
Observando no WireShark(Conexão NAT_ens4_to_SW-WAN_Ethernet1) podemos comprovar que o roteamento e o mascaramento está funcionando
Tornando as configurações permanentes
Para isso configuramos as interfaces de rede de acordo com o cenário, posteriormente configuramos o script do NFTABLES
Criando diretório de trabalho
$ mkdir -p /etc/nat/
Criando script do NFTABLES
$ touch /etc/nat/nat_ruleset.nft
O script /etc/nat/nat_ruleset.nft deve conter o seguinte conteúdo
“
#!/usr/sbin/nft -f
flush ruleset
add table nat
add chain nat prerouting { type nat hook prerouting priority -100 ; }
add chain nat postrouting { type nat hook postrouting priority 100 ; }
add rule nat postrouting oifname "ens4" masquerade
add rule nat postrouting oifname "ens4" snat to 192.168.122.100
add rule nat prerouting iifname ens4 dnat to 192.168.0.0/24
”
Para concluir, devemos fazer com que esse script seja executado no boot, para isso executamos o comando abaixo
$ echo “nft -f /etc/nat/nat_ruleset.nft” >> /etc/rc.local
Caso o arquivo não exista, crie ele, de permissões de execução e não esqueça de colocar o shebang na primeira linha do arquivo
Para mais informações, acesse o repositório no GitHub onde conta com um script de configuração