]>

# Manual do Kppp

Bernd Johannes
Wuebben

    wuebben@kde.org

17 Abril 1998
Versão 1.1.1

Este manual descreve o Kppp Versão 1.1.1

KDE
KPpp
PPP
point-to-point protocol

## Introdução

`POR FAVOR NÃO ESQUEÇA DE LER A LISTA DE PERGUNTAS MAIS FREQÜENTES ! OBRIGADO !`

O kppp é um discador e uma interface para o `pppd`. Ele permite gerar scripts e configurar a rede de forma interativa. Ele automatiza o processo de discagem para seu provedor Internet e permite monitorar todo o processo de forma simples. Uma vez conectado, o kppp oferece um rico acervo de estatísticas e mantém registros do tempo que você permaneceu conectado. Embutidos estão um terminal e um gerador de scripts, que lhe permitirão configurar sua conexão com facilidade. Você não precisará mais um programa adicional de terminal, como `seyon` ou `minicom`, para testar e configurar sua conexão. O kppp oferece uma elaborada contabilidade de custos de telefonia, que lhe dá o poder de fiscalizar seus custos de conectividade.

Espero que você goste desse discador.

`Bernd Johannes Wuebben`

wuebben@kde.org

wuebben@math.cornell.edu

## Instalação

`POR FAVOR NÃO ESQUEÇA DE LER A LISTA DE PERGUNTAS MAIS FREQÜENTES ! OBRIGADO !`

### Como conseguir o Kppp

O Kppp é uma aplicação do projeto KDE http://www.kde.org. Ele pode ser encontrado em ftp://ftp.kde.org/pub/kde/, que é o principal site ftp do projeto KDE.

### Pré-requisitos

Para compilar o Kppp, você precisa das versões mais atualizadas de `kdecore` e `libkdeui`. Todas as bibliotecas necessárias bem como o próprio Kppp podem ser encontrados em ftp://ftp.kde.org/pub/kde/.

### Compilação e Instalação

`POR FAVOR NÃO ESQUEÇA DE LER A LISTA DE PERGUNTAS MAIS FREQÜENTES ! OBRIGADO !`

Não pude testar o Kppp em outro sistema que não o Linux, mas você deve ser capaz de fazer o `pppd` funcionar em uma grande variedade de plataformas, como SVR4, Solaris 2, Linux, FreeBSD, NetBSD, SunOS 4, AIX 4, OSF/1 e outras, na medida em que você tenha instalado o `pppd` nesses sistemas.

Se você quer compilar o Kppp para uma plataforma diferente do Linux, queira verificar rapidamente as primeiras duas linhas do arquivo `pppstats.cpp`, se os defines e includes estão OK. Muito provavelmente estarão corretos. Queira informar-me sobre qualquer mudança que se fizer necessária.

O Kppp precisa ter permissão de escrita para /etc/resolv.conf se você quer usar a facilidade de especificar os endereços DNS na janela de diálogo DNS.

Certifique-se de que o arquivo de opções do `pppd` - que usualmente está em `/etc/ppp/` - exista, porém esteja vazio. O `pppd` requer que ele exista, porém ele deve estar vazio, sob pena do pppd não buscar as opções junto ao programa Kppp.

Para compilar e instalar o Kppp em seu sistema, esteja em modo superusuário digite o seguinte no diretório-base da distribuição do Kppp:

    % ./configure
    % make
    % make install
    % chmod +s &dollar;(KDE)/bin/kppp

Novamente: Se você tiver problemas, queira reportá-los a mim.

### Preparando seu sistema Linux para uma conexão PPP

`POR FAVOR NÃO ESQUEÇA DE LER A LISTA DE PERGUNTAS MAIS FREQÜENTES ! OBRIGADO !`

Para os programas kppp e `pppd` funcionarem, seu kernel deve ter sido compilado com suporte a PPP. Se esse não é o seu caso, você deve obter a última versão de pppd de qualquer dos sites populares de arquivos Linux, e recompilar seu kernel com o suporte a PPP habilitado. Não tenha medo, isso soa mais complicado do que realmente é. Não esqueça de instalar o `pppd` depois de recompilar o kernel. Se você não tem certeza se seu kernel está suportando PPP, digite o comando `dmesg` no prompt de comandos e procure por algo como:

    PPP: version 2.3.0 (demand dialling)
    TCP compression code copyright 1989 Regents of the University of California
    PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
    PPP line discipline registered

Houve mudanças no suporte a PPP do kernel entre a versão 1.2.x e 2.0.x que forçaram a criação de um novo daemon `pppd`. Na maioria das distribuições, o daemon `pppd` pode ser encontrado em `/usr/sbin`. Para versões de kernel 1.2.x, a versão correta do daemon `pppd` é 2.1; para versões de kernel 2.0.x, a versão correta de `pppd` é 2.2 ou melhor. Se você não sabe que versão do `pppd` possui, digite:

    % pppd --version

Nenhum dos daemons `pppd` tem essa opção `--version`, mas usar esta opção provoca um erro (opção não reconhecida) e causa a impressão de uma lista de opções válidas, e nessa lista aparece também a versão do `pppd` :)

### Mais sobre PPP/pppd

O seguinte site pode ser de interesse para futuras referências sobre o protocolo PPP e o programa `pppd`: http://www.thoughtport.com:8080/PPP/index.html

## Configurar Kppp

`POR FAVOR NÃO ESQUEÇA DE LER A LISTA DE PERGUNTAS MAIS FREQÜENTES ! OBRIGADO !`

Para configurar o Kppp, inicie-o e pressione o botão `Configurar` na janela principal do Kppp. Uma nova janela de diálogo surgirá.

### Contas

Este diálogo mostrará as contas que você criou. Você precisa criar pelo menos uma conta. O botão `Apagar Custos` zerará o custo acumulado da conta selecionada. Acredito que você pressionará esse botão uma vez por mês, depois de ter consolidado seus custos de telefonia.

### Dispositivo

Dispositivo de Modem

  Selecione o dispositivo apropriado para seu hardware.

