Linux PPP Cómo: Configurando un servidor PPP Página siguiente Página anterior Índice general

26. Configurando un servidor PPP

Como se mencionó antes, hay muchas maneras de hacer esto. La que presento es la manera de hacerlo con una tarjeta serie multipuerto Cyclades y una centralita rotativa que proporciona un juego de líneas telefónicas.

Si no le gusta el método que presento aquí, siéntase libre de hacerlo a su manera. Sin embargo, estaría encantado de incluir métodos adicionales en versiones futuras de este documento. Por lo que envíeme sus comentarios y métodos.

Fíjese en que esta sección sólo concierne a configurar Linux como un servidor PPP. No pretendo incluir información acerca de la configuración de servidores de terminales especiales.

También, todavía he de experimentar con contraseñas shadow (pero lo haré dentro de poco). La información aquí presentada NO incluye, por lo tanto, ninguna de las campanas ni silbatos requeridos por el juego de aplicaciones shadow.

26.1 Compilación del Núcleo

Todos los comentarios anteriores acerca de la compilación del núcleo y de las versiones pppd frente a las del núcleo siguen siendo válidos. Esta sección asume que usted ha leido también las otras secciones de este documento.

Para un servidor PPP, DEBE incluir el soporte de autoenvío IP (forwarding) en su núcleo. También puede desear incluir otras capacidades (tales como cortafuegos IP, cuentas, etc).

Si está utilizando una tarjeta serie multipuerto, entoces deberá incluir, obviamente, los controladores necesarios en su núcleo.

26.2 Visión general del sistema servidor

Se ofrecerá cuentas de acceso PPP (y SLIP) y cuentas de shell utilizando el mismo par nombre/contraseña. Esto tiene las ventajas (para nosotros) de que el usuario sólo necesita una cuenta y puede utilizarla para todo tipo de conectividad.

como somos una organización educacional, no cobramos el acceso de nuestra plantilla ni de los estudiantes, por lo que no tenemos que preocuparnos de la tarificación y de contadores.

Levantaremos un cortafuegos entre nuestra máquina e Internet, y esto restringirá el acceso a algunos usuarios debido a que las líneas de conexión se encuentran dentro del cortafuegos (por razones obvias, los detalles de nuestros cortafuegos internos no se presentan aquí y no son relevantes en ningún caso).

El proceso por el que un usuario pasa para establecer una conexión PPP a nuestro servidor (una vez que tiene una cuenta válida, por supuesto) es:-

  • Conectarse con nuestra centralita rotatoria (esto es un número telefónico único que está conectado a un banco de módems. El primer módem libre es el utilizado).
  • Introducirse en el sistema mediante un par válido de nombre-contraseña.
  • En la línea de órdenes, ejecutar la orden ppp para arrancar PPP en el servidor.
  • Arrancar PPP en el PC de ellos (puede estar ejecutando Windows, DOS, Linux, MAC OS o lo que sea - ese es su problema).

El servidor utiliza ficheros /etc/ppp/options.ttyXX individuales para cada módem, cada uno con su propia dirección IP de manera que los usuarios remotos consigan una dirección dinámica. El servidor utiliza encaminamiento proxyarp para los clientes remotos (configurado mediante la opción adecuada de pppd). Esto evita la necesidad de routed o de gated.

Cuando el usuario cuelga por su parte, pppd lo detecta y dice al módem que cuelgue, desconectando la conexión PPP a la vez.

26.3 Conseguir el todo el software

Necesitará el siguiente software:-

  • Linux, compilado adecuadamente para incluir las opciones necesarias.
  • La versión apropiada de pppd para su núcleo.
  • Un programa 'getty' que maneje las comunicaciones del módem inteligentemente.
    Utilizamos getty_ps2.0.7h, pero mgetty es tamién muy válido. Se que mgetty puede detectar una llamada que utilice pap/chap (pap es el estándar de Windows95) y llamar a pppd automáticamente, pero todavía tengo que investigar esto.
  • Un servidor de nombres de dominio (DNS) que funcione y que sea accesible para los usuarios que se conecten.
    Debería estar ejecutando su propio DNS si es posible...

