8.10. Configuraciones avanzadas de PPP

Mientras que configurar PPP para conectar a una red como Internet es la más común de sus aplicaciones, hay algunos de vosotros que tenéis requerimientos más avanzados. En esta sección hablaremos sobre algunas de las configuraciones más avanzadas que son posibles con PPP bajo GNU/Linux.

8.10.1. Servidor PPP

Hacer funcionar el pppd como servidor es solo cuestión de configurar un dispositivo terminal serie para que invoque al pppd con las opciones apropiadas cuando una llamada entrante es recibida. Una manera de hacer esto es crear una cuenta especial, digamos ppp, y asociarle un script o programa como shell de entrada que llame al pppd con esas opciones. De forma alternativa, si quiere soportar autentificacion PAP o CHAP, puede usar el programa mgetty para soportar su módem y explotar su característica “/autoPPP/”.

Para configurar un servidor usando el método de registro (login), añada una línea similar a la siguiente a su fichero /etc/passwd: [1]
    ppp:x:500:200:Public PPP Account:/tmp:/etc/ppp/ppplogin
Si su sistema soporta shadow passwords, tambien necesita añadir una entrada al fichero /etc/shadow:
    ppp:!:10913:0:99999:7:::

Por supuesto, el UID y GID que utilice dependen de que usuario desea que sea dueño de la conexión, y de cómo lo haya creado. Además tiene que establecer la contraseña para la cuenta mencionada usando la orden passwd.

El script ppplogin podría tener este aspecto:
    #!/bin/sh
    # ppplogin - script to fire up pppd on login
    mesg n
    stty -echo
    exec pppd -detach silent modem crtscts

La orden mesg deshabilita la opción que permite que otros usuarios puedan escribir en el terminal (tty) usado utilizando, por ejemplo, la orden write. La orden stty desactiva el eco de caracteres. Esto es necesario, pues de otra forma todo lo que el otro ordenador envíe le será devuelto a modo de eco. La opción del pppd más importante de las incluidas en el script es –detach, porque evita que el pppd se separe de la terminal controlada. Si no especificásemos esta opción, se iría a segundo plano, haciendo que el script del shell terminase. Esto provocaría que la línea serie colgase y se perdiera la conexión. La opción silent hace que el pppd espere hasta recibir un paquete del sistema llamante antes de comenzar a enviar. Esto evita la aparición de timeouts al transmitir cuando el sistema que nos llama es lento en lanzar su cliente PPP. La opción modem hace al pppd vigilar la línea DTR para ver si el otro sistema ha colgado. Siempre deberia activar esta opción cuando use pppd con un modem. La opción crtscts activa el control de flujo por hardware.

Además de estas opciones, se puede forzar alguna clase de autentificación, por ejemplo especificando auth en la línea de órdenes de pppd, o en el fichero de opciones globales. La página del manual también habla sobre opciones más especíificas para activar o desactivar los protocolos de autentificación individuales.

Si desea usar mgetty, todo lo que tiene que hacer es configurar mgetty para que soporte el dispositivo serie al que su módem está conectado (vea Sección 4.6.1” para más detalles), configurar pppd bien para autentificación PAP o CHAP con las opciones apropiadas en sus ficheros options, y finalmente, añadir una sección similar a la siguiente a su fichero /etc/mgetty/login.config:
    # Configura mgetty para automaticamente detectar llamandas entrantes e invocar
    # al demonio pppd para que se haga cargo de la conexión.
    #
    /AutoPPP/ -     ppp   /usr/sbin/pppd auth -chap +pap login

El primer campo es una parte especial mágica usada para detectar que la llamada entrante es una de tipo PPP. No debe cambiar el aspecto de esta cadena; es sensitivo a minúusculas y mayúusculas. La tercera columna en el nombre de usuario que aparece en en el listado de who cuando alquien a entrado en el sistema. El resto de la línea es el comando a invocar. En nuestro ejemplo, nos hemos asegurado de que la autentificación por PAP es requerida, deshabilitado CHAP, y especificado que el fichero del sistema passwd debe ser usado para autentificar usuarios. Esto es probablemente parecido a lo que usted querrá. Recuerde, puede especificar las opciones en el fichero options o en la linea de comandos si lo prefiere.