Controle de Fluxo

  Selecione Hardware (CRTSCTS), Software (XON/XOFF) ou nenhum controle de fluxo. Recomenda-se usar controle de fluxo por Hardware.

Terminador de Linha

  Escolha o caractere "Enter" correto para seu modem. Muitos modems usam "CR/LF". No entanto alguns modems precisam de uma configuração diferente. Se você tiver problemas para rodar um script, mexa com esta opção.

Velocidade de Ligação

  Escolha uma na lista de velocidades de conexão suportadas pela sua porta serial.

Arquivo de Travamento (lock) do Modem

  Digite o caminho e o nome do arquivo de trava do modem. Ele é tipicamente `/var/lock/LCK..modem` e você não deve mudar isso a não ser que você saiba o que está fazendo. Programas como `mgetty` dependem da existência desses arquivos de trava, e o Kppp não funcionará com o `mgetty` se o arquivo de trava não estiver configurado corretamente.

  Se você deixar esse campo vazio, o Kppp não tentará criar um arquivo de trava. Certifique-se de não utilizar a opção "lock" para o `pppd` se você informou um arquivo de trava do modem e portanto quer que o Kppp bloqueie o modem, pois a opção "lock" induz o `pppd` a tentar travar o dispositivo de modem. No entanto, como o Kppp já travou o modem, o `pppd` falhará e o Kppp mostrará a mensagem "pppd fechou inesperadamente". Certifique-se de que você tem permissão para gravar o arquivo de travamento ou o Kppp mostrará a mensagem de erro "Não foi possível criar o arquivo de travamento".

Timeout do modem

  Este é o tempo em segundos que o Kppp espera pela resposta CONNECT do seu modem após discar para o outro modem (que será tipicamente um dos modems do seu provedor Internet). Recomendo um timeout de mais ou menos 45 segundos.

### Modem

Comandos do Modem

  Esta opção abrirá uma caixa de diálogo, que você precisará preencher com comandos de modem apropriados para o seu modem em particular. Se você possui um modem compatível com Hayes, aconselho ler sobre os comandos Hayes no Apêndice deste documento. As informações fornecidas lá podem ser de grande ajuda no caso de você estar encontrando dificuldades em conseguir uma conexão estável com seu provedor.

Perguntar ao Modem

  Apertar o botão Perguntar ao Modem fará Kppp comunicar-se com seu modem para que este identifique-se. Se for bem sucedido, a resposta de seu modem será mostrada numa caixa de diálogo. Isto pode ou não ser informativo, depende de seu modem.

Terminal

  Pressionar o botão `Terminal` abre um mini terminal. Você pode usar o mini terminal para testar seu modem e experimentar o protocolo de negociação ao iniciar uma conexão PPP com seu provedor Internet. Você não precisa mais de um programa de terminal como `minicom` ou `seyon` para diagnosticar sua conexão.

### PPP

pppd Path

  Especifica a localização do seu programa `pppd`. É muito importante que este seja o arquivo binário `pppd`, e não (por exemplo) um ponteiro para um script que inicia o `pppd`, sob pena do Kppp não funcionar apropriadamente.

Timeout do pppd

  O Kppp vai esperar esse tempo depois de rodar o script e iniciar o `pppd` para que seja estabelecido um link PPP válido, antes de desistir e terminar o `pppd`.

Voltar a ligar Automaticamente se Descontectado

  Selecionar esta opção faz com que Kppp tente reconectar no caso da conexão "cair".

Mostrar Relógio no Título

  Esta opção faz o Kppp mostrar o tempo de conexão no título da janela Kppp.

Desconectar se o servidor X for encerrado

  Selecionar esta opção faz com que o Kppp termine o link PPP, desconecte o modem e feche a contabilidade de forma correta quando o servidor X é terminado. Isto é útil se você é suscetível a esquecer de fechar o Kppp, ou simplesmente não quer se preocupar em fazer a desconexão. Se você não quer que o Kppp desconecte o modem ao sair do servidor X, você deve deixar esta opção como não-selecionada. Esteja avisado, no entanto, que se você tiver habilitado a contabilidade de conexão, e você não quiser que o Kppp feche a conexão ao sair do X, você terá um lançamento não terminado em seus registros de contabilidade, quando o servidor X fecha e Kppp é terminado.

Minimizar janela quando ligado

  A janela do Kppp será minimizada após o estabelecimento da conexão. O tempo de conexão será mostrado na barra de tarefas.

Ir para o Painel quando ligado

  Se esta opção é selecionada, o Kppp ficará embutido no painel, e será simbolizado por um pequeno ícone animado. Use o botão esquerdo (primário) do mouse sobre este ícone para restaurar a janela do Kppp. O botão da direita (secundário) do mouse abrirá uma menu de contexto que oferece as opções de restaurar a janela, mostrar estatísticas de conexão ou terminar a conexão.

  Esta opção tem precedência sobre Minimizar janela quando ligado.

## Configuração de uma Conta

### Discagem

Nome da Conexão

  Você precisa dar um nome à conta.

Número de Telefone

  Especifique o número de telefone a discar. Você pode usar caracteres, como hífens, para deixar o número mais legível. Se você concatenar uma série de números, separados por dois pontos (:), o Kppp tentará estes números em seqüência, até encontrar um número que não esteja ocupado. Exemplo: 111-1111:222-2222:333-3333

Autenticação

  Escolha o método apropriado de autenticação que o Kppp deve usar para obter acesso ao servidor. Verifique com seu provedor se ele oferece suporte a PAP ou CHAP, ou se você tem de usar um script ou talvez ainda login baseado em terminal.

Guardar senha

  Selecione esta opção se você quer que o Kppp lembre de sua senha na próxima sessão.

Executar Programa quando obter ligação

  O Kppp tentará executar o comando especificado aqui logo que o link PPP estiver ativo.

Executar Programa quando terminar ligação

  idêntico ao item anterior, a não ser pelo evento disparador que nesse caso é o término do link.

