Compartilhar internet, howto, modelos e tutoriais.

Atualizado em: 12/08/2006



Sobre este documento

Original em formato texto com marcações para conversão em HTML, processo automatizado com scripts e txt2tags.

Documento em elaboração, quando pronto removo este aviso

consulte o FAQ e dicas no documento em formato texto;
http://www.zago.eti.br/adsl-compartilhar.txt

Identificando a conexão e ambiente

Neste tópico, algumas dicas que auxiliam na identificação da sua conexão e device associado a ela.

Quem usa IP dinâmico

IP dinâmico , neste tipo de conexão o IP troca a cada conexão, os nomes mudam conforme a operadora do sistema, veja alguns exemplos.

Modem discado, (quem usa modem comum) neste tipo de conexão levanta o interface ppp0 e trabalha com IP dinâmico, troca a cada conexão.

ADSL que requer o pacote rp-pppoe (pppoe), funciona como um discador ADSL, a cada conexão pega um novo IP, mesmo com o modem conectado na placa de rede, levanta também a interface ppp0 sobre a placa de rede, em regras de firewall utiliza a interface ppp0, em São Paulo o Speedy home da Telefônica usa este sistema.

DHCP, existem conexões com IP fixo ou IP dinâmico, aqui depende muito da operadora e outros detalhes, tem que obter informações bem detalhadas do sistema para identificar o tipo de ADSL.

Um tipo de configuração muito comum, quando o modem ADSL suporta, pode configurar como servidor de IP da mesma classe de sua rede, também configurar o modem para fazer o login, ele faz o serviço do rp-pppoe, autenticar e pegar o IP, desta forma o modem fornece IP, rota e DNS via DHCP, não precisa do pacote rp-pppoe rodando na maquina, somente configura o micro para pegar IP via DHCP.

Mesmo assim vai pegar IP diferente a cada conexão, trabalha com IP dinâmico mas levanta a interface ethX, eth0 ou eth1 conforme a placa conectado ao modem, em São Paulo pode se fazer esta configuração com Speedy Home da Telefônica, tudo depende do modelo do modem e do usuário optar por este tipo de configuração.

Neste tipo de conexão, mesmo trabalhando com IP dinâmico, nas regras de firewall utiliza a interface de rede conectada ao modem, eth0, eth1 ...

Pelo Brasil existem muitos serviços semelhantes a este, muda de nome conforme a localidade e operadora, nem sempre fornecem detalhes do tipo de conexão e como está configurado o modem, tudo isto dificulta e atrapalha a a vida do usuário.

compartilhar sem firewall

Como compartilhar um conexão sem regra de firewall, utilize somente para testar o compartilhamento, depois implemente regras de firewall.

Estas configurações são feitas somente no servidor, somente o usuário root tem poderes para fazer isto.

Considere que nas regras precisa informar o device que sai pra internet, pode ser eth0, ppp0 ou wlan0, isto depende do tipo de conexão, erro na informação do device não vai funcionar, tenha certeza sobre o qual deles está em uso na tua configuração, tenha certeza também que a conexão foi completada, a interface ppp0 é criada na conexão, portanto qualquer regra de firewall e compartilhamento devem ser executadas somente depois da chamada do script que faz a conexão, seja adsl-start ou por modem discado.

Para compartilhar a internet precisa das 3 linhas abaixo:

  modprobe iptable_nat
  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  echo 1 > /proc/sys/net/ipv4/ip_forward

Estas linhas são o mínimo necessário, podem ser executadas na linha de comando, incluidas no script de inicialização para serem executadas junto com o boot ou à parte, dentro de um script que poderá ser executado manualmente ou ser chamada pelo script de inicialização, antes precisa ajustar para o device em usa na sua configuração, na segunda linha onde está ppp0 deve ser indicado a interface que esteja ligada à internet, normalmente pra que tem IP fixo o device é eth0, pra quem conecta com o pacote rp-ppoe o device é ppp0 e pra redes wireless a interface é wlan0, fique atento a este detalhe, altere a configuração acima para a interface correta na tua conexão/instalação.

Ajustar o device

Internet com conexão configurada pelo pacote rp-pppoe pra configurar e conectar, (adsl-stup e adsl-start) está usando o device ppp0 como no exemplo acima e não requer alterações.

