Manual de FreeBSD
Anterior | Capítulo 25. PPP y SLIP | Siguiente

# 25.2. Uso de User PPP

Originalmente contribuido por Brian Somers. Con apoyo de Actualizado y reestructurado porNik Clayton, Dirk Frömberg, Peter Childs, y Tom Rhodes.

## 25.2.1. User PPP

### 25.2.1.1. Aclaraciones

Este documento asume que usted cuenta con lo siguiente:

- Una cuenta activa con un Proveedor del Servicio de Internet (ISP--por sus siglas en inglées), que usted utliza para conectarse.

- Adicionalmente, un módem o algún otro dispositivo, conectado a su sistema, y configurado correctamente, que le permite realizar la conexión con su ISP.

- El número telefónico de su proveedor.

- Su nombre de usuario y contraseña. (Ya sea un nombre de usuario y/o contraseña estilo UNIX, o bien para uso por medio de PAP o CHAP)

- La dirección IP de uno o más servidores de nombres (DNS). Normalmente, estos serán provistos por su proveedor de Internet. Si su proveedor no le ha dado esta información, puede utilizar la opción `enable dns` en su fichero `ppp.conf`, para indicarle a ppp que configure el DNS por usted. Esta característica depende del sistema de negociación de DNS que mantenga su proveedor de Internet.

La siguiente información puede ser que haya sido provista por su proveedor de servicios de internet, pero no es completamente necesaria:

- La dirección IP del gateway (pasarela de salida) de su PSI. El gateway es la máquina a la cual usted se conectará y será la ruta por default. Si usted no cuenta con esta información, puede inventar uno y al intentar conectarse, el servidor de su PSI, este nos indicará cual es el valor correcto.

  Esta dirección IP, es referida por ppp como `HISADDR`.

- La mascara de red (netmask) que debe utilizar. Si su PSI no le ha provisto de una, puede utilizar sin problema `255.255.255.255`.

- Si su PSI, le ha provisto de una dirección de IP estática y un nombre de host, puede capturarla. De otra forma podemos dejar que el servidor asigne cualquier IP que corresponda.

Si usted no cuenta con alguna de la información que hemos comentado, le recomendamos contactar con su PSI para requerirla.

> Nota: En el transcurso de la presente sección, algunos ejemplos muestran el contenido de archivos de configuración los cuales presentan una numeración. Estos números sirven como ayuda y referencia a cada línea, pero estos no deben de estar presentes en el archivo original. Una sangría adecuada, así como espacios adecuados, también son de suma importancia.

### 25.2.1.2. Preparando el Kernel

Como se comento anteriormente, la aplicación ppp utiliza el dispositivo `tun`. Si este dispositivo no ha sido compilado dentro del kernel, ppp lo cargará como módulo cuando sea requerido. El dispositivo tun es dinámico, de tal forma que se generara de acuerdo a la demanda que tenga (usted no esta limitado por el kernel).

> Nota: Vale la pena hacer notar que el controlador tun, crea los dispositivos de acuerdo a sus necesidades, por lo que el comando `ifconfig -a`, no necesariamente mostrará los dispositivos `tun`.

### 25.2.1.3. Verificando el dispositivo `tun`

Bajo circunstancias normales, la mayoría de los usuarios sólo utilizaran un dispositivo `tun` (`/dev/tun0`). En lo sucesivo podemos hacer referencia a `tun0` con la expresión `tunN` donde `N` es el número que corresponde en su sistema.

Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS la existencia de `tun0` debe ser verificada (esto no es necesario si se cuenta habilitada la opción DEVFS ya que los nodos de dispositivos seán creados en función a las necesidades).

La forma más sencilla de verificar si el dispositivo `tun0` se encuentra configurado correctamente, es la de rehacer el dispositivo. Para hacer esto simplemente siga los siguientes pasos:

    # cd /dev
    # sh MAKEDEV tun0

Si usted necesita 16 dispositivos tun en su kernel, deberá crearlos. Esto puede hacerse de la siguiente manera:

    # cd /dev
    # sh MAKEDEV tun15

### 25.2.1.4. Configuración de la Resolución de Nombres