Editar argumentos do PPP:

  Esta opção abre a janela com os argumentos do `pppd`. Você pode adicionar aqui quaisquer opções que você deseja que o Kppp passe ao `pppd`. Tenha certeza de que a opção -detach esteja sempre presente. Veja a página `man` do `pppd` para obter uma lista das opções disponíveis. A não ser que você saiba exatamente o que está fazendo, você deve evitar mexer nas opções do `pppd`.

### IP

Endereço IP Dinâmico

  Habilite esta opção se seu provedor Internet usa atribuição dinâmica de endereços IP. Nesse caso, seu endereço IP será diferente a cada vez que você estabelece a conexão.

Endereço IP Estático

  Habilite esta opção se seu provedor Internet lhe fornece um enderço IP fixo. Nesse caso você também terá de preencher o endereço e a máscara de sub-rede se for o caso. Consulte seu provedor se estiver em dúvida nesse aspecto.

Auto-configurar nome da host a partir deste IP

  Habilite esta opção se você quer que o Kppp configure o nome da máquina (host) e do domínio depois de estabelecer o link PPP. Isto é feito via consulta reversa junto ao DNS; o nome da máquina é determinado pelo endereço IP atribuído ao link PPP. Esta opção é útil para máquinas isoladas que querem usar protocolos como `talk`, que requerem que o nome de sua máquina seja coerente com o nome pelo qual sua máquina é conhecido na Internet. Esta opção tem precedência sobre a opção Nome de Domínio, na seção DNS. O nome original da máquina é restaurado assim que o link PPP é encerrado. Tenha cuidado se for habilitar esta opção: Ela pode ser útil para você, mas também pode causar muitos efeitos colaterais indesejáveis.

### DNS

Nome de Domínio

  Especifique o nome de domínio para a sua máquina. Assim como os endereços DNS, ele é restaurado ao estado original, conforme `/etc/resolv.conf`, quando a conexão é terminada. Se este campo é deixado em branco, nenhuma mudança é feita ao nome de domínio, e ele permanece tal como especificado em `/etc/resolv.conf`.

Servidores DNS

  Adicione os servidores de domínio, de acordo com o prescrito pelo seu provedor Internet. Você precisa especificar pelo menos um servidor DNS para ser capaz de usar endereços textuais da Internet como `ftp.kde.org`. O servidor DNS deve ser fornecido na forma numérica, como por exemplo 128.231.231.233. Os endereços serão adicionados ao arquivo `/etc/resolv.conf` em tempo de execução.

Desativar servidores DNS existentes durante a conexão

  Selecione esta opção se você quer que o Kppp desabilite os servidores de domínio listados em `/etc/resolv.conf` durante a conexão.

### Gateway

Gateway Padrão

  Selecione esta opção se você quer que o `pppd` use o Gateway padrão da sua máquina.

Gateway Estático

  Selecione esta opção se você quer especificar o Gateway a ser usado.

### Script de Login

Editar Script

  Use esta janela de diálogo para escrever um script de conexão ao seu provedor. Utilize o mini-terminal e as informações fornecidas pelo seu provedor Internet para entender em que seqüência as ações devem ser executadas.

  - `Expect:` o Kppp esperará pela recepção do texto especificado;

  - `Send:` o Kppp transmitirá o texto especificado;

  - `Scan:` o Kppp varrerá os dados recebidos à procura do texto especificado, e irá armazenar todos os caracteres depois desse texto até o fim da linha num buffer interno. Espaços em branco iniciais e finais serão desprezados;

  - `Save:` gravar o texto previamente varrido no registro espcificado. Por enquanto, o único registro chama-se 'password';

  - `Pause:` fazer uma pausa pelo número especificado de segundos;

  - `Hangup:` o Kppp fará o modem desconectar;

  - `Answer:` o Kppp fará o modem esperar por ligações externas;

  - `Timeout:` muda o timeout (tempo máximo de espera) padrão para o número de segundos especificado durante a execução do script. Você pode mudar o timeout várias vezes durante a execução de um script, se for necessário;

  - `Prompt:` Pede ao usuário do Kppp para digitar um texto, e fornece o texto especificado como dica. As letras vão aparecendo à medida em que são digitadas. Se o texto especificado inclui dois sustenidos (&num;&num;), eles serão substituídos pelo buffer de varredura;

  - `PWPrompt:` Pede ao usuário que digite um texto, e mostra o texto especificado como dica. Um asterisco será mostrado para cada caractere digitado, o que torna esse recurso ideal para digitação de senhas;

  - `ID:` Se o campo ID (identificação) da janela principal do Kppp estiver preenchido, este comando manda o ID. Se o campo não estiver preenchido, pede ao usuário que digite um ID, e mostra o texto especificado como dica. O usuário verá o que digita. Num segundo passo, como por exemplo na segunda tentativa de login, o sistema pede ao usuário que digite o ID independentemente do campo ID da janela principal;

  - `Password:` Se o campo 'senha' da janela principal do Kppp estiver preenchido, manda aquela senha. Se não estiver preenchido, o sistema pede que o usuário digite a senha, e mostra o texto especificado como dica. Um asterisco será impresso para cada caractere digitado. Num segundo passo, como por exemplo na segunda tentativa de login, o Kppp pede ao usuário que digite a senha independente do campo 'senha' da janela principal estar ou não preenchido;

  - `LoopStart:` o Kppp aguardará pelo texto especificado. Ele armazenará este texto pois será usado por LoopEnd.

  - `LoopEnd:` o Kppp aguardará pelo texto especificado para sair do ciclo. Se o texto especificado por LoopStart for recebido primeiro, a primeira linha de comando após LoopStart assumirá o comando do script. Isso permite a repetição de digitação de nome/senha em caso de erro na primeira tentativa.

#### Scripts de exemplo

Este é um script bem simples que eu poderia usar para conectar-me ao meu provedor Internet:

    Expect      ID:                        # aguarda por ID:
    Send        acme                       # Coloque sua ID aqui em lugar de acme
    Expect      word:                      # aguarda por 'password'
    Send        4u3fjkl                    # manda minha senha '4u3fjkl'
    Expect      aceito                     # meu provedor aceitou a conexão
    Send        ppp                        # Inicia o PPP do lado do provedor

