Compartilhar Internet

From LinuxWiki


Conteúdo

Interfaces de rede

Este tutorial supõe as seguintes interfaces configuradas

eth0: Link Internet, com IP público
eth1: Rede interna, com ip 192.168.0.1

Caso utilize outra interface ligada a internet (wlan0, ppp0, etc) ou rede interna, modifique as regras de acordo.

Script para compartilhamento com o iptables

#!/bin/sh

# Limpar todas as regras do iptables
/sbin/iptables -F 
/sbin/iptables -t nat -F

# Mascarar (NAT) tráfego que vem de eth1 e sai por eth0
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

# Permitir ip_forward no kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
# Para acesso ftp dos micros internos, habilitar o módulo nat_ftp
/sbin/modprobe ip_nat_ftp

Aonde colocar o script ?

  • Este script deve ser executado como usuário root

Os scripts de inicialização variam conforme a distribuição, e devem ser inicializados depois que as interfaces de rede estejam configuradas. A seguir, algumas sugestões de onde colocar este script:

  • Centos, RHEL (e provavelmente outros derivados de Red Hat): Adicionar as instruções ou chamar o script do iptables em /etc/rc.local
  • Ubuntu: Criar o script em /etc/network/if-up.d/ (por exemplo /etc/network/if-up.d/firewall) e dar permissões de execução a ele (chmod +x /etc/network/if-up.d/firewall)

Configuração do micro cliente

Os micros clientes devem ser configurados com qualquer da classe 192.168.0.0/24 (192.168.0.2, 192.168.0.30, ..., 192.168.0.254) , excluindo o 192.168.0.1, que foi reservado para o servidor. As configurações de Gateway Padrão, Netmask e DNS são as seguintes

IP: 192.168.0.x
Netmask: 255.255.255.0
Gateway: 192.168.0.1
DNS: Use o do seu provedor, por exemplo 200.176.2.10 para utilizar o DNS do Terra

Testando a configuração

Após executar o script do iptables no servidor e configurar o micro cliente com um ip da classe escolhida para a interface interna, ele deve navegar normalmente em qualquer site, caso ocorra algum problema o seguinte procedimento deve ser seguido (no micro cliente). Para cancelar o comando ping, basta apertar CTRL-C no teclado.

  • ping 192.168.0.1

Isto vai testar a conexão do micro cliente ao servidor de compartilhamento, e deve retornar uma saída do tipo

PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.065 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.054 ms

Caso isto não ocorra, verifique a configuração da interface eth1 no servidor, e a configuração de rede no cliente. Lembre-se que você não pode utilizar o mesmo ip em mais de um micro da mesma rede. Se funcionou, siga para o próximo passo.

  • ping www.uol.com.br

Isto vai testar o roteamento no micro servidor, enviando um ping ao servidor da UOL (o teste pode ser feito com qualquer endereço válido da Internet). A saída deve ser similar ao ítem anterior:

PING www.uol.com.br (200.221.2.45) 56(84) bytes of data.
64 bytes from home.uol.com.br (200.221.2.45): icmp_seq=1 ttl=57 time=33.6 ms
64 bytes from home.uol.com.br (200.221.2.45): icmp_seq=2 ttl=57 time=36.7 ms
64 bytes from home.uol.com.br (200.221.2.45): icmp_seq=3 ttl=57 time=36.7 ms

Se a saída apresentar um erro do tipo

ping: unknown host www.uol.com.br

Você deve verificar a configuração do DNS do cliente (ele está apresentando problemas para resolver o nome). Para testar o roteamento, excluindo a configuração DNS, execute o ping diretamente a um ip válido da internet, como por exemplo ping 200.221.2.45.

Quando tudo der errado

Caso o cliente consiga acessar o servidor sem problemas (no primeiro passo, ping 192.168.0.1) mas não os sites da internet (e não é um problema de DNS, como no segundo passo), verifique as configurações de roteamento no servidor. A saída da execução dos seguintes comandos deve ser similar (adapte às suas interfaces de rede e rede interna)

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination          

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.0.0/24       0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

cat /proc/sys/net/ipv4/ip_forward

1
Ferramentas pessoais