La resolución es la parte del sistema que busca una dirección IP en los nombres de servidores (host) y viceversa. Puede ser configurado para que busque en "mapas" que describen la IP del servidor en uno de dos lugares, el primero es un archivo llamado `/etc/hosts`. Lea hosts(5) para más información al respecto. El segundo es el Servicio de Nombres de Dominio de Internet (DNS-Internet Domain Name Service), el cual es una base de datos de distribución. Para mayor información con respecto a los DNS, referirse a dns.

La resolución de nombres es un sistema que por medio de llamadas, realiza el mapeo de nombres, pero es necesario inidicarle donde debe buscar la información. Para versiones de FreeBSD anteriores a la 5.0, esto es hecho al editar el archivo `/etc/host.conf`. La versión 5.0 de FreeBSD utiliza el archivo `/etc/nsswitch.conf`.

#### 25.2.1.4.1. Edición del archivo `/etc/host.conf`

Para versiones de FreeBSD anteriores a la 5.0, este archivo debe contener las siguientes dos líneas (en este orden):

    hosts
    bind

Esto le indica a la resolución que busque en primer término en el archivo `/etc/hosts`, y posteriormente en el DNS, si el nombre no fué localizado

#### 25.2.1.4.2. Editando el archivo `/etc/nsswitch.conf`

Para versiones de FreeBSD 5.0 y posteriores, este archivo debe contener, al menos, la siguiente línea:

    hosts: files, dns

Esto le indica a la resolución de nombres, que busque en primer lugar en el archivo `/etc/hosts`, y en caso de que el nombre no haya sido localizado, busque en el DNS.

#### 25.2.1.4.3. Editando el archivo `/etc/hosts`

Este archivo puede contener direcciones IP, así como el nombre de las máquinas de su red local. Como mínimo debe contar con la información de la máquina que correrá ppp. Asumiendo que su ordenador se llama `foo.bar.com` con la dirección IP `10.0.0.1`, el archivo `/etc/hosts` debiese contener:

    127.0.0.1      localhost.bar.com       localhost
    ::1     localhost.bar.com       localhost
    10.0.0.1        foo.bar.com             foo

Las primeras dos líneas definen el alias del `localhost`, como sinónimo de la maquina actual. Independientemente de su propia dirección IP, la dirección IP en estas líneas siempre debe ser `127.0.0.1` y `::1`. La última línea especifica el nombre `foo.bar.com` (asi como `foo` para acortarlo), para la dirección `10.0.0.1`.

> Nota: La dirección `127.0.0.1` y el nombre `localhost` son conocidos como direcciones "loopback" las cuales hacen un "loopback" (salto de regreso) a la maquina local.

Si su proveedor de Internet, le asigna una dirección IP fija, asín como un nombre, y usted no lo utiliza como nombre del host, añada esto también al archivo `/etc/hosts`.

#### 25.2.1.4.4. Editando el archivo `/etc/resolv.conf`

El archivo `/etc/resolv.conf`, le indica a la resolución de nombres, como comportarse. Normalmente deberá de incluir la(s) siguiente(s) línea(s):

    domain ejemplo.com
    nameserver x.x.x.x
    nameserver y.y.y.y

Donde `x.x.x.x` y `y.y.y.y` deben reemplazarse con las direcciones IP de los servidores DNS, de su ISP. Puede ser que esta información se la hayan entregado al suscribirse o no, pero una rápida llamada a su ISP debe resolver esto.

Tambié puede configurar su sistema, de tal forma que syslog(3) provee de un login para su conección por PPP. Sólo añada:

             !ppp
              *.*        /var/log/ppp.log

al fichero `/etc/syslog.conf`. En la mayoría de los casos esto funciona bien.

### 25.2.1.5. Configuración Automática de PPP

Ambos, `ppp` así como `pppd` (la implementación del kernel para PPP), utilizan la configuración de los archivos localizados en el directorio `/etc/ppp`. Ejemplos para ppp, pueden encontrarse en: `/usr/share/examples/ppp/`.

Para efecto de configurar correctamente `ppp`, es necesario editar varios ficheros, dependiendo de sus necesidades. La manera en que edite dichos archivos, depende en la forma que utilice su PSI (Proveedor de Servicios de Internet) para brindarle conexión, ya sea por medio de una dirección IP estática o bien una IP dinámica (ya sea que cada vez que se conecta obtiene una nueva dirección).

#### 25.2.1.5.1. PPP y direcciones de IP estáticas (fijas)

Será necesario editar el archivo de configuración; `/etc/ppp/ppp.conf`. Y deberá quedar de una manera similar al ejemplo que se describe a continuación.