Eis um script para a mesma conta, mas com digitação manual de identificação e senha. Este script solicitará a digitação do ID e da senha a cada conexão, não importa se os campos ID e senha estão preenchidos na janela principal do Kppp. Este script também ilutra o uso da estrutura LoopStart/LoopEnd. Se alguma coisa der errado durante o procedimento de login, por exemplo se eu digitar a senha errada, meu provedor Internet mandará uma mensagem de erro e reiniciará o ciclo de identificação/senha ao mostrar o texto "ID:" novamente. Se o texto "ID:" for detectado antes do comando LoopEnd, Kppp recomeçará a executar o script desde o comando LoopStart.

    LoopStart   ID:                        # Aguarda pelo texto 'ID:'
    Prompt      Enter ID:                  # Pede que eu digite o ID, e transmite
    Expect      word:                      # aguarda pelo texto 'password'
    PWPrompt    Digite Password:           # Pede que eu digite a senha, e transmite
    LoopEnd     Aceito                     # O provedor deu sinal verde
    Send        ppp                        # Inicia uma conexão PPP para mim

Aqui vai o script que eu realmente uso para conectar com meu provedor: este script pede a identificação e a senha somente se eles não estiverem preenchidos nos respectivos campos da janela principal do Kppp.

    LoopStart   ID:                        # aguarda pelo texto 'ID:'
    ID          Digite ID:                 # Pede-me o ID e transmite
    Expect      word:                      # aguarda pelo texto 'password'
    Password    Digite senha               # Pede-me a senha e transmite
    LoopEnd     aceito                     # O provedor aceitou a senha
    Send        ppp                        # Inicia minha conexão PPP na
                                           # máquina do provedor

Eis um script que eu uso para conectar com um provedor Internet, que usa um esquema de autenticação de desafio/resposta. Normalmente você ganha um dispositivo de hardware (um cartão com um display e teclas numéricas) de seu provedor. Você precisa saber a senha para usar o dispositivo. Depois de ter discado, o provedor mostra o texto de desafio. Você digita esse desafio em seu dispositivo e recebe uma senha como resposta. Então você deve digitar essa senha.

    LoopStart   ID:                        # Aguarda pelo texto "ID:"
    ID          Digite ID:                 # Pede que eu digite o ID e transmite-o
    Scan        Desafio:                   # Varre 'Desafio:' e guarda o que vem
                                           # depois dele até o fim da linha;
    Expect      Senha:                     # Aguarda pelo texto 'Senha:'
    Prompt      seu desafio é ## - Digite Senha
                                           # Pede que eu digite a senha, e transmite
    LoopEnd     concedido                  # O provedor dá sinal verde
    Send        ppp                        # Inicia a conexão PPP no lado do
                                           # provedor

A listagem a seguir mostra o procedimento de login de um provedor Internet fictício, que fornece uma nova senha a cada login. A nova senha precisa ser verificada e guardada para a próxima sessão.

    Universidade de Gomorra

    Login: satiro
    Password:
    A senha para sua próxima sessao é: YLeLfkZb
    Por favor anote-a e digite para verificacao.
    Verificação:YLeLfkZb

    1 = telnet
    2 = SLIP
    3 = PPP

    Sua escolha:

Kppp pode ser usado para fazer o trabalho tedioso por você, e elimina o risco de perder aquele pequeno pedaço de papel onde está escrita a sua senha atual. A parte chave do script a seguir é uma combinação das palavras-chave Scan e Save.

    Expect      Login:                     # aguarda pelo texto "Login:"
    ID                                     # transmite a identificação
    Expect      Password:                  # aguarda pelo texto "Password:"
    Password                               # transmite a senha
    Scan        é:                         # aguarda por '... proxima sessao é:' e
                                           # guarda a próxima senha
    Save        password                   # grava a nova senha para usar depois
    Expect      Verificacao:               # aguarda o texto 'Verification:'
    Password                               # manda nova senha
    Expect      escolha:                   # aguarde por um prompt de escolha
                                           # entre várias opções (telnet, SLIP, PPP)
    Send        3                          # escolhe a opção 3, que é o PPP

### Contabilidade

Configuração da Contabilidade

  Use o botão `Ativar Contabilidade` para ligar/desligar a contabilidade de custos telefônicos. Selecione uma regra apropriada para sua região. Se você não encontrar uma regra para usa região você pode escrever uma nova, seguindo o `TEMPLATE` (modelo) no diretório `&dollar;(KDEDIR)/share/doc/HTML/en/kppp/`. Não tenha medo de fazê-lo, pois é realmente fácil. Não esqueça de mandar-me suas regras recém-criadas. A sintaxe das regras pode ser checada com a opção de linha de comando `kppp -r rule&lowbar;file`. O arquivo deve ser movido para `&dollar;(KDEDIR)/share/apps/kppp/Rules` ou em `&dollar;(HOME)/.kde/share/apps/kppp/Rules` para que você possa achá-lo na janela de diálogo.

### Contabilidade de Volume

#### O que é contabilidade de volume ?

É basicamente a contagem do número de bytes transferidos de/para a Internet. O Kppp pode manter a conta dos bytes transmitidos, recebidos ou ambos. É você quem escolhe o que quer (ou precisa) controlar.

#### Porque eu deveria usar contabilidade de volume ?

Porque hoje em dia muitos provedores Internet começam a cobrar de seus clientes pelo número de bytes transferidos. Ou muito freqüentemente os provedores estabelecem um limite arbitrário de transferência, e começam a cobrar pelo volume acima desse limite. O Kppp mostra seu volume atual e pode ajudá-lo a manter suas contas mais baratas. É claro, se você não tem limites de volume e você estiver curioso, também pode usar esse controle.

#### Que tipo de contabilidade de volume eu deveria usar ?

