Uma das coisas que o Linux faz melhor é compartilhar uma conexão Internet, seja ela discada ou fixa, com outros computadores em uma rede. Além de compartilhar bem, pode dar até segurança adicional através de um firewall. Este tutorial traz o básico para quem quiser compartilhar sua conexão com uma rede local.
Um dos casos mais comuns é esse, você ter uma conexão com a Internet, e outros computadores em uma rede interna. Então você quer compartilhar essa conexão com os outros computadores. Poderia-se usar servidores de proxy para isso, mas queremos compartilhar totalmente! Então o que fazer?
Primeiro de tudo, você precisa verificar qual a versão do seu kernel. Kernels diferentes utilizarão ferramentas diferentes. Vejamos:
Versão do Kernel | Utilitário |
2.0.x | ipfwadm |
2.2.x | ipchains |
2.4.x | iptables |
É claro que não podemos descartar o fato de que quanto maior a versão do kernel, melhor é a implementação desses utilitários! Então é sempre bom você usar o mais atual, que no nosso caso é o iptables! :)
O que queremos fazer aqui se chama Masquerading. Masquerading é quando o Linux atua como um gateway entre a Internet e a Rede Local, alterando os pacotes, de modo que ele vá pro lugar certo, e retorne para o lugar em que saiu. Um jeito bem simples de se compartilhar a sua conexão, considerando que a sua rede local seja: 192.168.0.0/24 (que significa a faixa de IPs de 192.168.0.1 até 192.168.0.254). Vamos lá:
ipfwadm (Kernel 2.0.x)
# ipfwadm -F -p DENY # ipfwadm -F -a ACCEPT -m -S 192.168.0.0/24
ipchains (Kernel 2.2.x)
# ipchains -P forward -j DENY # ipchains -A forward -s 192.168.0.0/24 -j MASQ
iptables (Kernel 2.4.x+)
# iptables -P FORWARD DROP # iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT # iptables -A FORWARD -d 192.168.0.0/24 -i eth0 \ -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
No caso do iptables, você terá que substituir o eth0 pelo seu tipo de conexão. No exemplo a Internet aqui está funcionando através da placa de rede ‘eth0’ e a rede local em ‘eth1’, então eu ativei o masquerading na ‘eth0’, que é a placa da Internet.
Se você usa conexão discada, então ao invés de ser ‘eth0’ ou ‘eth1’, você usará ‘ppp0’, que é a interface de conexão PPP, utilizada pelos provedores de acesso discado.
E antes que eu me esqueça (e você também), há um passo essencial que *nunca* pode ser descartado. Você terá que habilitar o IP Forwarding no kernel do Linux, para ele poder repassar os pacotes da sua rede interna para a Internet. Não importa que versão do kernel você tenha, execute o seguinte comando:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Pronto, sua conexão está compartilhada com todos da sua rede interna. A única coisa que lhe restou pra fazer agora é configurar as próprias máquinas da rede interna para usarem esta conexão compartilhada. Se você estiver usando Linux, você apenas terá que adicionar uma rota padrão, que é o gateway:
# route add -net default gw 192.168.0.1
Onde 192.168.0.1 é o IP da máquina servidora. Pronto, sua máquina cliente já está usufruindo do masquerading que a outra máquina está fazendo.
Caso a máquina cliente seja Windows, configure na placa de rede para ela ter como Gateway o IP da máquina servidora.
As configurações que você fez no Linux vão se desfazer assim que você reiniciar o sistema, então é bom deixar todos estes comandos que você fez num arquivo de inicialização. Você pode colocá-los, por exemplo, dentro do arquivo ‘/etc/rc.d/rc.local’.
Agora é USAR, USAR e USAR!