> Nota: Las líneas que terminan con `:`, deben comenzar en la primer columna del archivo -- el resto de las líneas deberán utilizar sangría como se muestra, utilizando espacios o bien el tabulador. La mayor parte de la información que requiere ingresar aqui, se mostro en el marcado manual anterior.

    1     default:
    2       set log Phase Chat LCP IPCP CCP tun command
    3       ident user-ppp VERSION (built COMPILATIONDATE)
    4       set device /dev/cuaa0
    5       set speed 115200
    6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
    7                 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
    8       set timeout 180
    9       enable dns
    10
    11    provider:
    12      set phone "(123) 456 7890"
    13      set authname foo
    14      set authkey bar
    15      set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
    16      set timeout 300
    17      set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
    18      add default HISADDR

Línea 1:

  Identifica la entrada por omisión a utilizar. Los comandos descritos en esta parte, serán ejecutados de manera automática cuando se ejecute ppp.

Línea 2:

  Habilita los par´metros de acceso. Cuando la configuración trabaja sin problemas, esta línea deberá quedar de la siguiente forma:

      set log phase tun

  para efecto de evitar avisos masivos del sistema (logs).
Línea 3:

  Esta línea le indica a PPP como identificarse ante el puerto. PPP se identifica, si tiene algun problema para efecto de establecer la conexión, en esta identificación, PPP provee de cierta información que puede resultar util para detectar el probelma.

Línea 4:

  Le indica a PPP cual es el dispositivo a utilizar para realizar la conexión, o bien al que esta conectado el módem. El dispositivo `COM1` es `/dev/cuaa0` y `COM2` es `/dev/cuaa1`.

Línea 5:

  Establece la velocidad a utilizar en la conexión. Si la velocidad de 115200 no trabaja correctamente (la cual deberia con cualquier módem normal), intente con una velocidad inferior, como puede ser 38400.

Líneas 6 y 7:

  La cadena de inicialización. El modo User PPP, utiliza y espera enviar-recibir, la información utilizando una sintaxis similar a la descrita en el programa chat(8). Favor de consultar la página de ayuda para conocer las opciones de este lenguaje.

  Nota: Este comando continua en la siguiente línea, para facilitar su lectura. Cualquier comando en el archivo `ppp.conf` puede utilizar este formato, siempre y cuando el último caracter de la línea sea una diagonal invertida "\".

Línea 8:

  Establece el tiempo de espera que debe tratar de realizar la conexión. Por omisión se establecen 180 segundos, por lo que esta línea se deja por pura estética.

Línea 9:

  Esta línea le indica a PPP, que solicite confirmación al puerto, sobre la configuración de la resolución local. Si usted esta corriendo un servidor local de nombres, deberá comentar o eliminar esta línea.

Línea 10:

  Una línea en blanco, para facilitar la lectura. Las líneas en blanco son ignoradas por PPP.

Línea 11:

  Identifica el incio de datos para un proveedor determinado, de servicios de internet. Este podrá ser cambiado por el nombre de su ISP, de tal forma que en lo sucesivo utilice la opción `load ISP`, para iniciar una sesión.

Línea 12:

  Indica el numero telefónico del proveedor. Pueden indicarse varios numeros a utilizar, utilizando el signo de dos puntos (`:`) o bien la barra (`|`) como separador. La diferencia entre estos dos separadores, es detallada en el ppp(8). Pero en resumen, se puede decir que si se desean utilizar varios numeros de manera aleatoria se debe utilizar los dos puntos, pero si se desea siempre utilizar el primer numero y en caso de falla el siguiente y así sucesivamente, se debe utilizar la barra. Es importante que todo lo que se refiere a numeros telefonicos, este entre comillas como se muestra. Es importante que si piensa usar espacios en los numeros, haga uso de estas comillas (`"`). La falta de estas pueden ocasionar un simple error.

Líneas 13 y 14:

  Identifica el nombre de usuario y su contraseña. Cuando uno se conecta utilizando un login de tipo Unix, estos valores hacen referencia al comando `set login`, utilizando las variables \U y \P. Cuando la conexión es utilizando algún metodo como PAP o CHAP, estos valores, son utilizados al momento de la autentificación.

