# Configurando o &kppp; para chamada de retorno

Este capítulo é baseado no material fornecido por Martin Jäfner, mh@ap-dec717c.physik.uni-karlsruhe.de

## Servidor de chamada de retorno &UNIX; ou &Linux;

Esta seção apresenta a chamada de retorno do &UNIX; (&Linux;), e como o &kppp; pode ser configurado para conectar-se a um servidor de chamada de retorno &UNIX;, especialmente com um script baseado em servidor de chamada de retorno &Linux;

### Uma introdução à chamada de retorno

Existem diversas razões para considerar o uso de chamadas de retorno. Algumas delas são:

- Para aumentar a segurança de sua rede local

- Para reduzir os gastos de co-trabalhadores externos

- Para controlar os custos telefônicos onde as chamadas são computadas como custos dos negócios

Pense em alguém chamando um número de seu servidor de conexão, e quebrando uma senha. Porque o incômodo de manter um firewall para sua conexão Internet, se o acesso a sua rede é tão fácil?

Programas de chamadas de retorno em termos gerais pedem pelo seu nome, e então encerram a ligação. Ele então liga de volta, normalmente em um número que é armazenado no servidor em um banco de dados. O cliente então atende o telefone e continua com a conexão como se nada tivesse acontecido. O servidor agora solicita seu nome de usuário e senha, sabendo quem você é com base na primeira ligação, ou pelo menos quem você disse que é. A conexão é estabelecida normalmente, e o pppd é iniciado.

Agora a grande questão é, como dizer ao cliente para atender o telefone quando o servidor chama de volta. Você precisa de um programa especial, como o mgetty? A resposta é não, você não precisa de um programa cliente especial. Em termos gerais, qualquer cliente pode ser usada para conexões de chamada de retorno, você pode usar tanto um programa de terminal simples como o minicom para conectar-se.

A única coisa que você deve fazer é dizer ao seu modem para `AutoAnswer` (ou seja, responder automaticamente) ao telefone quando um `RING` for detectado pelo modem. Isto é feito com o seguinte comando de modem:

    AT&SO=1

Isto diz ao modem para atender o telefone após um `RING`.

Como muitos outros programas cliente, o &kppp; monitora para ver se a conexão é fechada pelo servidor, e então interrompe a sessão atual se um `NO CARRIER` é detectado. Isto, então, é o problema real ao configurar uma chamada de retorno. É claro que o `NO CARRIER` será detectado no momento que o servidor de chamada de retorno interromper a ligação. Logo alguns servidores usam um programa especial de login. Assim como resolver este problema? Você diz ao seu modem para mostrar `CARRIER UP` sempre (o que não causa problemas se você disser ao cliente para interromper a ligação). Você pode fazer isto com o seguinte comando de modem:

    AT&C0

Se você deseja testar isto, você pode primeiro usar um programa de terminal simples como o minicom, e chamar seu servidor de chamada de retorno para ver o que acontece.

### A configuração do &kppp;

Assim, agora que você viu a teoria em ação, como você deve configurar o &kppp; para lidar com a conexão?

O procedimento é simples e direto, como mostrado a seguir.

1. Primeiro diga ao modem para aceitar conexões, e não interromper a negociação quando o servidor de chamada de retorno finalizar a ligação pela primeira vez. Você pode adicionar estas opções na aba Modem da configuração do &kppp;, adicionando na opção String de Discagem o string `AT&C0S0=1DT`

   Nenhuma outra mudança na configuração do &kppp; é necessária. Se você experimentar problemas na inicialização do modem e reinicialização, verifique a seção Problemas para mais informações.

2. Pense sobre o seu servidor por um instante. Lembre-se que o &UNIX;, o &Windows; e o Macintosh são sistemas operacionais que possuem opiniões diferentes sobre como terminar uma linha em um arquivo de texto, e consequentemente, nos procedimentos de login também. Se você estiver conectando-se a um servidor &Windows;, use `CR/LF`, se for um servidor &UNIX;, use `CR`, e se for um servidor Macintosh, use `LF`

3. Nós estamos considerando para estas instruções que você está discando para um servidor de chamada de retorno &Linux; que usa um login ordinário (não PAP ou semelhante).

   Configure o estilo de Autenticação na aba Ligar da configuração de conta para Baseado em script

