# Configurar o &kppp; para chamadas de resposta

Este capítulo baseia-se no material fornecido por Martin Häfner, mh@ap-dec717c.physik.uni-karlsruhe.de

## Servidor de chamadas de &UNIX; ou &Linux;

Esta secção introduz as chamadas de resposta do &UNIX; (&Linux;), e como o &kppp; poderá ser configurado para se ligar a um servidor de resposta em &UNIX;, especialmente a um servidor de chamadas de resposta em &Linux;.

### Uma Introdução às Chamadas de Resposta

Existem várias razões para pensar em usar as chamadas de resposta. Algumas delas são:

- Aumentar a segurança da sua rede local

- Para reduzir as despesas dos trabalhadores externos

- Para controlar os custos telefónicos, onde as chamadas são consideradas despesas do negócio

Pense em alguém que liga para o seu número no servidor e arranja uma senha. Para quê manter uma 'firewall' para a sua ligação à Internet, se o acesso à sua rede é assim tão simples?.

O 'software' de chamadas de resposta normalmente pede o seu nome e coloca então a linha suspensa. A partir daí, ele faz uma chamada de volta, normalmente para um número que se encontra registado numa base de dados no servidor. O cliente poderá então pegar na linha telefónica e continuar com a chamada, como se nada tivesse acontecido. O servidor aí pedirá o seu nome de utilizador e a sua senha, sabendo que você é quem disse que era e onde disse que estava, aquando da ligação. A ligação é estabelecida normalmente e o servidor pppd é iniciado.

Agora a grande pergunta é: como dizer ao cliente para ligar o telefone quando o servidor lhe ligar de volta. Você precisa de algum programa especial, como o mgetty? A resposta é não, você não irá precisar de nenhum programa-cliente em especial, você até poderá usar um programa de terminal normal como o minicom para se ligar.

A única que você terá de fazer é dizer ao seu modem para `AutoAnswer` (Responder Automaticamente) ao telefone quando for detectado um `RING` pelo modem. Isto é feito com o seguinte comando do modem:

    AT&SO=1

Isto diz ao modem para atender o telefone depois de um `RING`.

Assim como diversos programas, o &kppp; verifica se a ligação é fechada pelo servidor, e termina nesse caso a sessão actual, se for detectado um `NO CARRIER` (Sem Portadora). Este então será o problema real ao estabelecer a chamada de resposta. O `NO CARRIER` será obviamente detectado no momento em que o servidor de resposta suspende a linha. Alguns dos servidores irão necessitar de um programa de autenticação especial. Por isso, como é que você resolve este problema? Você irá indicar para o seu modem mostrar `CARRIER UP` (portadora activa) a toda a hora (o que não trará problemas se você indicar ao cliente para suspender a linha). Você poderá fazer isso com o seguinte comando do modem:

    AT&C0

Se você quiser testar isto, você poderá usar primeiro um programa de terminal normal como o minicom e fazer uma chamada ao seu servidor de resposta, para ver o que acontece.

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

Pronto, agora que viu a teoria em acção, como é que você irá configurar o &kppp; para tratar da ligação?

O procedimento é relativamente simples, tal como se segue.

1. Primeiro indique ao modem para aceitar as ligações e para não parar a negociação quando o servidor de chamadas de resposta suspender a linha da primeira vez. Você poderá indicar ambas as opções na página do Modem da configuração do &kppp;, adicionando à opção da Mensagem de Chamada o texto `AT&C0S0=1DT`

   Não existem mais alterações na configuração do &kppp;. Se tiver problemas com a reinicialização do modem, veja a secção de Resolução de Problemas para mais informações.

2. Pense no seu servidor por um momento. Lembre-se que os sistema operativos &UNIX;, &Windows; e Macintosh têm diferentes opiniões sobre como terminar uma linha num ficheiro de texto e, deste modo, o mesmo se aplica nos procedimentos de autenticação. Se você se estiver a ligar a um servidor em &Windows;, use o `CR/LF`, se se estiver a ligar a um servidor &UNIX;, use o `CR`, e, finalmente, se estiver a utilizar um servidor Macintosh server, use o `LF`

3. Nós assumimos para estas instruções que você está a efectuar uma chamada a um servidor de &Linux; que usa uma autenticação normal (sem ser PAP ou algo do género).

   Configure o estilo da Autenticação na página de Ligar da configuração da conta para Baseada num Programa