Línea 15:

  Si usted esta utilizando el metodo PAP o CHAP, no habrá un login en este punto, y esta línea deberá ser comentada (utilizando el símbolo `#` al principio de la línea) o bien eliminada por completo. Vea la parte Autentificación con PAP y CHAP para más detalles.

  La cadena de acceso (login), utiliza la misma sintáxis que se utiliza en la cadena de marcado. En este ejemplo, la cadena sirve para un servicio, en el cual el inicio de sesión se ve algo así como lo siguiente:

      Proveedor de servicios X
      login: foo
      password: bar
      protocol: ppp

  Es recomendable editar el script, para que se ajuste a sus propias necesidades. Cuando cree este script por primera vez, asegurese de haber habilitado la parte que se refiere a al acceso por medio de chat, para efecto de poder dar seguimiento al curso de la conexión y la resolución de la misma.

Línea 16:

  Establece el tiempo por defecto en el que se perderá la conexión (en segundos). En este caso la conexión será cortada de forma automática, después de 300 segundos de inactividad. Si no desea habilitar esta función establezca este valor en cero o bien utilice el comando en línea `-ddial`.

Línea 17:

  Indica la dirección de la interfaz. La cadena que aparece como `x.x.x.x.`, debe se cambiada por la dirección asignada por su PSI. La línea que aparece como `y.y.y.y.`, debe se substituida por la direcció IP especificada por su PSI, como servidor de salida o pasarela (gateway)(la maquina a la cual se va a conectar). Si su PSI no le ha indicado una dirección de este tipo, puede utilizar `10.0.0.2/0`. Si usted necesita utilizar una dirección aleatoria, asegurese de crear el fichero `/etc/ppp/ppp.linkup`, siguiendo las instrucciones de PPP y las direcciones de IP Dinámicas, para su llenado. Si esta línea es omitida, `ppp`, no podrá ejecutarse en el modo `-auto`.

Línea 18:

  Añade una ruta por omisión al servidor de salida de su PSI. La palabra especial `HISADDR` se reemplaza con la dirección del gateway indicado por su PSI, que esta en la línea 9, de otra forma `HISADDR` no será inicializado.

  Si no desea ejecutar `ppp` en modo `-auto`, esta línea deberá pasar al archivo `ppp.linkup`.

No hay necesidad de editar el archivo `ppp.linkup` si usted cuenta con una dirección IP estática y se esta ejecutando ppp en modo `-auto`, en virtud de que para efecto de realizar la conexión sus mapas de ruteo debe estar correctas. De cualquier forma puede ser que usted desee ejecutar algun programa/comando, posterior a la conexión. Este es explicado con más detalle posteriormente, cuando se vea el ejemplo de sendmail.

Ejemplo de los archivos de configuración, se pueden encontrar en el directorio; `/usr/share/examples/ppp`.

#### 25.2.1.5.2. PPP y direcciones de IP Dinámicas (Variables)

Si su proveedor de servicios, no le asigna una dirección de IP fija, será necesario configurar a `ppp`, de tal forma que al momento de realizar la conexión, negocie tanto la dirección local, como la remota. Esto se lleva a cabo al adivinar una dirección IP y permitiendo a `ppp` que la establezca correctamente, usando el Protocolo de Configuración de IP (IPCP), una vez que se ha conectado. La configuración que debe tener el archivo `ppp.conf`, es la misma que la utilizada en PPP y direcciones de IP fijas, salvo el siguiente cambio:

    17      set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

Una vez más, no debe incluir el numero de línea, este sólo es una referencia. Así mismo deberá existir sangrado, de cuando menos 1 espacio.

Línea 17:

  El numero siguiente a la diagonal (`/`), es el numero de bits de la dirección en la cual ppp insistirá en conectarse. Puede ser que usted desee utilizar numeros de IP que sean más apropiados, para ajustar a sus necesiadades, pero el ejemplo descrito anteriormente siempre podrá utilizarse.

  El último argumento (`0.0.0.0`), le indica a PPP, que inicie las negociaciones, utilizando como dirección `0.0.0.0`, en lugar de que utilice `10.0.0.1`, lo cual es necesario con algunos proveedores. No utilice la dirección `0.0.0.0` como el primer argumento, para el comando `set ifaddr`, ya que impide que PPP configure de forma correcta el sistema, cuando se utiliza en modo `-auto`.

