Configurando um NAT

Como configurar NAT (Network Address Translation) em um sistema Linux com regras iptables para que o sistema atue como um gateway e forneça acesso a internet para diversos hosts de uma rede local, utilizando um único endereço IP público.

[ Hits: 64.163 ]

Por: Willian Welbert da Silva em 02/12/2009


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.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução ao NAT
   2. Configuração do NAT com iptables
   3. Observações
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Configurando o NSCA no Nagios

VMWare Server no Debian Linux 4.0 (Etch) (i386 e AMD64)

Deixando o Gnome bonitão em qualquer distribuição

Instalando e configurando o Java JDK no Slackware Linux

MUGPIS 14.1

  
Comentários
[1] Comentário enviado por cleysinhonv em 02/12/2009 - 08:00h

Bom artigo,

Bem explicado, esses endereços de IPS estão prestes a acabar né, e o modelo IPV6 prestes a entrar em cena, mas quando? Há uma padronização orientada para 2012.

[2] Comentário enviado por pakitao em 02/12/2009 - 13:42h

Bom acho que quanto a esse padrao do IPv6 creio que ainda custará um pouco para entrar em cena pra valer, mas eu uso os dois: IPv4 e IPv6 na minhas redes, tanto física quanto virtual.

[3] Comentário enviado por grandmaster em 02/12/2009 - 22:41h

O IPV6 está ai para resolver isso, mas o NAT ajuda para bastante coisa.

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[4] Comentário enviado por rafaelskater em 07/12/2009 - 17:57h

Alguem poderia responder meu topico?
http://www.vivaolinux.com.br/topico/UbuntuBR/Modem-usb-no-linux

[5] Comentário enviado por roberto_espreto em 07/12/2009 - 18:58h

Legal o artigo!

A 2º parte está bem parecida com este link, até nos IPs, etc...

http://www.howtoforge.com/nat_iptables

Att,


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts