Tabla de Contenidos

Cómo configurar un acceso conmutado con marcado bajo demanda

Este tutorial mostrará cómo lograr en Debian GNU/Linux una conexión de tipo dial-on-demand (marcado bajo demanda) utilizando solamente wvdial y pppd. Esto puede resultar útil para preparar un pequeño servidor de comunicaciones, cuando sólo se dispone de un enlace conmutado y no se desea mantener ocupada innecesariamente la línea telefónica todo el día.

En este tutorial, se asumen ciertas cosas:

Instalación

Para instalar, solo es necesario tener configurado un repositorio relativamente actualizado, y ejecutar el siguiente comando:

sudo aptitude install ppp wvdial

Si al asistente de instalación pregunta si deseamos configurar wvdial ahora, respondemos que no.

Configuración

Configuración de wvdial

Para utilizar wvdial, primeramente necesitamos generar el archivo /etc/wvdial.conf, lo cual podemos lograr ejecutando el siguiente comando:

sudo wvdialconf

Esto debería generar un archivo /etc/wvdial.conf parecido al siguiente:

[Dialer Defaults]
Modem = /dev/ttyS0
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
ISDN = 0
Modem Type = Analog Modem
; Phone = <Target Phone Number>
; Username = <Your Login Name>
; Password = <Your Password> 

Se recomienda entonces separar la configuración genérica del modem y los valores de configuración relacionados con las conexiones, de modo que podemos modificar nuestro archivo:

sudo editor /etc/wvdial.conf

Debería quedar aproximadamente así:2)

; Valores predeterminados
[Dialer Defaults]
Modem = /dev/ttyS0
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
ISDN = off
Modem Type = Analog Modem
Abort on No Dialtone = on
 
; Mostrar información del modem
[Dialer info]
Init9 = AT&V
 
; Evitar que wvdial se reconecte depués de desconectarse
[Dialer noreconectar]
Auto Reconnect = off
 
; Opciones de la conexión
[Dialer conexion]
Inherits = Dialer Defaults
Dial Attempts = 5
Dial Command = ATM1L3DT
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Auto DNS = on
Stupid Mode = on
Phone = 060101
Username = miusuario
Password = miclave

Esta configuración permitirá ejecutar los siguientes comandos:

sudo wvdial info
sudo wvdial conexion noreconectar

Configuración de pppd

Ahora necesitamos que pppd invoque wvdial para configurar la conexión antes de la negociación PPP. Sucede que cuando wvdial se utiliza normalmente, este pasa diferentes opciones a pppd, pero como pppd ya está ejecutando wvdial, necesitamos colocar las opciones en un archivo ubicado en /etc/ppp/peers/. Este directorio debería contener un archivo llamado wvdial que debemos copiar a una nueva entrada:

cd /etc/ppp/peers
sudo cp wvdial demanda

Ahora necesitamos conocer qué opciones son las que wvdial pasa a pppd. Podemos conseguirlo ejecutando wvdial y luego observando la salida del proceso:

sudo wvdial conexion &
sudo ps auxw | grep pppd

El último comando debería producir una salida como la siguiente:

root      1568  0.3  0.1  2068  928 tts/0    S    00:26   0:00
/usr/sbin/pppd 115200 modem crtscts defaultroute usehostname
-detach user miusuario noipdefault call wvdial idle 0 logfd 6

Entonces detenemos el proceso con el siguiente comando:

sudo killall wvdial

Necesitamos entonces colocar los argumentos de la línea de comando en el archivo /etc/ppp/peers/demanda que hemos creado. En el archivo no necesitamos poner -detach, porque esto evita que pppd se ejecute como tarea de fondo, que es algo que probablemente deseamos. Tampoco necesitamos incluir call wvdial, pues esto solo lee las opciones del archivo /etc/ppp/peers/wvdial, que ya hemos copiado. También necesitamos añadir una opción para que pppd sepa llamar a wvdial.

En definitiva, debe quedarnos un archivo que luzca mas o menos así:

noauth
name wvdial
connect "/usr/bin/wvdial --chat conexion"
/dev/ttyS0
115200
modem
crtscts
defaultroute
usehostname
user miusuario
noipdefault
idle 0
logfd 6 

Ahora verificamos que aun podemos marcar, usando:

sudo pppd call demanda

O también:

sudo pon demanda

Donde demanda es el nombre del archivo ubicado en /etc/ppp/peers. Puede detenerse la conexión usando poff.

Ajuste para el marcado bajo demanda

Ahora necesitamos hacer algunos ajustes al archivo que hemos creado.

El primer ajuste consiste en decirle a pppd que cree e inicie la interfaz, pero que solo marque cuando realmente se necesite enviar un paquete por dicha interfaz. Para lograr esto añadimos la opción demand al archivo.

El próximo ajuste es establecer un tiempo de inactividad tras el cual se interrumpe la conexión si no se transfieren paquetes. Para lograr esto, añadimos la opción idle al archivo, y como argumento establecemos la cantidad de segundos de inactividad, por ejemplo, 300 (5 minutos).

Finalmente, para que pppd no se cierre cuando se interrumpa el enlace y asi evitarnos tener que ejecutarlo manualmente, añadimos la opción persist.

En definitiva, nuestro archivo demanda debería quedar aproximadamente así:

noauth
name wvdial
connect "/usr/bin/wvdial --chat conexion"
/dev/ttyS0
115200
modem
crtscts
defaultroute
usehostname
user miusuario
noipdefault
idle 300
persist
demand
logfd 6

Ahora el enlace podrá iniciarse bajo demanda con sudo pon demanda y detenerse con sudo poff. Si deseamos, podemos colocar dichos comandos en una tarea de crontab, de modo que el enlace inicie por la mañana y se detenga por la tarde.

Atribuciones

1)
Aunque si se desea evitar teclear sudo frecuentemente, puede cambiarse a modo root mediante el comando sudo su - y una vez terminado, salir con exit.
2)
Para obtener información acerca de los diferentes parámetros de configuración de wvdial, puede ejecutarse el comando man wvdial.conf.