# 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 irá 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.

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).

## 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.