sudo
frecuentemente, puede cambiarse a modo root mediante el comando sudo su -
y una vez terminado, salir con exit
.
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:
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.
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
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
.
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.