Isso depende de seu provedor. Muitos deles contam somente quantos megabytes você recebeu da Internet e desprezam o quanto você mandou. Nesse caso você deve escolher "bytes recebidos". Se você paga por ambos você deve escolher "bytes recebidos e enviados".

#### Problemas

Infelizmente há alguns problemas com a contabilidade de volume. O Kppp contará o número de bytes independentemente da origem. Muitos provedores estabelecem limites ao acesso à Internet, não ao acesso da sua rede local. Portanto, se você surfa pouco na Web e utiliza um cache proxy, o proxy residirá dentro da rede de seu provedor, e ele não lhe cobrará pelos bytes transferidos do seu cache proxy. No entanto, o Kppp não sabe que esses pacotes IP estão vindo do proxy, e contá-los-á como se fossem da Internet. Portanto, se você usa um proxy, ou seu provedor usa um cache de servidor de notícias (como nntpcached), o volume reportado por Kppp será maior que o cobrado.

## Usando o Kppp

### Opções de Linha de Comando

O Kppp oferece as seguintes opções de linha de comando:

    % wuebben: kppp -h
    % kppp -- Opções válidas:
    % -h descreve as opções de linha de comando
    % -c <nome da conta> : conectar à conta <nome da conta>
    % -r <arquivo de regras>: verificar sintaxe do <arquivo de regras>
    % -q sair logo que a conexão terminar

- `-h` descreverá as opções de linha de comando existentes;

- `-c` tentará conectar sem mostrar a janela principal do kppp. Esta opção vai interessar aos impacientes;

- `-r` verificará a sintaxe das regras. Isso é muito útil se você for escrever arquivos de regras de contabilidade de telefonia.

### Utilização Normal

Está por ser escrito .... ( Tenha certeza de incluir aqui toda a informação necessária das janelas do kppp e criar uma conta antes de usar o Kppp )

## Dicas e truques do Modem

Esta seção pretende introduzir os novatos na arte negra (nem tanto) da configuração do modem. Os comandos listados arqui são todos do padrão Hayes, mas alguns modems em particular podem recusar alguns comandos.

### Sessões do Modem

Uma sessão do modem permite a você "conversar" diretamente com o modem. Você digita comandos, e ele responde. Para obter uma sessão do modem, quando nenhuma conexão está ativa, abra a janela `Configurações/Modem/Terminal`. Tente digitar ATZ (que reseta seu modem). Você deve obter uma resposta igual a OK. Escolha `Arquivo/Sair` para terminar a sessão.

### Configurações Padrões (profiles) do Modem

Uma razão plausível para mandar comandos diretamente ao modem seria você ter um conjunto de configurações que você quer manter, mas não quer especificar a cada conexão. Uma boa maneira de fazer isto é usar as configurações padrões (profiles) do modem. Os modems podem ter vários profiles armazenados, e numerados como 0,1,... AT&V pode ser usado para vê-las todas. O profile utilizado por padrão é geralmente o 0 (zero), mas isto pode ser mudado via AT&Y. A configuração padrão em uso é chamada de "ativa", ou "profile ativo".

Quando você muda uma configuração, obviamente o modem passa a se comportar de acordo com ela. Mas, o comando ATZ faz o modem recarregar a configuração padrão, desfazendo todas as mudanças. Para salvar mudanças num profile, carregue o profile que você quer mudar com ATZn, onde n é o número do profile. Faça as mudanças desejadas, então salve a configuração com AT&Wn. Para que o Kppp use o profile escolhido por você, mude o texto de inicialização (`Configurações/Modem/Comandos do Modem/Cadeia de Inicialização`). Por exemplo, ATZ1 fará o Kppp inicializar o modem e usar o profile número 1.

Se você quer que o profile volte à configuração de fábrica, use AT&F&W para voltar o profile atual ao padrão de fábrica.

Exemplo de mudanças de profile podem ser encontrados na próxima seção.

### Fazendo o modem desconectar

Às vezes você pode achar que o Kppp tem dificuldades em fazer o modem desconectar. Isso é provavelmente o resultado de uma inconsistência entre as configurações do Kppp e de seu modem. Um modem padrão aceita dois métodos de desconexão: Comando, e DTR. O método do Comando implica em mandar ao modem uma seqüência de escape, que coloca-o em modo de comando; e então, mandar o comando de desconexão (ATH).

Fora do Kppp, quando configurando o pacote `pppd` manualmente, é muito útil utilizar o método de Comando, pois ele permite sair da sessão de terminal, e carregar o `pppd` sem desconectar o modem. Já na maioria das outras situações, o método DTR é preferido, por ser mais simples.

#### Método DTR (AT&Dn)

O método DTR fará o modem desconectar tão logo o Kppp pare de usar o modem. Se você acessar o modem em modo de comando via emulador de terminal, consultar seu estado via AT&V, e uma das linhas da configuração atual for igual a &D0, então o método de desconexão DTR está desligado. Para habilitar o método DTR, use a opção `Configuração/Mais/Terminal` para acessar o modem. Então:

    ATZ         # reseta o modem para a sua configuração padrão
    AT&D2       # Configura para desconectar na <em/queda/ do DTR
    AT&W        # Grava na configuração padrão (profile)

##### Como funciona o método DTR

Quando o fio Data Terminal Ready (DTR) do cabo serial entre o computador e o modem é alimentado com 0 (zero) volts pelo computador, o modem é desconectado. Quando o Kppp começa a fazer uso da porta serial, o fio DTR é alimentado com -5 (menos cinco) volts pelo computador. Num modem externo, você pode ver a lâmpada DTR (ou TR) acender quando isso acontece. Quando a lâmpada TR apaga (pelo fato do Kppp ter fechado a porta serial, ou talvez alguma coisa pior, como um cabo solto), o modem desconectará da linha telefônica.

Note que não nos importa a voltagem de conexão / desconexão. O que importa é sabermos que esta é uma forma prática do computador dizer ao modem quando ele deve desconectar.

#### Método de Comando