Internet com IP configurado direto na placa de rede ou obter as configurações através DHCP fornecido pelo modem ADSL, deve estar usando o device eth0, neste caso deve usar este modelo:

  modprobe iptable_nat
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  echo 1 > /proc/sys/net/ipv4/ip_forward

Internet Wireless, via conexao Wireless - Placa Sansung o device é wlan0, neste caso deve usar este modelo:

  modprobe iptable_nat
  iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
  echo 1 > /proc/sys/net/ipv4/ip_forward

Escolha uma das opções abaixo e somente uma.

OPÇÃO 1 Faça uma única vez, copie e cole, (sobre como "copiar e colar" veja cp.txt). O modelo abaixo está configurado para ppp0, caso na tua instalação seja outro, edite e faça a correção antes de copiar e colar. Em um terminal (shell), como root, copie do editor ou browser e cole na linha de comando uma única vez todas linhas abaixo entre ### inicio e ### fim:

  ### inicio
  touch /etc/rc.d/iptfirewall
  chmod +rwx /etc/rc.d/iptfirewall
  echo "/etc/rc.d/iptfirewall" >> /etc/rc.d/rc.local
  echo \#\!\/bin/bash >> /etc/rc.d/iptfirewall
  echo "modprobe iptable_nat" >> /etc/rc.d/iptfirewall
  echo "iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE" >> /etc/rc.d/iptfirewall
  echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.d/iptfirewall
  /etc/rc.d/iptfirewall
  cat /etc/rc.d/iptfirewall
  ### fim

Achou fácil!!!!, é assim mesmo, não precisou de editor de texto nem digitar longas linhas ou comandos complicados, acrescentar as linhas, basta copiar e colar pro prompt da linha de comando e dar enter que automaticamente cria um script e inicia as regras, pra saber mais, veja comentários deste script em: http://www.zago.eti.br/scripts/scripts-modelos.txt

Outras opções.

Executar na linha de comando quando quiser ativar o compartilhameto, também vale fazer o script e não inclui-lo no script de inicialização, para ser executado manualmente, ou o copiar e colar. Procure evitar esta opção, crie um script que fica mais fácil administrar.

Criar um script, torna-lo executável e executa-lo manualmente ou incluir no script de inicialização uma chamada para ele ser executado junto com o boot, esta opção é mais fácil de administrar.

Como executar o script junto com o boot, com editor editor de textos de sua preferência, acrescente no final do script de inicialização do seu sistema, poucas linhas pode incluir direto no final do script de inicialização, muitas linhas é melhor criar um script a parte e no script de inicialização acrescente somente a chamada para executar o script.

Cuidado que o script de inicialização muda de local e nome conforme a distro, segue alguns exemplos.

Conectiva 10 acrescente no final deste script:

/etc/rc.d/rc.local

SUSE 10.1 acrescente no final deste script:

/etc/rc.d/boot.local

Importar as regras no editor "vi"

A maneira mais prática pra colocar no final de /etc/rc.d/rc.local e editar a seu modo, alterar o device de rede e etc. Comando para importar pro "vi" (veja cp.txt)

:r !lynx -dump http://www.zago.eti.br/modelos/ppp0-compartilhar

Ou download via wget:

wget http://www.zago.eti.br/modelos/ppp0-compartilhar

Cuidado com a segurança, os exemplos acima compartilha a internet para toda a rede, não tem segurança nem firewall nestas regras, portanto use somente para testar o compartilhamento, depois que funcionar, pense na segurança da rede, monte o seu firewall, veja indicações no final deste documento.

outras maneiras de compartilhamento

SUSE 10 e 10.1