Si usted no esta ejecutando PPP en modo `-auto`, deberá editar su archivo `/etc/ppp/ppp.linkup`. El archivo `ppp.linkup`, es utilizado una vez que se ha realizado la conexión. En este punto, `ppp` habrá negociado una dirección de interfaz, y será posible ahora, añadir las entradas para la las tablas de ruteo:

    1     provider:
    2      add default HISADDR

Línea 1:

  Al establecer (`ppp`) una conexión, buscará en `ppp.linkup` una entrada, de acuerdo a las siguientes reglas. Primero, tratar de encontrar una entrada que sea igual a la utilizada en el archivo `ppp.conf`. Si esto falla, buscar una IP con la dirección de nuestro gateway. Esta entrada es una etiqueta de tipo IP, de cuatro-octetos. Si aun después de esto no se ha detectado la entrada correcta, buscar la entrada `MYADDR`.

Línea 2:

  Esta línea le indica a `ppp` que añada una ruta por omisión, que este dirigida hacia `HISADDR`. `HISADDR` será reemplazada, con la IP del gateway, como se negocio por IPCP.

Para ver un detalle más preciso de esto, puede consultar la entrada de `pmdemand` en los archivos de ejemplo `/usr/share/examples/ppp/ppp.conf.sample` así como `/usr/share/examples/ppp/ppp.linkup.sample`.

#### 25.2.1.5.3. Recibiendo Llamadas Externas

Cuando se configure ppp, para recibir llamadas externas, en una maquina conectada a un LAN (Red de Area Local), debe decidir si se va a permitir el envío de paquetes a la LAN. Si es así, debe asignar un numero de IP de su red local y utilizar el comando `enable proxy` en el archivo de configuracion `/etc/ppp/ppp.conf`. También deberá asegurarse que en su archivo `/etc/rc.conf` cuente con la línea:

    gateway_enable="YES"

##### 25.2.1.5.3.1. ¿Qué getty utilizar?

El enlace Configurando FreeBSD para Servicios de Marcado provee de una buena descripció, sobre la configuración de estos servicios, basado en getty(8).

Una alternativa para el comando `getty` es mgetty , el cual es una versión más inteligente de getty diseñada para servicios de marcado telefonico.

Una de las principales ventajas de `mgetty` es que, de hecho platica con los modems, esto es, significativo, ya que si el puerto esta desactivado en su `/etc/ttys` el modem no responderá el llamado.

Las últimas versiones de `mgetty` (de la 0.99beta y sucesivas), también cuentan con soporte para la detección automática de llamados de PPP, permitiendo el acceso a servidores de una manera más sencilla (sin uso de tanto scripts).

Puede referirse a Mgetty y AutoPPP para más información con respecto al comando `mgetty`.

##### 25.2.1.5.3.2. Permisos de PPP

El comando `ppp` normalmente debe ser ejecutado por root (superusuario). Si de cualquier forma, usted desea permitir que `ppp` pueda ser ejecutado en modo servidor, por un usuario regular, como se describe a continuación, deberá otorgar los permisos necesarios a ese usuario al añadirlo al grupo `network`, en el fichero `/etc/groups`.

También será necesario darle acceso a una o más partes del archivo de configuración, haciendo uso del comando `allow`, como se ve a continuación:

    allow users fred mary

Si el comando es utilizado en la sección `default`, esto le dará a el(los) usuario(s) especificado(s), acceso a todo.

##### 25.2.1.5.3.3. Shells de PPP para Usuarios de IP Dinámica

Cree un fichero llamado: `/etc/ppp/ppp-shell` y que contenga lo siguiente:

    #!/bin/sh
    IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
    CALLEDAS="$IDENT"
    TTY=`tty`

    if [ x$IDENT = xdialup ]; then
            IDENT=`basename $TTY`
    fi

    echo "PPP for $CALLEDAS on $TTY"
    echo "Starting PPP for $IDENT"

    exec /usr/sbin/ppp -direct $IDENT

Este script deberá ser ejecutable. Ahora cree un enláce simbólico llamado `ppp-dialup` a este script, utilizando los siguientes comandos:

    # ln -s ppp-shell /etc/ppp/ppp-dialup

Deberá utilizar este script como shell para todos los usuarios que realicen conexión. Este es un ejemplo del fichero `/etc/password` para un usuario con acceso a PPP, con nombre de usuario `pchilds` (recuerde no editar directamente el fichero password, utilice `vipw`).

    pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

