"Gaceta de Linux...haciendo a Linux un poco más divertido!"


Configuración de un servidor de rellamada de PPP basado en Linux

Por Sunil Thomas Thonikuzhiyil

Traducción al español por Ricardo A.Frydman
el día 12 de Septiembre 2002, para La Gaceta de Linux


Introducción

En la configuración de un servidor de discado PPP, los usuarios se conectan a través de una línea telefónica y un módem para establecer una conexión PPP con un servidor remoto. Es posible hacer una que máquina Linux llame de vuelta al usuario que se conectó al servidor. Este documento describe los procedimientos paso a paso para configurar un servidor de rellamada basado en Linux. server.

Requerimientos

Mi servidor corre Debian Potato con Kernel 2.4.17. Un módem conectado a ttyS0 sirve de módem de rellamada y conexión. Mis máquinas clientes corren tanto Debian Potato como Win98. Hay un módem externo conectado a ttyS1. Se supone que tienes instalado el software mínimo necesario para discar al ISP tanto en el servidor como en el cliente. Además, se requiere instalar los paquetes mgetty+sendfax en el servidor.

La idea

El principio detrás del servidor de rellamada se puede resumir así. Primero yo (el cliente) marco el número telefónico del módem del servidor de rellamada. El módem en el servidor está configurado para aceptar conexiones entrantes. Una vez establecida la conexión, el servidor me recibe con un mensaje de bienvenida y un pedido de login. Me conecto como usuario especial de rellamada. El módem en el servidor corta la conexión y rellama a un número específico, conectado a mi máquina cliente. El módem en la máquina cliente se mantiene atento a aceptar la conexión de rellamada, y una vez que se establece la conexión soy nuevamente recibido con un pedido de login. Ahora me conecto como un usuario normal PPP y la conexión se competa.

Configuración del Servidor de discado

El primer paso para lograrlo es configurar al servidor para aceptar conexiones PPP entrantes.

Esto es lo que hice en el servidor

1) Crear un nuevo usuario llamado pppuser

Cambiar la entrada en el /etc/passwd para pppuser por
pppuser:x:1001:1001:,,,:/home/pppuser:/usr/sbin/pppd

2) Añadir un alínea al /etc/inittab para aceptar conexiones entrantes al puerto serie.

T0:23:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0

Reiniciar init escribiendo 'init q'
Esto habilita la línea ttyS0 a aceptar conexiones entrantes.

3) Cambiar de directorio a /etc/mgetty (Aquí es donde los archivos de configuración para mgetty se guardan. En Redhat están en /etc/mgetty+sendfax)
Editar login.config y añadirle la siguiente línea

/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options

Comentar todas las demás lineas

4) Modificar las opciones de /etc/ppp/options de la siguiente manera

	 -detach
	 asyncmap 0
	 modem
	 crtscts
	 proxyarp
	 lock
	 require-pap
	 refuse-chap
	 ms-dns 192.168.50.100 #el dns del ip de tu servidor aquí
	 usepeerdns

5) Crear un archivo options.ttyS0 en /etc/ppp conteniendo

     192.168.0.100:192.168.0.2
     noauth 

Las direcciones ip de arriba son las del servidor y del cliente que va a ser alcanzado por él. Cámbialas de acuerdo a tu esquema numérico. Si tu módem está conectado a ttyS1 nombra al archivo options.ttyS1

6) Modifica los permisos de pppd (en algunas distribucions pppd se llama suid)
chmod u+s /usr/sbin/pppd

7) Añade un alias para ppp

Añade las siguientes líneas a /etc/profile

 alias ppp=`/usr/sbin/pppd -detach'`

Ahora intenta marcar al servidor desde el cliente. Para esto, si utilizas MS windows, haz click en acceso directo a redes y selecciona una nueva conexión llenando los diferentes campos. Ingresa como pppuser y verifica si el servidor está funcionando. Comprueba la conexión haciendo ping al servidor desde el cliente. También verifica la dirección ip asignada al cliente tipeando winipcfg en la línea de comandos.

Configuración de la rellamada

Una vez listo el servidor de llamada, configurar la rellamada es bastante fácil

Esto es lo que hice.

1) Crear un nuevo usuario llamado back.