A outra maneira para fazer o modem desconectar é fazer o modem aceitar um comando enquanto estiver conectado. Para fazê-lo desconectar dessa forma, entre numa sessão de comunicação direta com o modem (usando o Terminal, da mesma forma que alguns parágrafos acima), e mude o tempo de segurança para um intervalo curto como:

    ATZ
    ATS12=5
    AT&W

Então calibre o controle `Configurações/Mais/Comandos do Modem/Tempo de Guarda` até que fique igual a 5 (cinco), ou seja, idêntico ao registrador S12. Agora o modem deve desconectar corretamente.

##### Como funciona o método de Comando

Quando um modem local está conectado a um modem remoto, ele está no estado de conexão, onde todos os caracteres que ele recebe pela porta serial são incontinenti repassados ao modem remoto.

Para que o modem aceite comandos, é preciso colocá-lo no estado ou modo de comando. O código de escape faz justamente isso.

O código de escape é definido como uma seqüência de três eventos:

- Silêncio (deve ser maior que S12/50 segundos);

- Caractere de escape (definido pelo registrador S2, o padrão é "+"); deve ser repetido por três vezes (menos de S12/50 segundos entre eles);

- Silêncio (maior que S12/50 segundos).

Uma vez que o modem esteja no modo de comando, você pode mandar comandos a ele :) Para fazê-lo desconectar, transmita o comando ATH. Os códigos de escape e comando de desconexão utilizados pelo Kppp são mostrados na janela `Configurações/Mais/Comandos do Modem`. Eles devem ser próprios a seu modem.

### Torne mais rápida a discagem por tom

Se você pode usar discagem de tom, o tempo que a discagem toma pode ser mudado atuando-se sobre o registrador S11. Ele contém a duração (em centésimos de segundo) de cada tom numérico que é soado durante a discagem. O padrão é geramente 95 (quase um segundo). A velocidade máxima de discagem depende da sua companhia telefônica. A tempo mínimo é 50, quase duas vezes mais rápido, e quase sempre funciona bem.

    ATZ		# reseta o modem para sua configuração padrão.
    ATS11=50	# a mais rápida discagem possível,
                    # use um número maior se não funcionar.
    AT&W            # Salvar no profile.

## PAP e CHAP

A partir da versão 0.9.1 o Kppp suporta diretamente a forma mais utilizada da autenticação PAP. A seção "PAP e CHAP com Kppp" descreve como fazer o PAP e o CHAP trabalharem com o Kppp em linhas gerais, enquanto a seção "PAP com Kppp" descreve em detalhes como tirar vantagem do suporte do Kppp à versão do PAP mais disseminada entre os provedores Internet.

### PAP e CHAP com o Kppp

O texto a seguir é baseado num email de Keith Brown e explica como fazer o Kppp funcionar com uma conta PAP ou CHAP genérica. Se seu provedor Internet lhe forneceu somente uma identificação de usuário e uma senha para uma conta PAP, é provável que você possa pular esta seção e lhe será suficiente ler a próxima ("PAP com Kppp").

O PAP parece muito mais complicado à primeira vista do que ele realmente é. O servidor (a máquina à que você se conecta) basicamente diz à máquina-cliente (sua máquina) para autenticar-se usando PAP. O cliente (pppd) procura num arquivo específico por uma linha que contenha o nome de servidor e o nome de cliente corretos para esta conexão, e então transmite a senha que encontrou lá. E é isso! Agora, aqui está como fazer isso acontecer. Estou assumindo uma versão 2.2.0 do `pppd` e uma instalação padrão onde os arquivos de configuração do `pppd` estejam em `/etc/ppp`.

Por exemplo, suponha que eu tenha uma conta Internet com o provedor `vagalume.com.br`, com o nome de usuário `epx`, e a senha `tahoma`. Primeiro, eu preciso adicionar tudo isso ao arquivo `/etc/ppp/pap-secrets`. O formato da linha para o nosso propósito é:

    USUÁRIO   SERVIDOR     SENHA

então eu adiciono a linha

    epx  vagalume  tahoma

ao arquivo, e gravo. Nota: Eu posso usar qualquer nome que eu queira para designar o servidor, desde que eu use o mesmo nome nos argumentos do `pppd`, conforme veremos dentro em pouco. Eu encurtei o nome de servidor para `vagalume`. Este nome é usado somente para localizar a senha correta.

Agora, eu preciso configurar minha conexão no Kppp. O processo básico é o mesmo de qualquer conexão, e não vou entrar em detalhes aqui, exceto para dizer que você deve certificar-se que o arquivo `/etc/ppp/options` esteja vazio, e você provavelmente não quer script de login. Agora, na janela Configurações, na parte inferior, está o botão `Editar Argumentos do PPPD`. Clique este botão para abrir uma janela similar à janela de edição do script de login. Aqui nós vamos digitar alguns valores que serão informados ao `pppd` como argumentos de linha de comando, e no caso de haver vários argumentos, nós precisamos digitar cada um como uma linha separada, e na ordem correta.

Nós podemos colocar quaisquer outros argumentos que quisermos primeiro. Normalmente você vai deixar intactos os argumentos-padrões `-detach` e `defaultroute`. Agora precisamos adicionar argumentos que o `pppd` necessita para lidar com a autenticação PAP. Neste exemplo eu vou adicionar os parâmetros `user`, `epx`, `remotename`, e `vagalume`, nesta ordem. O argumento `user` diz ao `pppd` por que nome procurar em `pap-secrets`, e mandá-lo ao servidor. O argumento `remotename` somente é usado pelo `pppd` para achar a linha do arquivo `pap-secrets`, e não é mandado ao servidor, portanto, frisando, o nome de servidor pode ser qualquer um desde que seja o mesmo do arquivo `pap-secrets`.

Isso é tudo que precisa ser feito. O exemplo deve lhe fornecer subsídios para configurar sua própria conexão a um servidor com autenticação PAP. O CHAP não é muito diferente. Veja o Guia Linux para Administradores de Rede; ele contém o formato do arquivo `chap-secrets` e os argumentos `pppd` necessários. O resto deve ser fácil...

