Compartilhar conexão à internet no Linux – Debian

Publicado: 18/06/2011 em Linux, Serviços IP
Tags:, , ,

Vamos supor que se deseje acessar a internet de um computador (o cliente) compartilhando a conexão estabelecida por um outro computador (o gateway). No caso, as duas máquinas estão com Debian. A máquina que está com o acesso à internet funcionará como um gateway, tendo duas interfaces de rede: uma dedicada ao acesso à internet e uma outra para conectar-se à máquina cliente.

Para isto, vamos seguir os seguintes passos:
1- na máquina cliente, configurar o endereço de rede e gateway;
2- na máquina gateway, configurar o endereço de rede para servir à máquina cliente e ativar o roteamento de pacotes;
3- na máquina gateway, usar o IPTables para compartilhamento da conexão de Internet.

Passo 1 – na máquina cliente:
A interface de rede na máquina cliente será a eth0, que estará conectada por meio de um cabo metálico à máquina gateway. Para isto:
a) configure eth0 em /etc/network/interfaces da seguinte forma:
auto eth0
iface eth0 inet static
address 10.10.10.2
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
gateway 10.10.10.12

utilizando estes parametros, a interface eth0 terá endereço 10.10.10.2 e o gateway da conexão terá endereço 10.10.10.12.

b) Reinicie a interface através do comando:
# /etc/init.d/networking restart

c) Verificar a rota


$ route
Tabela de Roteamento IP do Kernel
Destino      Roteador    MáscaraGen.     Opções Métrica Ref Uso Iface
10.10.10.0     *         255.255.255.0     U      0     0     0 eth0
default    10.10.10.12    0.0.0.0          UG     0     0     0 eth0

Se o roteamento até o gateway não estiver correto, faça a correção das configurações através dos comandos:

# route del default
# route del -net 10.10.10.0 netmask 255.255.255.0
# route add default gw 10.10.10.12 dev eth0

O primeiro comando cancela a rota default anteriormente estabelecida. O segundo comando cancela a rota 10.10.10.0 anteriormente estabelecida. E o terceiro define a nova rota default por onde devem ser encaminhados os pacotes. No caso, 10.10.10.12 será o endereço da interface do gateway.

d) Fixe o DNS em /etc/resolv.conf (se necessário):
nameserver 208.67.222.222
nameserver 208.67.220.220

Passo 2 – na máquina gateway:
A interface de rede que está conectada à internet é a wlan0, ficando a interface eth0 destinada a fazer a comunicação com a máquina cliente.

a) configure eth0 em /etc/network/interfaces da seguinte forma:
auto eth0
iface eth0 inet static
address 10.10.10.12
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255

OBS:
1- não altere a configuração da outra inerface wlan0, que já está funcionando;
2- não informe endereço de gateway nesta placa que será a responsável por receber todo o tráfego do computador cliente. É assim mesmo, pois esta máquina funcinará como gateway.

b) Reinicie a interface através do comando:
# /etc/init.d/networking restart

c) Habilite o encaminhamento de pacotes:
c.1) Inserindo 1 no arquivo ip_forward:
# echo 1 > /proc/sys/net/ipv4/ip_forward

c.2) Altere o arquivo /etc/sysctl.conf, retirando o comentário da seguinte linha:

net.ipv4.ip_forward = 1

Passo 3 – na máquina gateway, usar o IPTables para compartilhamento da conexão à Internet:
a) limpar qualquer regra pré-existente no IPTables, para que se possa garantir o correto funcionamento do NAT e do encaminhamento de pacotes:

# iptables -F INPUT
# iptables -F OUTPUT
# iptables -F FORWARD
# iptables -F -t nat
# iptables -F -t mangle

Assim, limpa-se informações de entrada, saída, encaminhamento, “tradução” e alteração de pacotes.

b)
habilitar o encaminhamento de pacotes via IPTables:

# modprobe iptable_nat
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Onde:
* -t nat – utiliza a tabela de “tradução” de endereços IP;
* -A POSTROUTING – adiciona a regra para saída de pacotes;
* -o wlan0 – especifica que a interface de saída para internet utilizada é wlan0;
* -j MASQUERADE – informa que o foco (target) da regra é o mascaramento de IP.

Links interessantes:

1- Linux: Compartilhando a conexão de internet
2- How To Masquerade On Linux (Internet Connection Sharing)
3- Firewall iptables – Guia Foca Linux, com um bom manual para aprender e tirar dúvida sobre IPtables
3- Para mais informações sobre o arquivo sysctl.conf, basta digitar o comando: # man sysctl.conf4

comentários
  1. marcelo paglione disse:

    Caros amigos, compilei o meu kernel para 2.6.28 com Layer7. Depois disso a minha regra de iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE (q se encontra no /etc/rc.local) da uma mensagem iptables command not found.
    Concluindo tenho q digitar a regra novament no terminal para funcionar.

    Alguem pode resolver esse pequeno detalhe.

Deixe um comentário, pois isto é muito motivante para continuarmos este trabalho

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