2) Crear un archivo vacío llamado callback.conf en /etc/mgetty/ . (Puedes añadir cadenas de inicio para el módem si es necesario aquí. Pero generalmente alcanza con éste vacío)

3) Añade la siguiente línea a /etc/mgetty/login.config.

back - - /usr/sbin/callback -S 2561

El número en la línea de arriba después de -S es el número para discar. Cámbialo al número de teléfono conectado a tu cliente.

Configuación de clientes

1) MS Windows 98

Abrir acceso directo a redes y comenzar una nueva conexión. Completa los campos. Haz click en el botón derecho del nuevo ícono y selecciona propiedades. Selecciona módem-> Configurar->conexión->Opciones Avanzadas.
Agrega &c0s0=1 a Configuraciones Extra
Selecciona opciones y tilda la casilla para abrir la ventana de terminal luego del discado.

Puedes dejar el campo de nombre de usuario y contraseña vacíos.

Ahora conéctate con el servidor. Una vez establecida la conexión, se abrirá una ventana de terminal y se te presentará una pantalla de ingreso desde el servidor.

Ingresa como usuario 'back' (el usuario especial de rellamada).

Ahora el módem del lado del servidor corta la conexión y tras algunos segundos te llamará nuevamente. Una vez la conexión de rellamada se establezca, se te pedirá nuevamente el nombre de usuario. Tipea el nombre pppuser e ingresa la contraseña. Presiona continuar en la terminal. Ahora estarás conectado. Verifica nuevamente la conexión con ping al servidor.

Es posible escribir un script para hacer ésto, pero aún no lo he intentado. Para otras versiones de Windows el procedimiento es similar. Lo importante es configurar la cadena de inicialización del módem( &c0s0=1)

2) Linux


Configurar el cliente Linux es un poco más embrollado. Aquí te muestro lo que hice en mi máquina Debian con kernel 2.4.17

1) Crear el archivo /etc/options conteniendo

	lock
	defaultroute
	noipdefault
	modem
	115200
	crtscts
	debug
	passive
	asyncmap 0

2) Crear un archivo llamado pppcalback en /etc/ppp/peers/ con lo siguiente

    ttyS1 19200 crtscts
    connect '/usr/sbin/chat -v -f /etc/ppp/chat-callback'
    noauth

3) Crear un archivo llamado /etc/ppp/chat-callback con

	ABORT BUSY
	ABORT VOICE
	ABORT "NO DIALTONE"
	ABORT "NO ANSWER"
	"" ATZ
	OK ATDT2562             # Número de Teléfono del servidor
	CONNECT \d\d
	ogin: \q\dback
	TIMEOUT 90
	RING AT&C0S0=1
	ogin: \q\dpppuser
	assword: \q\dpasswordforppuser

Son necesarios los cambios apropiados en éstas líneas para los nombres de usuario y contraseñas para las cuentas que has creado.(Además acude a la documentación de tu módem para las cadenas de inicialización adecuadas. Quizás debas reemplazar ATZ por algo como AT&FX2)

4) Crea un script llamado /usr/bin/pppcall con lo siguiente

 
   #!/bin/bash
   /usr/sbin/pppd -detach call pppcall &

Hazlo ejecutable
Ahora puedes marcar al servidor mediante el script pppcall

Información Relacionada

La siguiente documentación me ayudó bastante
1) Callback mini howto
2 Linux callback
3) Páginas man de pppd
4) Mgetty+Sendfax Archive/Documentation

Si encuentras problemas en la configuración de servidores de rellamada no dudes en mandar un correo. Comentarios y sugerencias para mejorar éste documento son bienvenidos.

Sunil Thomas Thonikuzhiyil

Trabajo como consultor en tecnología de la información en la Asamblea Legislativa Kerala, Trivandrum India. Me enganché con Linux desde 1996. Tengo una Maestría en Ciencias de la Computación en la Universidad de Cochin. Me interesan todo tipo de sistemas Operativos. En mi tiempo libre amo escuchar música clásica India.


Copyright © 2002, Sunil Thomas Thonikuzhiyil.
Licencia de Copia http://www.linuxgazette.com/copying.html
Publicado en Edición Número 77 de Gaceta de Linux, Abril de 2002