### PAP com Kppp

Há duas maneiras diferentes de usar PAP:

#### Autenticação no lado do cliente

Essa variante é usada por muitos provedores comerciais. Basicamente, significa que você (ou seu computador) deve autenticar-se ao servidor PPP do provedor. O servidor PPP não precisa autenticar-se para seu computador, e tipicamente isso não é necessário pois você sabe a que computador está conectado, já que foi você quem iniciou a ligação. Portanto, não há nenhum problema mais grave de segurança. O Kppp suporta essa variante diretamente. Veja mais abaixo as instruções de uso.

Se o seu provedor só lhe fornece um nome de usuário e uma senha, e lhe diz que você deve usar autenticação PAP, esta é a variante a ser usada.

#### Autenticação em duas vias

Idêntica à anterior, mas seu computador requer que o servidor PPP do provedor autentique a si mesmo. Para estabelecer uma conexão, você deve escolher o método de autenticação baseado em script, e não o PAP. Você também terá de editar manualmente o arquivo `/etc/ppp/pap-secrets`. Apesar do Kppp não oferecer suporte direto a essa variante, é fácil estabelecer uma conexão que utilize autenticação em duas vias com o Kppp. Os detalhes estão descritos na seção anterior, "Usando PAP e CHAP com o Kppp".

#### Preparando o kPPP para PAP

1. Tenha certeza que `/etc/ppp/options` (e `˜/.ppprc` se tiver um arquivo assim) não contenha um dos argumentos abaixo:

   - `+pap`

   - `-pap`

   - `papcrypt`

   - `+chap`

   - `+ua`

   - `remotename`

   Dificilmente algum desses argumentos estará lá, mas não custa ter certeza.

2. Inicie o Kppp

3. Clique em Configuração

4. Escolha a conta que você quer usar com PAP, e clique em Editar

5. Clique na aba Discar.

6. Selecione PAP na caixa Autenticação

7. Se você não quer redigitar a senha a cada vez que disca, selecione Guardar Senha. Isto irá salvar a senha. Tenha certeza que ninguém além de você tenha acesso à sua conta, do contrário alguém poderá ver a sua senha.

8. É isso. Feche as janelas, digite seu nome de usuário e senha que seu provedor lhe forneceu, e disque.

## Perguntas e Respostas

### Perguntas mais freqüentes

#### Não consigo fazer o Kppp trabalhar. Ele me diz que o `pppd` morreu ou o timeou expirou!

Você leu este manual com cuidado ? Aqui estão listados, novamente, os erros mais comuns:

- Tenha certeza que o `pppd` é o binário real, e não um script;

- Tenha certeza que o arquivo `/etc/ppp/options` exista, mas que esteja vazio;

- Tenha certeza que você NÃO esteja usando a opção "lock" como argumento para o `pppd` (Kppp já está cuidando do travamento do dispositivo);

- Remova a opção "lock" dos seus arquivos `/etc/ppp/options` e `˜/.ppprc`;

- Tenha certeza que você tem as permissões corretas. Em caso de problemas, você pode tentar rodar o Kppp como superusuário. Se tudo estiver OK, dê uma permissão suficiente ao usuário, se não puder conviver com o Kppp em setuid "root". A maneira correta de proceder é criar um grupo "modem";

- Você pode estar iniciando o `pppd` muito cedo, isto é, antes do servidor remoto estar pronto para negociar uma conexão PPP. Se você está usando um script de login, você deve usar o terminal embutido no Kppp para verificar seu procedimento de login. alguns provedores requerem que você mande um comando "ppp" para iniciar o PPP. Alguns usuários relataram que tiveram de acrescentar "Pause 1" ou "Pause 2" aos seus scripts, para solucionar conflitos de tempo.

Se nada disso ajudar, você pode obter alguma informação adicional de depuração do log do seu sistema, digitando o seguinte comando:

    % tail /var/log/messages

#### O Kppp me diz -- Desculpe, não consegui localizar o modem

Isto significa que o Kppp não tem permissão para abrir o dispositivo de modem ou que você selecionou um dispositivo de modem (na aba `Modem` da janela Configurações) que não é válido. Primeiro tenha certeza que você selecionou o dispositivo correto. Uma vez que você tenha certeza disso, você precisa dar ao Kppp a permissão correta para acessar o modem e para poder modificar o arquivo `/etc/resolv.conf` no caso de você querer que o Kppp configure o DNS por você. Se o Kppp puder rodar com permissão (setuid) de root (superusuário), todos esses problemas ficam automaticamente resolvidos, do contrário você terá de configurar as permissões corretamente. Para dar ao Kppp permissão de root, faça o seguinte:

    % su root
    % chown root:root &dollar;(KDEDIR)/bin/kppp
    % chmod +s &dollar;(KDEDIR)/bin/kppp
    % exit

#### O Kppp me diz que não posso criar o arquivo de travamento do modem