4. Agora você terá que construir um script de login. Editar scripts de login é um dos recursos mais legais do &kppp;. Você pode encontrá-lo na aba Script de Login do diálogo Editar Conta.

   Neste exemplo, o usuário usuarioxyz precisa seguir o script para ser chamado. O servidor de chamada de retorno já conhece a tabela de nomes e seus números de telefone aplicáveis, logo você selecione o número de telefone a ser usado com um apelido, por medida de segurança;

   Para cada linha, escolha o critério na lista à esquerda da janela, e indique a ação no campo de texto à sua direita. Escolha o botão Adicionar para adicionar cada uma das linhas ao programa. Você poderá usar o botão Inserir para adicionar uma linha no meio do programa ou ainda o botão Remover para apagar uma linha se você cometer algum erro.

   O script como um todo deve parecer algo como isto (sem os comentários, mostrados aqui iniciando com um #)

       Expect       ogin:           # lembre-se, estamos logando em um terminal ordinário
       ID           ""              # o kppp envia o id que você configurou no
       diálogo principal
       Expect       for usuarioxyz:    # uma lista de números disponíveis é
       mostrada, o usuário deve escolher um
       Send         usuarioxyz-home    # o usuário deseja ser chamado de volta
       no número de sua casa
       Expect       ogin:           # O processo de chamada de retorno está agora
       rodando, uma nova conexão, e logo um novo login.
       ID
       Expect       assword:        # Agora envia sua senha
       Expect       >            # Espera pelo prompt de comandos (o
       prompt pode variar)
       Send         start_ppp       # este comando inicia o pppd

   Após esperar pela solicitação de login, o usuário envia seu ID e espera por uma lista de números de telefones disponíveis para aquele usuário. Então ele diz ao servidor em qual dos números oferecidos ele gostaria de receber a chamada de retorno. O &kppp; pode abrir um diálogo para isto, se sua localização muda frequentemente, &eg; você é um representante de vendas e move-se de hotel para hotel. Agora o servidor espera por um login e senha para autenticação, mas neste meio tempo, o servidor desliga e chama o usuário de volta. As informações de autenticação são enviadas, e o &kppp; espera por um prompt de comandos, e então inicia um pequeno script (aqui chamado `start_ppp` que aciona o pppd no servidor.

   O script `start_ppp` deve se parecer com algo como:

       #!/bin/sh
       stty -echo
       exec /usr/sbin/pppd -detach silent modem

   É claro, configurar um servidor PPP não está dentro do escopo deste documento. Para informações detalhadas, veja as páginas de manual do pppd. Uma excelente descrição de um servidor de chamada de retorno pode ser encontrado em http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback

Todas as outras opções de configuração, como a configuração do pppd ou configurações de IP funcionam normalmente, e nenhum programa especial é necessário para obter a linha.

A chamada de retorno do &kppp; e outros programas como o mgetty ou qualquer outro faxgetty podem ser rodados na mesma porta serial. Não existem problemas com conexão, uma vez que o &kppp; cria um arquivo de trava que dirá ao programa getty que outro aplicativos (neste caso o &kppp;, é claro) está usando a linha no momento.

### Problemas

Existem alguns problemas conhecidos com o &kppp; no modo de chamada de retorno:

- Quando você inicializa o modem para resposta automática, você precisa reiniciar o modem após seu conexão for fechada. Caso contrário, seu modem continuará a manter a linha para você, o que não é uma boa ideia se a linha em questão é sua linha telefônica principal.

- O &kppp; apresenta alguns pequenos problemas ao compartilhar uma linha com outro programa, como o mgetty. Se o mgetty estiver rodando na mesma linha de modem, o &kppp; não será capaz de inicializar o modem corretamente.

- O &kppp; é incapaz de pedir uma determinada entrada do usuário durante um login baseado em script. Infelizmente, ao usar o script exemplo acima, o &kppp; também pede pelo nome de usuário na segundo vez que o servidor de chamada de retorno o solicita. Você pode obter evitar isto inserindo seu id de usuário no login de script (não muito portável ou bonito, mais funciona.

### Recursos da Internet para programa servidor

Os pacotes de programas servidores de chamada de retorno do &Linux; estão disponíveis em diversos lugares.

O bem conhecido mgetty é um programa muito poderoso, e também é capaz de manipular conexões de chamada de retorno. Um descrição de como configurar o mgetty para este fim é mantida em http://www.dyer.demon.co.uk/slug/tipscrip.htm, po Colin McKinnon, colin@wew.co.uk.

Existe tamém um pacote pronto para uso para o &Linux; em http://www.icce.rug.nl/docs/programs/callback/callback.html. Este pacote é mantido por Frank B. Brokken, frank@icce.rug.nl. Como a configuração, apesar de bem direta, não é muito simples, eu escrevi uma pequena introdução para ele em http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/, que também contém uma introdução mais geral para chamada de retorno.

## Chamada de retorno RAS do &Windows; NT

O &Windows; NT usa uma abordagem completamente diferente da descrita acima. O NT necessita de uma extensão para o protocolo PPP propriamente dito, chamada CBCP (do inglês, Protocolo de Controle de Chamada de Retorno). O pppd tem suporte a este protocolo, mas você deve recompilar o pppd. Se alguém tiver uma experiência bem sucedida de conexão com um servidor de chamada de retorno do NT, por favor nos informe.