25.3. Uso de Kernel PPP
Anterior | Capítulo 25. PPP y SLIP | Siguiente

## 25.3. Uso de Kernel PPP

Partes originalmente desarrolladas por Gennady B. Sorokopud y Robert Huff.

### 25.3.1. Configurando Kernel PPP

Antes de comenzar a configurar PPP en su maquina, asegurese de `pppd` se localiza en `/usr/sbin` y de que existe el directorio `/etc/ppp`.

`pppd` puede trabajar de dos maneras

1. Como un “cliente” — cuando desea conectar su maquina al mundo exterior utilizando PPP, por medio de una conexión serial o bien una línea de modem.

2. como un “servidor” — cuando su maquina esta conectada a una red y es utilizada para que otras maquinas se conecten utilizando ppp.

En ambos casos, será necesario configurar un fichero de opciones (`/etc/ppp/options` o bien `~/.ppprc` si se cuenta con más de un usuario que utilizará ppp en la misma maquina.

También deberá de contar con un software para hacer la conexión por medio de módem (de preferencia kermit), de manera que pueda hacer la conexión con un host remoto.

### 25.3.2. Uso de `pppd` como Cliente

Basedo en información provista por Trev Roydhouse.

El siguiente archivo de configuración `/etc/ppp/options` puede utilizarse para realizar la conexión a una terminal CISCO, por medio de PPP.

crtscts # habilita el flujo de controls de hardware modem # línea de control del modem noipdefault # el servidor PPP remoto asignará la dirección IP # si el servidor no envia una dirección IP durante IPCP # remueva esta opción. passive # espere por los paquetes LCP domain ppp.foo.com # escriba su nombre de dominio aqui :<remote_ip> # escriba la IP del host remoto aqui # este será utilizado para el ruteo de paquetes por medio # de PPP, si no especifica esta opción, cambie la # línea a quedar <local_ip>:<remote_ip> defaultroute # establezca esta opción si el servidor su ruteador # por default

Para conectarse:

1. Realice el llamado al host remoto, utilizando kermit (o cualquier otra aplicación de este tipo), ingrese su nombre de usuario y contraseña (o cualquier info que sea necesaria para habilitar PPP en el host remoto).

2. Salga de kermit (sin colgar la línea).

3. Ingrese lo siguiente:

   `#` `/usr/src/usr.sbin/pppd.new/pppd `/dev/tty01` `19200``

   Asegurese de utilizar el dispositivo y la velocidad adecuados.

Ahora su computadora esta conectada por medio de PPP. Si la conexión falla, puede añadir la opción `debug` en el fichero `/etc/ppp/options` de tal forma que pueda verificar la que esta ocurriendo y pueda resolver el problema.

El siguiente script; `/etc/ppp/pppup` realizará los 3 pasos de forma automática:

#!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200

El fichero `/etc/ppp/kermit.dial` es un script de kermit, uqe realiza el marcado y negocia la autorización necesaria con el host remoto (un ejemplo de este script se encuentra al final de este documento).

Utilice el siguiente script, llamado `/etc/ppp/pppdown` para desconectar la línea PPP:

#!/bin/sh pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest

Verifique que su PPP aun se esta ejecutando, por medio de `/usr/etc/ppp/ppptest`, que deberá verse algo similar a esto:

#!/bin/sh pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0

Para colgar el módem, ejecute `/etc/ppp/kermit.hup`, que deberá contener:

set line /dev/tty01 ; aqui va el dispositivo del modem set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit

He aqui un metodo alterno, donde se utiliza `chat` en lugar de utilizar `kermit`.

Los siguientes dos ficheros deben ser suficiente, para realizar una conexión por medio de `pppd`.

/dev/cuaa1 115200 crtscts # habilita el control de flujo por medio de hardware modem # línea de control del módem connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # el servidor remoto debe asignar la dirección IP. # si el servidor no asigna una IP durante la negociación # IPCP , remueva esta línea y espere por los passive # paquetes LCP domain <your.domain> # aqui va su dominio : # escriba la IP del host remoto aqui # si no ha especificado la opción noipdefault # cambie esta línea a quedar <local_ip>:<remote_ip> defaultroute # escriba esto, si desea que el servidor PPP sea su # router por default

`/etc/ppp/login.chat.script`:

### Nota:

Lo siguiente debe ir en una sola línea.

ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<numero.de.telefono> CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <nombre.usuario> TIMEOUT 5 sword: <contraseña>

Una vez que estos ficheros han sido modificados correctamente e instalados, todo lo que necesita es ejecutar el comando `pppd`, algo como:

`#` `pppd`

### 25.3.3. Uso de `pppd` como Servidor

El fichero `/etc/ppp/options` debe contener algo similar a lo siguiente:

crtscts # control de flujo por Hardware netmask 255.255.255.0 # mascara de red (no es requisito) 192.114.208.20:192.114.208.165 # direcciones ip del host local y remoto # la dirección ip local debe ser # diferente a la que le haya asignado a su # dispositivo de red ethernet (u otro) # la dirección ip remota que será # asignada a la maquina remota domain ppp.foo.com # su dominio passive # espera por LCP modem # línea de modem

El siguiengte script, llamado `/etc/ppp/pppserv` habilitará pppd, para que actue como servidor:

#!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200

Utilice el script `/etc/ppp/pppservdown` para detener el servidor:

#!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans

El siguiente script de kermit (`/etc/ppp/kermit.ans`) habilita/deshabilita el modo de autorespuesta en su módem. Y debe verse algo similar a lo siguiente:

set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; cambiar esto a quedar out ATS0=0\13 si desea deshabilitar el modo ; de autorespuesta inp 5 OK echo \13 exit

Un script llamado `/etc/ppp/kermit.dial` es utilizado para llamar y autentificarse en un host remoto. Es necesario que edite este fichero, de acuerdo a sus necesidades. Escriba su nombre de usuario (login) y contraseña (password) en este fichero, también será necesario cambiar su metodo de conexión, de acuerdo a lo que se ajuste a sus necesidades.

; ; ingrese el dispositivo que esta apuntando a su módem: ; set line /dev/tty01 ; ; escriba la velocidad del módem: ; set speed 19200 set file type binary ; full 8 bit file xfer set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; Posteriormente SET CARRIER si es necesario set dial display on ; despues SET DIAL si es necesario set input echo on set input timeout proceed set input case ignore def \%x 0 goto slhup :slcmd ; cambio a modo de comando echo Put the modem in command mode. clear ; Limpieza del buffer de entrada pause 1 output +++ input 1 OK\13\10 ; esperar para OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; si el modem no responde Ok, intentar de nuevo :slhup ; colgar el teléfono clear ; Limpieza del buffer de entrada pause 1 echo Hanging up the phone. output ath0\13 input 2 OK\13\10 if fail goto slcmd ; si no hay un OK como respuesta, poner el modem en modo de comando :sldial ; marcar el numero telefonico pause 1 echo Dialing. output atdt9,550311\13\10 ; escriba el numero de telefono assign \%x 0 ; asignar cero al contador :look clear ; Limpieza del buffer de entrada increment \%x ; Conteo de segundos input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; login assign \%x 0 ; asignar cero al contador pause 1 echo Looking for login prompt. :slloop increment \%x ; Conteo de segundos clear ; Limpieza del buffer de entrada output \13 ; ; escriba su login prompt aqui: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; intentar 10 veces para obtener un login else goto slhup ; colgar y empezar de nuevo si a la decima falla :sluid ; ; escriba su nombre de usuario: ; output ppp-login\13 input 1 {Password: } ; ; escriba su contraseña: ; output ppp-password\13 input 1 {Entering SLIP mode.} echo quit :slnodial echo \7No dialtone. Check the telephone line!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end:

Anterior | Subir | Siguiente
25.2. Uso de User PPP | Inicio | 25.4. Uso de PPP sobre Ethernet (PPPoE)

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