Isto na maioria das vezes significa que você instalou o Kppp sem permissão de superusuário (SETUID bit) e que você, a pessoa que está executando Kppp, não tem permissão de escrita para o diretório de arquivos de travamento (normalmente é `/var/lock`. Este é por exemplo o caso dos sistemas RedHat. Verifique a janela Modem para determinar a localização precisa que você escolheu. A solução é facil - ou dê permissões de root ao Kppp (setuid), ou dê a usuários comuns permissão de escrita ao diretório `/var/lock`, ou ainda crie um grupo `modem` que tenha acesso ao diretório `/var/lock`.

#### Por que o Kppp é instalado com permissões de root (setuid) ?

Não há necessidade de deixar o Kppp assim, se você conhece um pouco de administração de sistemas Unix. Crie um grupo `modem`, e inclua nesse grupo todos os usuários a quem você quer dar acesso ao modem; faça com que esse grupo tenha permissões de leitura e escrita sobre o dispositivo do modem; e se você quer que a configuração automática do DNS funcione com o Kppp, então dê ao grupo permissões de leitura/escrita sobre o arquivo `/etc/resolv.conf`.

Por favor não me critique por instalar o Kppp com permissões de root; eu simplesmente não posso mais lidar com o volume de e-mail que eu recebia de usuários desesperados que tinham problemas em fazer o Kppp funcionar, simplesmente porque eles não sabiam o suficiente sobre o Unix e sobre permissões de dispositivo.

#### O Kppp fica eternamente -- esperando OK

Você mexeu nas configurações de CR/LF ?

Talvez seu modem não suporte uma inicialização rápida. Aumente a `Demora de Resposta`, que pode ser encontrada em `Comandos do Modem` na aba `Modem`. Você pode fazer algum ajuste fino mais tarde.

#### Como eu faço o Kppp mandar um caractere LF ou um CR ?

Basta mandar um texto vazio; veja o exemplo:

    Send                                   # manda um texto vazio
    Expect      ID:
    Send        sou_eu
    Expect      word:
    Send        esqueci
    Expect      aceito
    Send        ppp

#### O Kppp reclama -- ... Não consegui criar arquivo de travamento ...

Isto significa que você não tem permissões para criar um arquivo de trava. Se, por exemplo, você especificou `/var/lock/LCK..modem` na aba do Modem, você precisa ter permissões de escrita para gravar no diretório `/var/lock`. Isso não será problema se você deu ao Kppp permissões de setuid root. Por favor leia a seção Arquivos de Travamento.

#### Posso usar PAP e CHAP como o Kppp ?

Sim, você pode. Leia a seção PAP e CHAP . Na verdade, recebo mais e mais requisições de informações detalhadas sobre como usar o PAP ou o CHAP com o Kppp. Se você estiver usando um dos dois protocoelos com o Kppp, eu gostaria muito de receber explanações detalhadas sobre como usar PAP ou CHAP com o Kppp. Eu irei então incluir o que receber aqui na documentação do Kppp. Tenho certeza de que será de muita ajuda para um grande número de iniciantes. Por favor considere ajudar e devolver algo ao Kppp... Obrigado!

#### Como eu escrevo um arquivo de regras de custo telefônico ?

Siga o arquivo TEMPLATE (exemplo) que é suprido com o Kppp. Você deve encontrar uma cópia no diretório `&dollar;(KDEDIR)/doc/HTML/kppp`. Use o comando de linha `kppp -r` para checar a sintaxe de seu novo arquivo de regras.

#### Eu escrevi um arquivo de regras de custo telefônico para minha região. Como posso submetê-lo de modo que outros possam fazer uso dele ?

Eu adoraria receber qualquer arquivo de regras que for escrito. Eu vou torná-los disponíveis em minha página web. Antes de você me mandar um novo arquivo de regras, certifique se que ele não esteja ainda disponível na página Web do Kppp. Então mande via e-mail o arquivo, para mim.

#### Meu país tem um feriado móvel diferente da Páscoa.

Neste caso você precisa escrever código novo que calcule esse feriado. Dê uma olhada no arquivo-fonte `ruleset.cpp` e baseie-se no exemplo da Páscoa ("easter"). Depois, mande a atualização para mim.

## Agradecimentos

Eu gostaria de agradecer as seguintes pessoas por suas contribuições ao Kppp:

- Jesus Fuentes Saaverdra por ter implementado diversas opções e itens diversos.

- Mario Weilguni pelo seu trabalho em contabilidade de telefonia.

- Markus Wuebben pela janela de consulta ATI.

- Harri Porten por seu trabalho relacionado ao kconfig.

- Peter Silva pelas janelas de diálogo e outras contribuições.

## Apêndice

### Conjunto de comandos dos modems Hayes

O conjunto de comandos Hayes pode ser útil se você precisar fazer uma "sintonia fina" em seus comandos de modem.

### Arquivos relacionados ao Kppp

Por padrão o Kppp faz uso dos arquivos e diretórios abaixo. A localização de alguns deles pode ser mudada em tempo de compilação.

    &dollar;(KDEDIR)/bin/kppp
    &dollar;(KDEDIR)/share/doc/HTML/.../kppp/*
    &dollar;(KDEDIR)/share/apps/kppp
    &dollar;(KDEDIR)/share/apps/kppp/Rules
    &dollar;(HOMEDIR)/.kde/share/apps/kppp
    &dollar;(HOMEDIR)/.kde/share/apps/kppp/Rules/*.rst
    &dollar;(HOMEDIR)/.kde/share/apps/kppp/Log/*
    &dollar;(HOMEDIR)/.kde/share/config/kppprc

### Relatando problemas com o Kppp

Antes de relatar um problema ou bug para o mantenedor do kppp, tenha certeza de que leu atentamente a seção Perguntas mais Frequentes.

Se você ainda estiver com problemas, voce precisa incluir as seguintes informações em seu relatório:

- A versão do kppp que você está usando. `kppp -v` mostrará o número de versão.

- A versão do `pppd` que você está usando. `/usr/sbin/pppd -h` mostrará o número.

- Que sistema operacional e a versão que você usa. O comando `uname -a` fornecerá essas informações na maioria dos sistemas UNIX.

- Se o kppp reportar "pppd died unexpectedly" (pppd terminou inesperadamente), adicione a opção debug aos argumentos do pppd. Disque novamente para reproduzir o erro.

  Agora o arquivo `/var/log/messages` ou `/var/adm/messages` (o nome exato depende de seu sistema e de sua configuração, mas um sistema Linux típico deve possuir um dos dois. É claro que você deve ter permissões de root para ler este arquivo) terá um grande volume de texto de depuração. Não mande-nos o arquivo inteiro!. Normalmente ele contém milhares de linhas, e nós não temos tempo de processar arquivos desse tamanho. Mande apenas as últimas linhas que contém informação do `pppd`. Tenha certeza que este arquivo não contém informações que possam comprometer sua segurança tais como IDs e senhas. Troque-os por nomes como "myuser" e "mypass", que não prejudicam a legibilidade do arquivo.

Tradução por Elvis Pfützenreuter `(epx@netville.com.br)`