4. Agora você terá de criar um 'script' ou um programa de autenticação. A edição destes programas é uma das funcionalidades muito jeitosas do &kppp; Você poderá aceder a esse editor no Programa de Autenticação da janela de Editar a Conta.

   Neste exemplo, o utilizador `utilizador_xyz` precisa de chamar o seguinte programa. O servidor de chamadas de resposta já conhece a tabela dos nomes e dos seus números de telefone respectivos, por isso você poderá seleccionar o número de telefone a usar com um nome alternativo, por razões de segurança.

   Para cada linha, escolha o critério na lista à esquerda da janela, e indique a acçã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 programa inteiro deverá ficar algo semelhante a isto (sem os comentários, que são mostrados aqui a começar com um #)

       Expect       ogin:           # lembre-se que fazemos uma autenticação de terminal normal
       ID           ""              # o kppp envia o ID que configurou na janela principal
       Expect       for utilizador_xyz:    # uma lista com os números disponíveis é mostrada e o utilizador deverá escolher um
       Send         casa-utilizador_xyz    # o utilizador deseja ser chamado de volta para o número da casa dele
       Expect       ogin:           # O processo da chamada de resposta está agora em execução, com uma ligação e uma autenticação novas.
       ID
       Expect       assword:        # Envie agora a sua senha
       Expect       >            # Espere pela linha de comandos (esta poderá variar)
       Send         start_ppp       # Este comando inicia o pppd

   Depois de esperar pelo pedido de autenticação, o utilizador envia o seu identificador e espera por uma lista com os números de telefone disponíveis para esse utilizador. Ele poderá então indicar ao servidor qual dos números oferecidos é que ele gostaria de ser chamado em resposta. O &kppp; poderá então abrir uma janela para isso, se a sua localização varia com frequência, ⪚ se for um representante de vendas e se muda de hotel para hotel. Neste momento, o servidor está à espera do utilizador e da senha para a autenticação, mas entretanto o servidor suspende-se e chama o utilizador de volta. A informação de autenticação é enviada, e o &kppp; fica à espera de uma linha de comandos, iniciando então um pequeno programa (aqui chamado de `start_ppp`, o qual despoletará o pppd no servidor.

   O programa `start_ppp` poderá se assemelhar a algo do género:

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

   Claro que a configuração de um servidor de PPP não está no âmbito deste documento. Para informações mais detalhadas, veja as páginas de manual do pppd. Existe uma descrição excelente para um servidor de resposta em http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback

Todos os outros detalhes de configuração, como a configuração do pppd ou do IP funcionam de forma normal, e não é necessário nenhum programa em especial será necessário para atender a linha.

As chamadas de resposta do &kppp; e dos outros programas como o mgetty ou outro 'faxgetty' poderão ser executados na mesma porta série. Não existem nenhuns problemas com o estabelecimento da ligação, dado que o &kppp; cria um ficheiro de bloqueio que irá indicar ao programa 'getty' que outra aplicação (neste caso, o &kppp;, como é óbvio) está a usar a linha nessa altura.

### Resolução de Problemas

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

- Logo que inicializa o modem para responder automaticamente, você terá de reinicializar o modem depois de a sua ligação terminar. Caso contrário, o seu modem irá continuar a atender a linha para si, o que não é uma boa ideia se a linha em questão for a sua linha telefónica principal.

- O &kppp; tem alguns pequenos problemas ao partilhar uma linha com outro programa, como o mgetty. Se o mgetty estiver em execução sobre a mesma linha de modem, o &kppp; não será capaz de inicializar o modem correctamente.

- O &kppp; não é capaz de perguntar por algum texto do utilizador durante uma autenticação baseada num programa. Infelizmente, ao usar o programa de exemplo acima, o &kppp; também irá perguntar pelo utilizador da segunda vez que o servidor de resposta lho pedir. Você poder-se-á ver livre disto se puser manualmente o nome do seu utilizador no programa de autenticação (nem é bom nem portável, mas funciona).

### Recursos da Internet sobre o 'software' servidor

Os pacotes de servidores de chamadas de resposta para &Linux; estão disponíveis em vários sítios.

O famoso programa mgetty é bastante poderoso e consegue também efectuar chamadas de resposta. Uma descrição sobre como configurar o mgetty para este fim é mantida em http://www.dyer.demon.co.uk/slug/tipscrip.htm, por Colin McKinnon, colin@wew.co.uk.

Existe também um pacote pronto a usar para o &Linux; em http://www.icce.rug.nl/docs/programs/callback/callback.html. Este pacote é mantido pelo Frank B. Brokken, frank@icce.rug.nl. Dado que a configuração, ainda que intuitiva, não é muito fácil, foi criada uma breve introdução sobre o mesmo em http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/, local que contém também uma introdução mais geral para as chamadas de resposta.

## Chamadas de resposta de RAS do &Windows; NT

O &Windows; NT utiliza uma aproximação completamente diferente da usada em cima. O NT necessita de uma extensão ao próprio protocolo PPP, chamada de CBCP (Call Back Control Protocol). O pppd tem o suporte para este protocolo, mas você terá de recompilar o pppd. Se alguém tiver experiência com ligações bem-sucedidas a um servidor de chamadas de resposta de NT, por favor contacte-nos.