PPP por demanda

Linux in Brazil

Documentação original
e de qualidade
em bom português

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Dúvidas comuns | Perguntar no Fórum | Notícias | Mais documentos | Contato
 
Destaques de hoje:
  • Abundam as análises do Chromium, navegador web open source do Google
  • A semana no BR-Linux: Reiser condenado, Firefox 3.1 mais rápido, pedal de guitarra open source
  • Resultado da promoção da camiseta "Nerdômetro" da Red Bug - brinde pra todo mundo!
  • Último dia para enviar sua foto e concorrer às camisetas "Nerdômetro"
  • Discagem sob Demanda utilizando PPPD

    Desenvolvido por: Jose Roberto Kerne - jrkerne1@rno.matrix.com.br
    Revisado em: 18 de agosto de 2000

    Este trabalho foi especialmente desenvolvido para empresas de pequeno porte, usuários com uma pequena rede, enfim, todos aqueles que possuem acesso à Internet utilizando para isto um acesso discado. Na maioria dos casos, (como o meu) não há a necessidade de um link dedicado para acesso a internet, pois os custos com aquisição de um roteador e a mensalidade/inscrição do link são considerados relativamente altos para utilização de correio-eletrônico e navegação Web durante horários restritos. Uma alternativa para resolver esta questão é a utilização de acesso a internet por meio compartilhado, onde somente uma máquina se conecta a internet utilizando discagem sob demanda, dando acesso aos demais terminais da rede, podendo-se usufruir assim de todas as vantagens de proxy, firewall, correio interno, e tornando possível a implementação de uma Intranet com baixo custo.

    Uma alternativa interessante, e que poucos tem conhecimento, é que pode-se utilizar uma interface pppX em modo "demand" para tornar os recursos acima disponíveis. (Descobri isso através de um amigo na lista linux-br, recebi alguns fontes, adaptei as minhas necessidades e veohlah!!! O squid já estava no ar e daí em diante foi mais fácil). Aproveito para agradecer ao amigo Fabio Tavares Vieira, que me enviou os fontes para que eu pudesse realizar esta maravilha:

    [ Para o passo-a-passo abaixo, certifique-se que você está logado como root. ]

    Pacotes necessários:

    É necessário ter o pacote ppp instalado, para verificar a existência deste pacote, basta digitar o comando:

    [root@servidor /]$ rpm -q ppp

    Se o pacote estiver instalado a resposta sera a seguinte: ppp-2.3.11-3cl (minha versao do ppp, disponivel no CL5.0)

    Caso contrário, pegue o CD de sua distribuição e instale o pacote ppp:

    rpm -ivh /mnt/cdrom//RPMS/ppp-.rpm

    O próximo passo é configurar a interface ppp (considerarei como ppp0). Entre no linuxconf, Ambiente de Rede. Em "Tarefas do Servidor" selecione "PPP/SLIP/PLIP".

    * Adicione uma nova interface PPP.

    * Selecione a opção [ Personalizar ]

    * Preenchar os campos indicados com o nome da conexão (somente identificação), velocidade da linha, porta do modem, string de inicialização do modem, número do seu provedor.

    * Na área "Chat" você deverá preencher o script de conexão ppp, siga os passos abaixo:

    Primeiro Espere: "ogin:" (sem aspas)

    Primeiro Envie: (sem os sinais de <>)

    Segundo Espere: "ord:" (sem aspas)

    Segundo Envie: (sem os sinais de <>).

    * Na área "Rede", preecha como mostrado abaixo:

    [ ] Ativar interface na inicialização
    [ ] Defina a rota padrão
    [X] Restabelecer conexão quando falhar
    

    * Na área PAP, informe seu login e sua senha.

    login: seu_login
    password: sua_senha
    

    * Salve suas configurações, e saia do linuxconf.

    * Inclua a seguinte linha ao arquivo /etc/resolv.conf

    nameserver ip_do_seu_provedor
    

    * Altere o arquivo /etc/ppp/options de acordo com o mostrado abaixo:

    lock
    pap-timeout 200
    noipdefault
    defaultroute
    modem
    usepeerdns
    user 
    200.0.0.1:200.0.0.2
    ipcp-accept-local
    ipcp-accept-remote
    lcp-echo-interval 0
    crtscts
    holdoff 10
    maxfail 3
    demand
    idle 300
    passive
    noauth
    debug
    asyncmap 0
    persist
    

    Descricao das principais opcoes:

    * pap-timeout 200 -> aumenta o tempo de verificação de usuario e senha do ppp para que o modem não desconecte antes de terminar a negociação (o som de conexão). Encontrei este problema quando configurei isto pela primeira vez

    * noipdefault -> não estabelece um IP padrão para a interface ppp0

    * defaultroute -> define como rota padrão a interface ppp0 (troca de eth0 para ppp0)

    * modem -> utiliza controle de dispositivo /dev/modem

    * user -> informar em o nome do usuário para conexão com servidor

    * crtscts -> utiliza controle de fluxo do modem

    * holdoff -> especifica o tempo em segundo para que a conexão seja reestabelecida

    * maxfail -> especifica o numero maximo de tentativas de conexao, quandi atingir o valor especificado o pppd é desligado. Se você quer que a interface fique ativada, mesmo que por varias tentativas sem sucesso, apague esta linha.

    * demand -> informa que o ppp será utilizado em modo Demand

    * idle -> informar aqui quantos segundos a conexao podera ficar aberta sem tráfego. Exemplo 300 = 5 minutos

    * persist -> informa ao pppd que esta conexão deverá persistir caso ocorra algum erro.

    * Altere o arquivo /etc/ppp/chap-secrets de acordo com o mostrado abaixo

    "usuario"  interface   "senha"
    

    onde: "usuario" devera ser preenchido o nome do usuario/login, deixar as "" (aspas); interface indicará qual a interface que perfente esta configuracao, usuario/senha. Para utilizar esta como padrão, basta colocar um "*" sem os sinais de "" (aspas); e "senha" deverá ser preenchido a senha, deixar as "" (aspas)

    * Altere o arquivo /etc/ppp/pap-secrets de acordo com o mostrado abaixo:

    usuario  interface   senha
    

    onde: usuario deverá ser preenchido o nome do usuário, interface indicará qual a interface que pertence esta configuracao, usuário. Para utilizar esta como padrão, basta colocar um "*" sem as "" (aspas), e senha deverá ser preenchido a senha.

    * Crie o diretorio: /etc/ppp/scripts

    * Agora, crie dentro destes diretórios os seguintes arquivos:

    Arquivo: /etc/ppp/scripts/carregar

    #!/bin/sh
    # Script de Discagem para utilizacao do Daemon pppd em modo on demand
    # com autenticacao no provedor via PAP
    # Autoria      : Fabio Tavares Vieira
    # Em           : Julho/2000
    # Revisado por : Jose Roberto Kerne - jrkerne1@rno.matrix.com.br
    # Em           : 15 de Agosto de 2000
    # Este script esta regido pela GPL - GNU General Public License.
    
    

    echo "Discagem sob Demanda... [ Carregado ]" /usr/sbin/pppd /dev/modem 115200 connect \ '/usr/sbin/chat TIMEOUT 200 ABORT "BUSY" ABORT "NO DIALTONE" ABORT "NO CARRIER" "" ATZ OK ATS6=2S7=122X3DT CONNECT'

    Explicação: Deve-se incluir a seguinte linha no arquivo: /etc/rc.d/rc.local

    /etc/ppp/scripts/./carregar

    Isto tornará a interface PPP ativa, e em espera por uma requisição de endereço externo a sua rede.

    Arquivo: /etc/ppp/scripts/ligar

    #!/bin/sh
    # Script para ativar o pppd e iniciar automaticamente 
    # a conexao com a Internet.
    # Autoria      : Fabio Tavares Vieira
    # Em           : Julho/2000
    # Revisado por : Jose Roberto Kerne - jrkerne1@rno.matrix.com.br
    # Em           : 15 de agosto de 2000
    # Este script esta regido pela GPL - GNU General Public License.
    
    

    # Looping necessário para dar tempo para o pppd ser carregado em memoria. echo "Ativando Conexao PPP on Demand..." while ! [ -f /var/run/ppp0.pid ] do echo "Aguardando interface ppp0 ser carregada..." done

    # Para que a conexão seja realizada, e necessario que a rede solicite # um endereco IP externo, ou seja, que não faça parte da sua rede, abaixo # está um exemplo, utilizando IP do servidor Matrix ping 200.196.7.1 -c 1 -i 1

    Explicação: Este script servirá para os testes de conexão. Após executar o script "carregar", este script fará a solicitação de um endereco externo, forçando assim o pppd a discar e conectar ao provedor.

    Arquivo: /etc/ppp/scripts/desligar

    #!/bin/sh
    # Script para desativar o pppd
    # Autoria      : Fabio Tavares Vieira
    # Em           : Julho/2000
    # Revisado por : Jose Roberto Kerne - jrkerne1@rno.matrix.com.br
    # Em           : 15 de agosto de 2000
    # Este script esta regido pela GPL - GNU General Public License.
    
    

    echo "Discagem sob Demanda... [ Descarregado ]" killall pppd

    Explicação: Este script servirá para os testes de conexão. Após a conexão com o provedor, pode-se forçar a desconexão utilizando este script.

    Arquivo: /etc/ppp/scripts/mantem_ligado

    #!/bin/sh
    # Script para manter a conexão PPP ativa, mesmo que 
    # não se esteja utilizando
    # a interface PPP, ou seja, navegando na internet, 
    # a conexao ficarah disponivel
    # Autoria      : Fabio Tavares Vieira
    # Em           : Julho/2000
    # Revisado por : Jose Roberto Kerne - jrkerne1@rno.matrix.com.br
    # Em           : 15 de agosto de 2000
    # Este script esta regido pela GPL - GNU General Public License.
    
    

    ping 200.196.7.1 -c 1 -i 1

    Explicação: Este script mantem a conexão aberta, gerando tráfego para a interface PPP. Isto serve para testes de sua interface PPP.

    * Depois de criados estes arquivos, execute o comando: chmod 755 /etc/ppp/scripts/* Este comando tornará os arquivos executáveis, para que possam ser carregados e devidamente testados.

    Executando os testes

    Para testar se sua conexão está ok, execute o script "/etc/ppp/scripts/carregar". Comando: /etc/ppp/scripts/./carregar

    Aparentemente não acontecerá nada, mas será carregado o deamon pppd. Confira nos processos: Comando: ps ax

    o seguinte processo deverá estar ativo:

    XXX X XX X:XX /usr/sbin/pppd /dev/modem 115200 connect ...
    

    Agora, execute o script: /etc/ppp/scripts/ligar Comando: /etc/ppp/scripts/./ligar

    Você ouvira o seu modem discar, e conectar ao provedor. Se você verificar os processos, irá observar que um novo processo foi iniciado, o chat:

    XXX XX X:XX /usr/sbin/chat ...
    

    Este é o processo de autenticação de usuario e senha, que utilizará o que foi preenchido na interface ppp0, configurado via linuxconf.

    Agora é so abrir o Netscape e navegar! Para desconectar, pode-se deixar a conexão inativa por 5 minutos, ou executar o script: /etc/ppp/scripts/desligar Execute o comando: /etc/ppp/scripts/./desligar

    Finalmente acabou... é isso aí... se você teve paciência de escrever tudo o que está aqui, agora você tem o serviço de discagem sob demanda ativo em seu servidor. Se o serviço de Proxy estiver ativo, o funcionamento será o mesmo, desde que o script /etc/ppp/scripts esteja carregado. Lembro que você é livre para alterar este scripts da forma que quiser, desde que envie uma cópia da alteração para o Autor e para o Revisor (descritos nos scripts), e não retire as informações dos Autores Originais destes scripts.

    Grato pela atenção!

    Abraços
    José Roberto Kerne
    jrkerne1@rno.matrix.com.br
    Departamento de Informática
    Rineplast Plásticos Rio Negrinho Ltda