Configurando um NAT

Autor: Willian Welbert da Silva <willianws at gmail.com>

Introdução ao NAT

O que é NAT

NAT, Network Address Translation, é uma técnica que permite
reescrever os endereços IP de origem de um pacote que passam sobre um
router ou firewall de maneira que um computador de uma rede interna
tenha acesso a uma rede externa. Essa técnica é normalmente utilizada
para liberar acesso a internet às rede privadas.

Em outras palavras, podemos dizer que NAT é um tradutor de
endereços de rede que visa minimizar a escassez dos endereços IP. O NAT
não é um protocolo nem um padrão, é apenas uma série de tarefas que um
roteador (ou equipamento equivalente) deve realizar para converter
endereços IPs entre redes distintas.

Um equipamento que tenha o recurso de NAT deve ser capaz de
analisar todos os pacotes de dados que passam por ele e trocar os
endereços desses pacotes de maneira adequada.

O problema

Os endereços IP são escassos. Um ISP poderia ter um
endereço /16 (anteriormente da classe B),fornecendo 65.534 números de
hosts. Se ele tiver um número maior do que esse de clientes, haverá um
problema. Para os clientes individuais com conexões de discagem, uma
forma de contornar o problema é atribuir dinamicamente um endereço IP
ao computador quando ele se conectar e efetuar logon, tomando o
endereço IP de volta quando a sessão terminar. Desse modo, um único
endereço /16 poderá manipular até 65.534 usuários ativos, o que
provavelmente deve ser bastante bom para um ISP com várias centenas de
milhares de clientes. Quando a sessão for encerrada, o endereço IP será
designado novamente para outro usuário.

Referências bibliográficas

1) SOUZA, Balbino Jr.; MAGEDANZ, Karin; BORGES, Nádia. Implementando Network Address Translation (NAT) com Linux. São Leopoldo, Novembro de 2005.

2) TANENBAUN, Andrew S. Redes de computadores. Quarta edição

Configuração do NAT com iptables

Este tutorial mostra como configurar um network-address-translation (NAT) em um sistema Linux
com regras iptables onde o sistema pode ativar o gateway e fornecer
acesso à internet para vários usuários em uma rede local utilizando
apenas um endereço de IP público. Isso é feito reescrevendo a fonte
e/ou endereço de destino dos pacotes que passam pelo NAT.

Para tal configuração é preciso ter duas interfaces de rede:

  • WAN = eth0 com IP público xx.xx.xx.xx
  • LAN = eth1 com IP privado yy.yy.yy.yy/ 255.255.0.0

1. Configure eth0 para a internet com o IP público:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
BROADCAST=xx.xx.xx.255 #entrada opcional

HWADDR=00:50:BA:88:72:D4 #entrada opcional

IPADDR=xx.xx.xx.xx
NETMASK=255.255.255.0 #fornecido por ISP

NETWORK=xx.xx.xx.0 #opcional

ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=xx.xx.xx.1 #fornecido por ISP

2. Configure eth1 para a LAN com o IP privado:

# cat /etc/sysconfig/network-scripts/ifcfg-eth1

BOOTPROTO=none
PEERDNS=yes
HWADDR=00:50:8B:CF:9C:05 #opcional
TYPE=Ethernet
IPV6INIT=no
DEVICE=eth1
NETMASK=255.255.0.0
BROADCAST=""
IPADDR=192.168.2.1 #gateway da LAN
NETWORK=192.168.0.0 #opcional
USERCTL=no
ONBOOT=yes

3. Configuração do host:

# cat /etc/hosts

127.0.0.1 nat localhost.localdomain localhost

4. Configuração do gateway:

# cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=nat
GATEWAY=xx.xx.xx.1 #gateway fornecido por ISP

5. Configuração DNS:

# cat /etc/resolv.conf

nameserver 203.145.184.13 #DNS primário fornecido por ISP
nameserver 202.56.250.5 #DNS secundário fornecido por ISP

6. Configuração do NAT com iptables

6.1. Retirar configurações não default:

# iptables –flush (retira todas as regras no filtro de pacotes)

# iptables –table nat –flush (retira a tabela NAT)

# iptables –delete-chain

# iptables –table nat –delete-chain (deleta todas as chains que não estão no filtro default)

6.2. Ajustar o IP FORWARDing e Masquerading:

# iptables –table nat –append POSTROUTING –out-interface eth0 -j MASQUERADE

# iptables –append FORWARD –in-interface eth1 -j ACCEPT

6.3. Permitir a transmissão de pacote pelo kernel:

# echo 1 > /proc/sys/net/ipv4/ip_forward

6.4. Aplicar a configuração:

# service iptables restart

7. Teste:

# ping 192.168.2.1 (ping o gateway a partir de um cliente da rede)

# ping www.vivaolinux.com.br (tente isso em um sistema cliente)

Considerações finais da configuração

Todos os clientes da rede
privada deverão ajustar seu gateway para ser o endereço IP local da LAN
que passa pelo computador onde foi configurado o NAT. O DNS deve ser
ajustado de acordo com o ISP da internet.

Observações

Alguns problemas ao se usar NAT:

  • NAT viola o modelo arquitetônico do IP;
  • NAT faz a internet mudar suas características de rede sem conexões para uma espécie de rede orientada a conexões;
  • NAT viola a regra mais fundamental da distribuição de
    protocolos em camadas: a camada k não pode fazer quaisquer suposições
    sobre o que a camada k + 1 inseriu no campo de carga útil;
  • Os processos na internet não são obrigados a usar o TCP ou o UDP;
  • Algumas aplicações inserem endereços IP no corpo do texto. O
    receptor então extrai esses endereços e os utiliza. Tendo em vista que
    a NAT nada sabe sobre esses endereços, ela não pode substituí-los;
  • Como o campo source port do TCP é de 16 bits, no máximo 65.536 máquinas podem ser mapeadas em um endereço IP;
  • Nem todas as aplicações trabalham de forma transparente com o NAT;
  • Alguns pacotes de NAT não ocultam informações sobre os hosts
    internos, permitindo que sejam facilmente descobertos dados como nome
    do host interno, endereços não roteáveis, versão e sistema operacional
    utilizado, entre outros.

Referências bibliográficas

1) SOUZA, Balbino Jr.; MAGEDANZ, Karin; BORGES, Nádia. Implementando Network Address Translation (NAT) com Linux. São Leopoldo, Novembro de 2005.

2) TANENBAUN, Andrew S. Redes de computadores. Quarta edição.


http://www.vivaolinux.com.br/artigo/Configurando-um-NAT

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s