26.4 Configurar el acceso a cuentas por vía telefónica

Antes de que pueda configurar su servidor PPP, su PC Linux debe ser capaz de manejar accesos de conexión estándar.

Este documento NO trata esta configuración. Por favor, lea la documentación del programa getty de su elección y del serial HOWTO para más información acerca de esto.

26.5 Configurando los ficheros de opciones PPP

Necesitará establecer un /etc/ppp/options general con las opciones comunes para todos los puertos de conexión. Las opciones que utilizamos son:-


asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem

Nota - no utilizamos ningún encaminamiento (obvio) y en particular no hay ninguna opción defautroute. La razón de esto es que todo lo que usted (como servidor PPP) debe hacer es encaminar paquetes desde el cliente ppp a su red local/Internet y encaminar paquetes hacia el cliente desde la red local o más allá.

Todo lo necesario para esto es un un camino de máquina a la máquina del cliente y el uso de la opción 'proxyarp' con pppd

La opción 'proxyarp' establece (sorpresa) una entrada proxy ARP en la tabla ARP del servidor que básicamente dice 'envíenme todos los paquetes destinados al cliente'. Esta es la manera más sencilla de configurar el encaminamiento para un solo cliente PPP - pero usted no puede utilizar esta opción si está encaminando entre dos redes locales - debe añadir rutas adecuadas de red por lo que no puede utilizar proxy ARP.

Casi seguro que desea dar una dirección IP dinámica a los usuarios de su servicio de conexión. Puede conseguir esto fijando una dirección IP a cada puerto de recepción de llamadas. Ahora, cree un /etc/ppp/options.ttyXX para cada puerto de conexión.

En este, simplemente ponga la dirección IP del servidor local y la dirección IP que debe ser utilizada para ese puerto. Por ejemplo


kepler:slip01

En concreto, fíjese en que usted puede utilizar nombres de máquinas válidos en este fichero (sólo soy capaz de recordar las direcciones IP de las máquinas importantes y de los dispositivos de mis redes - los nombres tienen más sentido).

26.6 Configurar pppd para permitir que los usuarios puedan ejecutarlo

Ya que arrancar un enlace ppp implica la reconfiguración de un dispositivo del núcleo (una interfaz de red) y la manipulación de las tablas de encaminamiento del núcleo, se necesitan privilegios especiales - de hecho se necesitan privilegios totales de root.

Afortunadamente, pppd ha sido diseñado para ser 'seguro' mientras se ejecuta como root. Necesitará


chmod u+s /usr/sbin/pppd

Cuando pida un listado del fichero, debría aparecer como


~
-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd

Si no lo hace, los usuarios no podrán establecer su conexión ppp.

26.7 Configurando el alias global para pppd

Para simplificar las cosas a los usuarios de su servicio de conexión PPP, crearemos un alias global (en /etc/bashrc) para que una orden simple arranque ppp en el servidor una vez que se han conectado.

Esto debe ser como


alias ppp="exec /usr/sbin/pppd -detach"

Lo que hace es

  • exec : quiere decir que reemplace el programa en ejecución (en este caso el shell) con el programa que está ejecutando.
  • pppd -detach : comienza pppd y no se parte en el segundo plano. Esto asegura que cuando pppd salga no queden procesos colgando por ahí.

Cuando un usuario se introduce en un sistema como este, aparecerá en la salida de 'w':-


  6:24pm  up 3 days,  7:00,  4 users,  load average: 0.05, 0.03, 0.00
User     tty       login@  idle   JCPU   PCPU  what
hartr    ttyC0     3:05am  9:14                -

Y ya está... Ya le comenté que este era un sistema servidor PPP básico.


Página siguiente Página anterior Índice general