Esto es una pequeña lista de comprobación de los pasos que debe realizar y la secuencia que debe seguir para tener funcionando en su máquina un servidor PPP. Asegúrese de que cada paso funciona correctamente antes de pasar al siguiente:

  1. Configure el módem para que funcione en modo de auto-respuesta. En los módems compatibles Hayes, esto se realiza mediante la orden ATS0=3. Si va a utilizar el demonio mgetty, esto no será necesario.

  2. Configure el dispositivo serie con una orden tipo getty para que responda a las llamadas entrantes. Una variante comúnmente usada de getty es mgetty.

  3. Considere la autentificación. ¿Como se autentificarán con usted los clientes, usando PAP, CHAP, o el registro del sistema?

  4. Configure pppd como servidor tal como se describe en esta sección.

  5. Considere el encaminamiento. ¿Necesitará proporcionar una ruta de red a los clientes? El encaminamiento puede realizarse usando el script ip-up.

8.10.2. Llamada bajo demanda

Cuando hay tráfico IP para ser transportado a través del enlace, la llamada en demanda provoca la llamada de su modem y el establecimiento de una conexión con un host remoto. La llamada en demanda resulta útil cuando no puede dejar su línea telefónica permanentemente conectada a su proveedor de Internet. Por ejemplo, puede que tenga que pagar llamadas locales por tiempo de uso, así le resultará más barato tener la conexión establecida sólo cuando lo necesite y desconectada cuando no está usando Internet.

Las soluciones GNU/Linux tradicionales han usado la orden diald, que funcionaba bien pero era algo complicado de configurar. Las versiones 2.3.0 y posteriores del demonio PPP tienen incluído el soporte de llamada bajo demanda y una configuración muy sencilla de realizar. Debe usar un núcleo actual para poder hacer esto. Cualquiera de los núcleos posteriores al 2.0 funcionará bien.

Para configurar pppd para llamada bajo demanda, todo lo que tiene que hacer es añadir opciones a su fichero /etc/options o a la línea de órdenes de pppd. La tabla siguiente resume las opciones relacionadas a la llamada en demanda:

Una configuración simple de llamada bajo demanda podría ser algo como esto:
    demand
    holdoff 60
    idle 180
Esta configuración activará la llamada bajo demanda, esperará 60 segundos antes de reestablecer un conexión fallida, y terminará el enlace si pasan 180 segundos sin ningún dato activo en el enlace.

8.10.3. llamada persistente

La llamada persistente es lo que la gente que tiene conexiones permanentes a una red querrá usar. Hay una sutil diferencia entre llamada en demanda y llamada persistente. Con la llamada persistente, la conexión es automáticamente establecida tan pronto como el demonio PPP es lanzado, y el aspecto de persistencia viene a cuento siempre que la llamada telefónica que soporta el enlace se interrumpa. La llamada persistente asegura que el enlace está siempre disponible relanzando automáticamete la conexión si ésta se interrumpe.

Usted podría ser afortunado de no tener que pagar por sus llamdas telefónicas; quizás sean locales y gratuitas, o quizás su empresa es quién las paga. La opción de llamada persistente es extremadamente útil en esta situación. Si tiene que pagar por sus llamadas telefónicas, entonces tiene que tener un poco de cuidado. Si paga por sus llamadas telefónicas en base al tiempo que la utiliza, la llamada persistente es algo que casi seguro no es lo que quiere, a menos que esté seguro de que estará usando la conexión constantemente muy amenudo veinticuatro horas al día. Si paga las llamadas, pero no en base al tiempo, necesitará tener cuidado de protegerse de situaciones que puedan causar que el módem llame de forma interminable. El demonio pppd provee de una opción que puede ayudar a reducir el efecto de este problema.

Para activar la llamada persistente, debe incluir la opción persist en uno de los ficheros de opciones de pppd. Incluir esta opción es todo lo que necesita para tener al pppd invocando automáticamente la orden especificada en la opción connect para restablecer la conexión cuando el enlace se interrumpe. Si está preocupado por el remarcado demasiado rápido del módem (en el caso de un fallo del servidor o módem del otro extremo de la conexión), puede usar la opción holdoff para establecer el tiempo mínimo que pppd deberá esperar antes de intentar reconectar. Esta opción no resolverá el problema de un fallo y su consecuente gasto en llamadas de teléfono, pero al menos le servirá para reducir el impacto de uno de ellos.

Una configuración típica de llamada persistente podría parecerse a ésta:
    persist
    holdoff 600
El tiempo de espera es especificado en segundos. En nuestro ejemplo, el pppd espera durante cinco minutos antes de rellamar cuando una llamada ha fallado.

Es posible combinar la llamada persistente con la llamada en demanda, usando idle para interrumpir el enlace si ha estado inactivo por un período especificado de tiempo. Dudamos de que sean muchos los usuarios que quieran hacer esto, pero este escenario está descrito brevemente en la página del manual de pppd, por si tuviera que buscarlo.

Notas

[1]

La utilidades useradd o adduser, si las tiene, simplificaran la tarea.