¿Que es pppd? Se trata de la primera posibilidad de conexión a internet
que ofrece Linux. Es una conexión a internet que gasta pocos recursos
y con posibilidad de hacerla desde la consola, sin necesidad de entrar en
modo gráfico. Cualquiera que aspire a obtener al máximo rendimiento de la
conexión a internet, por ejemplo automatizando la conexión, automatizando
la recogida de correo, noticias, ftp, etc... casi seguro no tendrá más
remedio que pasar por aquí.
Como inconvenientes, tiene unos cuantos. El más destacable es la falta
total y absoluta de interactividad o de información en pantalla de cómo
va la conexión, siendo necesario el uso de otros comandos (como ifconfig)
o la observación de archivos históricos (/var/log/messages) para averiguar si
la conexión se ha realizado con éxito o ha habido algún error.
La configuración de pppd se basa en la creación de una serie de archivos.
/etc/ppp/options : Configuración de la conexión y del puerto serie /etc/ppp/marcado : Configuración del modem y marcado del número de teléfono /etc/ppp/pap-secrets : Claves de acceso para identificación con PAP /etc/ppp/chap-secrets : Claves de acceso para identificación con CHAP /etc/resolv.conf : Servidores de nombres (DNS)
En mi_login@mi_proveedor irá el login y el proveedor (el proveedor sin
dominio, por ejemplo: fulanito@arrakis)
Donde pone /dev/ttySx, la 'x' indica el puerto serie: /dev/ttyS0 = COM1,
/dev/ttyS1 = COM2, etc...
La velocidad 115200 NO es la velocidad del modem, es la velocidad entre el
modem y el puerto serie, que no tiene por qué coincidir con la velocidad
en el lado de la línea telefónica. La velocidad del modem (33600, 28800...)
NO hay que ponerla en ningun sitio. Algunos modems no soportan esa velocidad
entre el modem y el puerto serie y habrá que probar con 57600 o incluso con
38400. Si se tiene una UART 16450 o 8250, utilizar 38400 (usar
setserial /dev/ttySx para conocer la UART del modem o del puerto serie,
donde 'x' indica el puerto serie de la misma forma que antes). Nótese que el
valor óptimo es 115200 y conforme menor sea dicho valor, menos rendimiento
le sacaremos al modem.
/etc/ppp/marcado:
--------------------------------------------------------------
ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
""
"AT& F" TIMEOUT 5 OK
"ATW1DTnumero_de_telefono" TIMEOUT 100 CONNECT
---------------------------------------------------------------
Comentarios:
Los ABORT iniciales sirven para que, si el modem encuentra una situación
anómala (no hay tono de llamada, comunicando...) y responde alguno de esos
mensajes (BUSY, NO CARRIER...), el pppd pare y no pierda tiempo hasta fallar
el TIMEOUT 100 que sería el que acabase la conexión. El problema es que no
todos los modems responden de la misma forma (por ejemplo, el mío responde
"NO DIAL TONE" en vez de "NO DIALTONE") y la correspondencia debe ser exacta.
Por tanto, para una configuración correcta, será necesario consultar en el
manual del modem cómo son estos mensajes.
El "AT& F" es la cadena de inicialización del modem. La que se indica es
de las más estandar. No obstante, en algunos modems puede ser mejor "ATZ"
o variantes de "AT& F" (como "AT& F1", "AT& F2"...). Como referencia, se debe
usar aquella que configure el modem para usar control de flujo hardware
(RTS/CTS). En caso de no acertar en la configuración del modem, es posible
que se produzcan algunos efectos indeseables (el modem no cuelga al cortar
la comunicación, conexión lenta...). Una posibilidad es "fusilar" la que
use windows. Se puede ver dentro del directorio de windows un archivo
llamado modemlog.txt o modemdet.txt.
El numero_de_telefono es precisamente eso. El número de telefono del
nodo de Infovia Plus, el de Iddeo, etc...
/etc/ppp/pap-secrets y /etc/ppp/chap-secrets
Existen dos formas posibles de identificación cuando nos conectamos a
un proveedor: PAP y CHAP. PAP es la más sencilla y es la que usaba por
ejemplo Infovia. CHAP es muy usada en Infovia Plus.
mi_login@mi_proveedor debe ser exactamente lo mismo que se puso como
parámetro de la opción 'name' en /etc/ppp/options.
Los campos Van separador por TABULADORES no por espacios.
Si se dispone de más cuentas en otros proveedores, se pueden añadir
nuevas líneas con el mismo formato.
¿Cual uso, pap-secrets o chap-secrets? Si sabes que tu proveedor usa PAP,
grábalo como pap-secrets. Si usa CHAP, grábalo como chap-secrets. Si no
sabes cual usa, puedes hacer prueba-y-error o crearte los dos, o crearte
uno sólo y hacer un enlace simbólico de uno al otro. Por ejemplo, si has
creado chap-secrets, para hacer un enlace desde pap-secrets se haría:
cd /etc/ppp
ln -s chap-secrets pap-secrets
Esto en teoría haría que pppd y tu proveedor se pusieran de acuerdo
para elegir PAP o CHAP según prefieran.
/etc/resolv.conf :
Aquí irían las direcciones de los DNS primario y secundario. El formato
es muy sencillo:
En lugar de DNS_primario y DNS_secundario, se pondrán las direcciones
numéricas de los DNS primario y secundario respectivamente. Los DNS
primarios y secundarios deberás preguntarlos a tu proveedor y deberán
dártelos, pues no son secretos.
Si no tuvieras DNS_secundario, puedes ahorrarte la segunda línea.
Una vez creados los scripts, la conexión se efectuaría al escribir
pppd o /usr/sbin/pppd.
Para comprobar si la conexión tiene éxito, se puede usar el
comando /sbin/ifconfig y ver si al cabo de un minuto o dos aparece
un bloque nuevo ppp0.
Otra forma es consultando periódicamente el fichero /var/log/messages
hasta ver si aparece algo como esto:
Local IP address xxx.xxx.xxx.xxx
Remote IP address yyy.yyy.yyy.yyy
Lo cual indicaría una conexión con éxito. Una forma de hacer esto sería
con la orden tail -f /var/log/messages y pulsar Ctrl+C cuando veamos
que la conexión ha funcionado o fallado.
La desconexión se realizaría introduciendo la orden killall pppd.
En caso de necesitar ayuda, remitir la duda a es.comp.os.linux.misc o
es.comp.os.linux.redes mandando copia de los scripts (ocultando los
passwords, claro) y lo que haya salido en /var/log/messages durante
la conexión fallida.
NOTA IMPORTANTE: Los ficheros arriba descritos han de crearse desde cero
con un editor de Linux. Crearlos con un editor de DOS o de Windows, o
con operaciones de cortar-y-pegar en Windows añade un caracter no visible
al final de cada línea que Linux confundiría con un caracter normal,
inutilizando los scripts.