Cree un directorio llamado `/home/ppp` que contenga los siguentes archivos de 0 bytes:

    -r--r--r--   1 root     wheel           0 May 27 02:23 .hushlogin
    -r--r--r--   1 root     wheel           0 May 27 02:22 .rhosts

los cuales impiden que `/etc/motd` sea desplegado.

##### 25.2.1.5.3.4. Shells de PPP para Usuarios de IP Estática

Cree el fichero `ppp-shell` al igual que el mencionado con anterioridad, y por cada cuenta donde se tenga asignada una IP estática, cree un enlace simbólico al fichero `ppp-shell`.

Por ejemplo, si usted cuenta con tres usuarios que utilicen este servicio; `fred`, `sam` y `mary`, los cuales redirecciona a una red de clase C, habria que hacer lo siguiente:

    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

Cada uno de los usuarios señalados, deberán de contar con el enlace a su shell-script como se indicó (por ejemplo, el usuario `mary`, debe contar con su enlace al fichero `/etc/ppp/ppp-mary`).

##### 25.2.1.5.3.5. Configurando `ppp.conf` para Usuarios de IP-Dinámica

El archivo `/etc/ppp/ppp.conf` deberá contener algo similar a lo siguiente:

    default:
      set debug phase lcp chat
      set timeout 0

    ttyd0:
      set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
      enable proxy

    ttyd1:
      set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
      enable proxy

> Nota: Tomar en cuenta el sangrado, ya que es importante.

La sección `default:` es cargada para cada sesión. Para cada línea que exista y habilite el marcado, en el fichero `/etc/ttys`, se deberá crear una entrada similar a la línea `ttyd0:` mencionada arriba. Cada línea debera contar con su propia dirección IP, de sus direcciones IP disponibles para asignar dinámicamente.

##### 25.2.1.5.3.6. Configurando `ppp.conf` para Usuarios de IP Estática

Junto con el contenido del fichero de ejemplo `/usr/share/examples/ppp/ppp.conf` mencionado anteriormente, deberá agregar una sección para cada usuario asignado estáticamente. Continuaremos con nuestro ejemplo con los usuarios `fred`, `sam` y `mary`.

    fred:
      set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

    sam:
      set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

    mary:
      set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

El archivo `/etc/ppp/ppp.linkup` deberá de contener también información del ruteo, para cada IP estática, si es necesario. Las líneas a continuación añadirán una ruta a la dirección `203.14.101.0` de clase C, por medio del ppp link del cliente.

    fred:
      add 203.14.101.0 netmask 255.255.255.0 HISADDR

    sam:
      add 203.14.102.0 netmask 255.255.255.0 HISADDR

    mary:
      add 203.14.103.0 netmask 255.255.255.0 HISADDR

#### 25.2.1.5.4. Algo más de `mgetty`, AutoPPP, y Extensiones MS

##### 25.2.1.5.4.1. `mgetty` y AutoPPP

Configurando y compilando `mgetty` con la opción `AUTO_PPP` habilitada, permite a `mgetty` detectar la fase LCP de conexiones PPP y automáticamente enviarlo a un shel de ppp. Aun con esto, y debido a que no se ingresa el nombre de usuario y contraseña, es necesario autntificarse por medio de PAP o CHAP.

Esta sección asume que el usuaio ha configurado, compilado e instalado correctamente una versión de `mgetty`, con la opción `Auto_PPP` (v0.99beta o posterior).

Asegurese de que su fichero `/usr/local/etc/mgetty+sendfax/login.conf` contiene la siguiente línea en él:

    /AutoPPP/ -     -                    /etc/ppp/ppp-pap-dialup

Esto le indicará a `mgetty` que ejecute el script `ppp-pap-dialup`, para efecto de detectar conexiones de tipo PPP.

Cree un fichero llamado `/etc/ppp/ppp-pap-dialup` que contenga las siguientes líneas (el fichero deberá ser ejecutable):

    #!/bin/sh
    exec /usr/sbin/ppp -direct pap$IDENT

Para cada línea de marcado habilitada en `/etc/ttys`, cree la entrada correspondiente en `/etc/ppp/ppp.conf`. Esto co-existirá pacíficamente con las definiciaones que se hayan hecho, de acuerdo a lo mostrado en la parte de arriba.

    pap:
      enable pap
      set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
      enable proxy

