require(".zlconfig.php"); require("$webroot/cabecera.php"); ?>
$graf_titulo = "$base_grafs/red_head.png"; ?> require("$webroot/titulos.php"); ?>Scripts de conexión a Internet
Para conectar a Internet se utiliza habitualmente ppp (protocolo punto a punto), así que lo primero que deberemos hacer es asegurarnos de que nuestro núcleo está compilado con soporte para ppp, bien incrustado, bien como módulo. También necesitaremos tener instalado el paquete ppp, que contiene el demonio pppd, imprescindible para establecer una conexión mediante ppp.
Empezaremos por los scripts para conectar y colgar que, en un derroche de originalidad, los llamaremos conectar y colgar, y los pondremos en /usr/local/bin/, dándoles permisos de ejecución (los podemos poner donde queramos, pero /usr/local/bin es un buen sitio para ellos).
/usr/local/bin/conectar
#!/bin/bash
#
#/usr/local/bin/conectar
#
# Para conectar a internet, eligiendo la conexión deseada en cada momento.
# Cada conexión puede llevar asociada su propio fichero de opciones, ya que
# éstas pueden cambiar según nos conectemos con un servidor u otro.
# También dispondremos de un resolv.conf para cada proveedor, ya que si bien
# el formato de este fichero nos permite añadir tantos DNS como queramos y
# se supone que podemos usar otros servidores de nombres diferentes, normalmente será
# aconsejable, por motivos de rapidez, usar los que nos proporciona nuestro proveedor
# de acceso.
# Como todo, estos scripts son mejorables, así que si ves la forma de hacerlo
# sin comprometer la sencillez de los mismos, ponte en contacto conmigo.
#
# Oscar Garrabella Manzano - oskar.g@wanadoo.es
# http://piramide.unizar.es/zaralinux/redes/
# "echo" escribe en pantalla, y "read" le asigna lo que tecleemos
# hasta pulsar "intro" a la variable $conex
echo ""
echo " teclee la conexión deseada"
echo " --------------------------"
echo " alehop"
echo " infovia"
echo " otra"
echo ""
read conex
# si existe el fichero de opciones correspondiente a la conexión elegida,
# crea un enlace simbólico /etc/ppp/options que apunte al mismo
if [ -f /etc/ppp/options.$conex ]; then
ln -sf /etc/ppp/options.$conex /etc/ppp/options
fi
# si hemos definido un resolv para la conexión elegida, lo copia
# como /etc/resolv.conf
if [ -f /etc/ppp/resolv.$conex ]; then
cp -f /etc/ppp/resolv.$conex /etc/resolv.conf
fi
# en función de la conexión elegida, marcará un nº de tlf. u otro;
# recogeremos el valor de $TLN en la cadena de marcación (fichero /etc/ppp/marcado)
case "$conex" in
alehop) TLN="976000123";; # nº del nodo de Zaragoza
infovia) TLN="976719050";; # nº del nodo de Zaragoza
otra) TLN="444444444";; # poner nº tlf. deseado
esac
export TLN
# debemos invocar a pppd a través de "exec"
exec pppd connect /etc/ppp/marcado
/usr/local/bin/colgar
#!/bin/bash
#
#/usr/local/bin/colgar
#
# Para colgar es suficiente con sugerirle "amistosamente" a pppd que ya no
# lo necesitamos. Si en un momento puntual nuestro amigo pppd pierde las buenas
# formas y se resiste, podremos aplicar la fuerza bruta con un killall -9
# (él se lo habrá buscado...)
killall -15 pppd
A continuación, crearemos el fichero /etc/ppp/marcado, que es el que usa pppd desde /usr/local/bin/conecta para invocar a chat, que es quien hace el «trabajo sucio» de dialogar con el módem, es decir, lo que tiene que enviar (o hacer) en función de lo que espera recibir del mismo en cada momento, así como las temporizaciones para que aborte la operación en caso de no recibir respuesta o algo que no esperaba. Es importante que tras las "\" finales de cada línea no haya nada, un simple tabulador puede provocar que chat lo interprete como una cadena a esperar, cadena que lógicamente no va a llegar nunca.
/etc/ppp/marcado
#!/bin/bash
#
# /etc/ppp/marcado
exec chat -v \
TIMEOUT 5 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRING\r\n\r\nRING\r' \
ABORT '\nNO CARRIER\r' \
ABORT '\nNO DIALTONE\r' \
'' \rATH0 \
'OK-+++\dATH0-OK' ATZ0 \
TIMEOUT 40 \
OK ATDT$TLN \
CONNECT ''
El paso siguiente será crear tantos resolv.conf como vayamos a necesitar. En nuestro caso, usaremos dos: uno para la conexión a infovia y otro para la conexión de ejemplo otra, ya que para conectar con alehop crearemos el resolv.conf «al vuelo» (con la ayuda de ip-up.local, en el momento en que se establezca el enlace ppp). Esto es aplicable también para conectar con airtel, y en principio para cualquier proveedor que en las instrucciones de configuración del acceso no nos proporcione direcciones IP de los DNS, sino que las asigne él mismo durante la conexión.
/etc/ppp/resolv.infovia
# resolv.infovia
nameserver 193.152.63.197
/etc/ppp/resolv.otra
# resolv.otra. Aquí pondremos las IP correspondientes a los DNS que vayamos a usar
# en la conexión "otra"
nameserver x.x.x.x
nameserver y.y.y.y
Ahora le toca el turno a los ficheros de opciones del ppp, hemos creado uno por conexión:
/etc/ppp/options.alehop
# options.alehop
modem
passive
mtu 576
mru 576
asyncmap a0000
noipdefault
crtscts
/dev/modem
115200
lock
defaultroute
lcp-echo-interval 20
lcp-echo-failure 5
user 050@alehop
usepeerdns
noauth
/etc/ppp/options.infovia
# options.infovia
modem
passive
mtu 576
mru 576
asyncmap a0000
noipdefault
crtscts
/dev/modem
115200
lock
defaultroute
lcp-echo-interval 20
lcp-echo-failure 5
user infoviaplus
noauth
/etc/ppp/options.otra
# options.otra
modem
passive
mtu 576
mru 576
asyncmap a0000
noipdefault
crtscts
/dev/modem
115200
lock
defaultroute
lcp-echo-interval 20
lcp-echo-failure 5
user usuario@proveedor
noauth
Es la hora de pap-secrets y chap-secrets, los ficheros donde guardaremos el nombre de usuario y la password necesarios para cada conexión, en función de que la autenticación se haga mediante pap o chap. Dado que ambos tienen el mismo formato, podemos editar uno, p.ej. pap-secrets y hacer que chap-secrets sea un enlace simbólico a éste. Con esto nos evitamos por un lado el trabajo inútil de crear dos ficheros idénticos, y por otro siempre estaremos en disposición de facilitar usuario y clave cuando nos identifiquemos, independientemente de que usemos pap o chap. Es recomendable que sólo root tenga permiso de lectura sobre ellos; igualmente siempre que sea posible es preferible usar chap, ya que con pap las contraseñas viajarán por la red en formato de texto plano, siendo legibles por cualquiera.
/etc/ppp/pap-secrets
# /etc/ppp/pap-secrets
# Los campos deben estar separados por tabuladores, NO por espacios
050@alehop * gratis
infoviaplus * infoviaplus
usuario@proveedor * password # aquí
pondremos usuario y clave para la conexión "otra"
A continuación, como hemos dicho, creamos el enlace chap-secrets apuntando a pap-secrets:
# ln -sf /etc/ppp/pap-secrets /etc/ppp/chap-secrets
#
Los siguientes en desfilar serán ip-up.local e ip-down.local; en ellos podremos añadir todo aquello que queramos que se ejecute cuando se establece el enlace ppp y cuando se disuelve, respectivamente. Deberemos darles permiso de ejecución con chmod.
/etc/ppp/ip-up.local
#!/bin/bash
# This sample code shows you one way to modify your setup to allow automatic
# configuration of your resolv.conf for peer supplied DNS addresses when using
# the `usepeerdns' option.
# In my case I just added this to my /etc/ppp/ip-up.local script. You may need to
# create an executable script if one does not exist.
#
# Nick Walker (nickwalker@email.com)
#
if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then
rm -f /etc/ppp/resolv.prev
if [ -f /etc/resolv.conf ]; then
cp /etc/resolv.conf /etc/ppp/resolv.prev
grep domain /etc/ppp/resolv.prev > /etc/resolv.conf
grep search /etc/ppp/resolv.prev >> /etc/resolv.conf
cat /etc/ppp/resolv.conf /etc >> /etc/resolv.conf
else
cp /etc/ppp/resolv.conf /etc
fi
fi
# para que suene un "beep" una vez establecido el enlace ppp:
echo -ne '\a' > /dev/console
/etc/ppp/ip-down.local
#!/bin/bash
# This sample code shows you one way to modify your setup to allow automatic
# configuration of your resolv.conf for peer supplied DNS addresses when using
# the `usepeerdns' option.
# In my case I just added this to my /etc/ppp/ip-down.local script. You may need to
# create an executable script if one does not exist.
#
# Nick Walker (nickwalker@email.com)
#
if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then
if [ -f /etc/ppp/resolv.prev ]; then
cp -f /etc/ppp/resolv.prev /etc/resolv.conf
else
rm -f /etc/resolv.conf
fi
fi
# suena un "beep" al disolverse el enlace:
echo -ne '\a' > /dev/console
Si queremos ganar rapidez a la hora de conectar con máquinas que visitamos frecuentemente, podemos añadirlas a nuestro /etc/hosts, de forma que al teclear la URL no consultará al servidor de nombres, sino que irá directamente a la IP que le hayamos asignado en este fichero:
/etc/hosts
127.0.0.1 localhost
212.2.130.12 www.vaticano.com # 0:)
Por último, no está de más que echemos un vistazo al fichero /etc/host.conf, que deberá contener lo siguiente:
/etc/host.conf
order hosts,bind
multi on
Ante cualquier problema que se nos presente con nuestra conexión, podemos añadir la opción debug a nuestro /etc/ppp/options, de esta forma el pppd nos volcará al fichero /var/log/messages información que nos puede ser de utilidad para averiguar dónde está el origen de nuestro problema. Si queremos consultar esta información «en directo», podemos teclear tail -f /var/log/messages desde otra terminal (podremos salir con CTRL-C).
Y ya para acabar, aquí están empaquetados todos los scripts: internet.tar.gz.
Oscar Garrabella Manzano (6-Feb-2000)
require("$webroot/pie.php"); ?>