25.2. Uso de User PPP

Originalmente contribuido por Brian Somers.
Con apoyo de Nik 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 tunX, 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 tunX, 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.

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