Cada usuario que ingrese al sistema utilizando este metodo, deberá de contar con su clave de usuario, así como su contraseña, en el archivo `/etc/ppp/ppp.secret`, o bien agrege la siguiente opción, para efecto de que se pueda realizar la autentificación por medio de PAP, directamente del fichero `/etc/password`.

    enable passwdauth

Si desea asignar una dirección IP fija a algunos usuarios, puede especificar el número como un tercer argumento en el fichero `/etc/ppp/ppp.secrets`. Vea el archivo `/usr/share/examples/ppp/ppp.secret.sample` para obtener ejemplos más detallados de esto.

##### 25.2.1.5.4.2. Extensiones de MS

Es posible configurar PPP, para efecto de que brinde a DNS y a NetBIOS, direcciones de servidores de nombres de forma automática.

Para efecto de habilitar estas extensiones con PPP versión 1.x, las siguientes líneas deberán añadirse a la sección relevante de `/etc/ppp/ppp.conf`.

    enable msext
    set ns 203.14.100.1 203.14.100.2
    set nbns 203.14.100.5

Y para versiones de PPP 2 y posteriores:

    accept dns
    set dns 203.14.100.1 203.14.100.2
    set nbns 203.14.100.5

Esto le indicará a los clientes, las direcciones del servidor primario y secundario y el servidor-host para NetBIOS.

Si la línea `set dns`, es omitida en versiones 2 y posteriores, PPP utilizará los valores que encuentre en `/etc/resolv.conf`.

#### 25.2.1.5.5. Autentificación por medio de PAP y CHAP

Algunos proveedores de internet tienen su sistema configurado para que cada usuario al conecatrse sean autentificados por medio de PAP o CHAP. Si este es el caso, al momento de realizar la conexion, no aparecerá un `login:`, sino que comenzará a comunicarse PPP inmediatamente.

El metodo PAP es menos seguro que CHAP, pero la seguridad normalmente no se toma mucho en cuenta en este tipo de conexiones, en funcion de que al enviarse la información de contraseña en texto plano, por medio de una línea serial, no deja mucho espacio para que los crackers husmeen.

Haciendo referencia a lo que vimos de PPP y Direcciones de IP Fijas o bien PPP y Direcciones de IP Dinámicas, habría que aplicar los siguientes cambios:

    7       set login
    ...
    12      set authname MiNombreDeUsuario
    13      set authkey MiContraseña

Línea 7:

  Su PSI normalmente requerirá que usted ingrese al sistema, cuando se utiliza PAP o CHAP. Por esta razón debemos deshabilitar la línea que corresponde a set login.

Línea 12:

  Esta línea especifíca a PAP/CHAP su nombre de usuario. Usted deberá cambiar el valor a quedar el nombre correcto en el campo; `MiNombreDeUsuario`.

Línea 13:

  Esta línea especifíca su contraseña de PAP/CHAP. Es necesario que usted cambie el valor a quedar el dato correcto, en el campo; `MiContraseña`. Quizás sea recomendable que añada una línea a quedar:

      15      accept PAP

  o

      15      accept CHAP

  la intención de esto es para hacerlo obvio, aunque en realidad PAP y CHAP son aceptadas por omisión.

#### 25.2.1.5.6. Cambiando la configuración de `ppp` sobre la marcha (al vuelo)

Es posible hablar con el programa `ppp` mientras se esta ejecutando en segundo plano, pero sólo si se ha habilitado un puerto de diagnóstico. Para hacer esto, añada lo siguiente a su configuración:

    set server /var/run/ppp-tun%d DiagnosticPassword 0177

Esto le indicará a PPP que preste atención al socket del dominio-Unix, solicitando a los usuarios su contraseña, antes de permitir el acceso. La variable `%d` deberá ser reemplazada por el numero de dispositivo `tun` que este utilizando (ej. `tun0`).

Una vez que se a configurado el socket, se puede utilizar pppctl(8) en scripts que deseen manipular el programa.

### 25.2.1.6. Configuración Final del Sistema

Ahora usted cuenta con un `ppp` configurado, pero es necesario hacer algunas cosas, antes de que este disponible para trabajar. Todas ellas giran entorno a la edición del fichero `/etc/rc.conf`.

En primer lugar es importante que se asegure que ha asignado un nombre a su maquina. Esto se hace asignandolo en la línea de `hostname=`, por ejemplo:

    hostname="foo.ejemplo.com"