Tutorial em PDF, configurar placas de rede, compartilhamento e dicas, tudo em ambiente gráfico via yast (http://www.susebr.org/) ou direto.

http://www.susebr.org/manual/Guia-ConfigurandoCompartilhamentodeInternetnoSuSE10.pdf

Testei este tutorial e funcionou, achei muito trabalhoso lidar com yast.

Resolvi adotar outro procedimento, segue um passo a passo como eu faço.

Ambiente, Open SUSE 10.1 instalado com KDE, firewall desabilitado na instalação, vou usar o meu script em lugar do firewall da distro.

Maquina com duas placas de rede, ADSL com IP fixo (Speedy Business da Telefônica), modem configurado para fornecer IP, gatway e DNS.

Neste tipo de conexão onde o modem fornece IP e DNS por DHCP, configure a placa de rede para obter IP automaticamente (por DHCP) na intalação já sai navegando.

Resta configurar a outra placa de rede (eth1) e compartilhar a conexão.

Entre no yast, pode ser em modo texto, entre em "Dispositivos de Rede" -> Placa de Rede" -> avançar e selecione a segunda placa de rede, (editar), configure com IP Estático e mascara de rede, IP da mesma classe de rede interna. Não altere mais nada, não precisa mexer na rota, avançar e OK até fechar o yast.

Use um script de IPtables para compartilhar, caso não tenha, como está navegando, para teste use este script de iptables.

  cd /etc/rc.d
  wget http://www.zago.eti.br/firewall/fireaula.sh
  chmod 755 fireaula.sh
  ./fireaula.sh
  echo "/etc/rc.d/fireaula.sh" >> /etc/rc.d/boot.local

Em uma instalação falhou, no boot exibe mensagen sobre algo de "desabilitando forward", tem algo relacionado com a configuração da placa de rede no yast, nesta instalação resolvi o problema reiniciando o serviço de rede depois de carregar o firewall, rcnetwork restart

Edite boot.local para incluir a linha acima depois da linha que chama o firewall ou copie e cole esta linha abaixo para incluir no final do boot.local.
  echo "rcnetwork restart" >> /etc/rc.d/boot.local

Prontinho, estações devem navegar normalmente, troque ou ajuste o firewall.

No boot ou quando altera rede via yast, desabilita o (ip_forward), tem como configurar no yast, prefiro executar (rcnetwork restart) depois do firewall que resolve também.

Para iniciar em modo texto, crie outra entrada no grub, como utilizo monitores antigo, para iniciar em modo texto puro, faço copia da primeira opção de menu e modifico para modo texto (3), alterando para ficar assim; vga=normal, splash=silent 3, veja exemplo modificado abaixo.
  
  title SUSE Linux 10.1 - MODO TEXTO
      root (hd0,1)
      kernel /boot/vmlinuz root=/dev/hda2 vga=normal    resume=/dev/hda1  splash=silent 3
      initrd /boot/initrd

Quando optar por outro firewall, evite a opção de firewall do Yast, quando tem outro firewall em execução, ao tentar configurações de firewall pelo yast receberá este aviso;

    Outro Firewall está Ativo
  Outro tipo de firewall está ativo em seu sistema
  Se você continuar, o SuSEfirewall2 poderá gerar erros indefinidos
  É aconselhável remover o outro firewall antes de
  configurar o SuSEfirewall2.
  Deseja continuar com a configuração?

Conferir se o firewall do SUSE está sendo iniciado junto com boot

chkconfig --list | grep fire

  SuSEfirewall2_init        0:off  1:off  2:off  3:off  4:off  5:off  6:off
  SuSEfirewall2_setup       0:off  1:off  2:off  3:off  4:off  5:off  6:off

CL10

Tutorial em modo texto, FAQ com mensagens da Linux-br
http://www.zago.eti.br/cl10-conf-rede.txt

Configurar placa de rede e rp-pppoe
http://www.zago.eti.br/placa_ne.txt
http://www.zago.eti.br/pppoe.txt

Problemas e soluções

Sempre que tiver problemas, tente seguir estas dicas.

Verifique se o firewall da distro está habilitado, tente compartilhar a conexão sem o firewall da distro, depois que funcionar o compartilhamento passe a testar o firewall, ajuda isolar o problema e enteder o que está acontecendo. Dica para distro que usa chkconfig.

chkconfig --list | grep fire

Na estação o firewall pode impedir os testes, principalmente em estações windows com programas de segurança, desabilite todos para testar, inclusive o firewall do próprio Windows, muitos destes programas impedem até o teste com ping.

Tutoriais e documentação adicional

Página sobre proxy - Squid, tutoriais, FAQ e indicações.
http://www.zago.eti.br/squid/A-menu-squid.html

Página sobre firewall - Iptables, tutoriais, FAQ e indicações.
http://www.zago.eti.br/firewall/A-menu-firewall.html
Comandos específicos sobre sua distro, resumo e indicações em;
http://www.zago.eti.br/distro/A-distro.html
Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html