====== 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:
* Se dispone de un enlace conmutado funcional, para el cual tenemos el número de teléfono, el nombre de usuario y la contraseña.
* El sistema ha detectado e instalado correctamente el modem.
* Se trabajará como un usuario corriente.((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''.))
===== 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 =
; Username =
; 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í:((Para obtener información acerca de los diferentes parámetros de configuración de ''wvdial'', puede ejecutarse el comando ''man wvdial.conf''.))
; 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 =====
* **Autor:** Hugo Florentino. Traducido y adaptado de un [[http://www.davidpashley.com/articles/wvdial-pppd-dod.html|artículo]] de David Pashley.