Si su Proveedor de Servicios de Internet (PSI), le ha provisto de una dirección fija y un nombre de host, es recomendable que utilice este como su `hostname`.

Localice la línea que se refiera a sus dispositivos de red, la cual es `network_interfaces`. Si desea configurar su sistema para marcar a su PSI a petición, asegurese de que el dispositivo `tun0` este en la lista, de otra forma eliminelo.

    network_interfaces="lo0 tun0" ifconfig_tun0=

> Nota: La variable `ifconfig_tun0` debe permanecer en blanco (vacia), y deberá crearse un fichero llamado `/etc/start_if.tun0` que contenga la siguiente línea:

>     ppp -auto MiSistema

> Este script se ejecuta cuando se esta configurando la red, inicializando el demonio de ppp de modo automático. Si usted cuenta con una LAN (red de área local), de la cual esta maquina sea la pasarela (gateway), es tambien recomendable que utilice la opción `-alias`. Referirse a la página de ayuda (man) para mayores detalles.

Especifique el programa router a `NO`, con la siguiente línea en su fichero `/etc/rc.conf`:

    router_enable="NO"

Es importante que el demonio `routed` no se inicialice por default, en virtud de que `routed` tiende a eliminar las variables creadas por `ppp`.

Probablemente valga la pena asegurarse de que la línea `sendmail_flags`, no incluya la opción `-q`, ya que de ser así `sendmail` intentará localizar los parámetros de la red de vex en cuando, ocasionando que realice llamados al exterior. Puede intentar esto:

    sendmail_flags="-bd"

La parte negativa de esta conifguración es que tiene que forzar a `sendmail` a re-examinar los llamados del servidor de correo, cada vez que `ppp` realiza una conexión, con el siguiente comando:

    # /usr/sbin/sendmail -q

Puede utilizar el comando `!bg` en el fichero `ppp.linkup` para hacer esto de manera automática:

    1     provider:
    2       delete ALL
    3       add 0 0 HISADDR
    4       !bg sendmail -bd -q30m

Si usted no desea hacer esto, es posible establecer un dfilter (filtro), para bloquear el tráfico al servidor de salida de correo (SMTP). Favor de referirse a los archivos de ejemplos para mayor detalle al respecto.

Ahora lo único que queda pendiente de hacerse es reiniciar el equipo. Una vez reiniciado el equipo, puede teclear:

    # ppp

y posteriormente `dial proveedor` para iniciar la sesión, o bien si desea que `ppp` inicie la sesión automáticamente, cuando haya una petición de salida (y no haya creado el fichero `start_if.tun0`), puede teclear:

    # ppp -auto proveedor

### 25.2.1.7. Summario

A manera de recapitulación, podemos decir que para configurar ppp por primera ocasión, debemos:

Por parte del Cliente:

1. Asegurese de que existe el dispositivo `tun` dentro de su kernel.

2. Asegurses de que el dispositivo `tun`X``, se encuentra disponible, bajo el directorio `/dev`.

3. Cree una entrada en su fichero `/etc/ppp/ppp.conf`. Con el fichero de ejemplo `pmdemand` debe ser suficiente para la mayoria de proveedores.

4. Si cuenta con una dirección de IP dinámica, cree una entrada en el fichero `/etc/ppp/ppp.linkup` .

5. Actualice su fichero `/etc/rc.conf`.

6. Cree un archivo script llamado `start_if.tun0` si requiere servicio de conexión a solicitud.

Por parte del Servidor:

1. Asegurese de que dentro de su kernel exista el dispositivo `tun`.

2. Asegurses de que el dispositivo `tun`X``, se encuentra disponible, bajo el directorio `/dev`.

3. Cree una entrada en el fichero `/etc/passwd` (usando el programa vipw(8)).

4. Cree un perfil en el directorio home de este usuario, que ejecute `ppp -direct direct-server` o algo similar.

5. Cree una entrada en el fichero `/etc/ppp/ppp.conf`. El fichero de ejemplo `direct-server` debe ser suficiente para darse una idea.

6. Cree una entrada en el fichero `/etc/ppp/ppp.linkup`.

7. Actualice su fichero `/etc/rc.conf`.

Anterior | Inicio | Siguiente
PPP y SLIP | Subir | Uso de Kernel PPP

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.