Este documento está disponible en los siguientes idiomas: English Castellano Deutsch Francais Nederlands Russian Turkce |
por Guido Socher Sobre el autor: Guido es un veterano seguidor de Linux. Le gusta Linux no sólo por su calidad técnica, sino también por la gente que integra la comunidad Linux. Contenidos: |
Resumen:
Este artículo explica cómo se pueden configurar varios
Proveedores de Servicios Internet (Internet
Service Providers, o ISPs) bajo Linux y cómo intercambiarlos
fácilmente.
La idea que utilizamos no es sólo válida para la configuración
en un PC con una única conexión a Internet, sino que puede usarla
para que toda su familia acceda simultáneamente a Internet.
Para conseguirlo configuraremos un proxy DNS (planificación DNS) y el
enmascaramiento IP bajo
Linux.
Últimamente el acceso a Internet se ha vuelto muy sencillo. La mayoría de los ISPs (o proveedores de acceso a Internet) ya no piden cuotas mensuales ni contratos a largo plazo. Si un ISP tiene problemas técnicos u ofrece un mal servicio, sólo tenemos que escoger el siguiente. En Alemania llamamos a esto "Internet por Llamada" que nos lleva un paso más adelante. No hace falta registrarse ni firmar ningún papel. Sólo se paga a través de la factura telefónica habitual. Tenga en cuenta que esto no es lo mismo que Internet gratuito. Internet gratuito es normalmente el estado anterior a la bancarrota del ISP y a menudo lleva consigo cantidad de datos erróneos. En el caso de "Internet por Llamada" usted paga, a menudo cuotas bastante altas pero puede obtener buen ancho de banda. No importa cómo esté detallado en su país, este artículo explicará cómo cambiar rápidamente el ISP y utilizar diferentes conexiones telefónicas a Internet en distintos momentos.
El tipo de acceso a Internet que vamos a cubrir en este artículo es una conexión telefónica punto a punto (o point-to-point; PPP) desde su PC a su ISP. Bajo Linux se utiliza un programa llamado pppd para configurar esta conexión. pppd es una aplicación muy buena y muy flexible, pero desafortunadamente la documentación que acompaña pppd tiene sólo ejemplos de casos muy anticuados y muy especiales de autentificación y acceso a su ISP. Usando esos ejemplos para configurar una conexión, generalmente fallará con la mayoría de los ISPs modernos. La mayoría de los ISPs utilizan actualmente
Con Linux y enmascaramiento IP
es muy sencillo conectar no sólo un ordenador sino todo un grupo, una
completa red de ordenadores, vía una conexión PPP con su ISP. Para hacer
esto necesita al menos una máquina Linux y cualquier número de otros
ordenadores. Esto tiene el siguiente aspecto:
Si usa una pasarela Linux de enmascaramiento IP y usa diferentes ISPs tendrá generalmente 2 problemas:
Todos los ficheros de configuración de pppd están normalmente en /etc/ppp y por lo general tendrá que arrancar pppd como root. Durante la instalación y primeras pruebas debería iniciar la sesión como root. Después le mostraré cómo cualquiera puede iniciar y parar el pppd. No es bueno que usted entre siempre como root. El usuario root tiene muy pocas restricciones y puede destruir fácilmente su configuración por error.
Los ficheros importantes para pppd son:
cd /etc mv ppp ppp_old tar zxvf ppp.tar.gzDespués de desempaquetarlo verá que hay más ficheros incluidos en ppp.tar.gz. Éstos son scripts adicionales que facilitan la configuración. Su propósito se explica después. (Nota: se mencionan algunos precios en los ficheros de configuración para los proveedores ejemplo. Pueden ser erróneos. Consulte la página principal de cada ISP para tener información exacta).
Veamos un fichero de configuración para un ISP llamado arcor:
# Esto es
/etc/ppp/peers/arcor # Página principal del ISP arcor: http://www.arcor-online.de/ #---------- # dispositivo serie y velocidad del módem (normalmente 38400 o 57600): /dev/modem 57600 # script de la conexión módem con número de teléfono: connect '/etc/ppp/scripts/ppp-on-dialer-pap 0192070' # opciones específicas, opciones comunes se # leen en /etc/ppp/options noipdefault # llama a pppd para usar este nombre de usuario para autentificación PAP: user arcor # intenta dns dinámico: usepeerdns # |
cd /dev ln -s ttyS0 modem57600 es la velocidad del módem y depende de su hardware. La línea que empieza por "connect" especifica un script (/etc/ppp/scripts/ppp-on-dialer-pap) que se encarga de la comunicación con el módem vía comandos AT. Estos comandos AT son ASCII basado en un lenguaje de comandos para módems. El parámetro dado al script (0192070) es el número de teléfono a marcar.
Hasta ahora hemos definido el número de teléfono (0192070, en este
ejemplo), la velocidad del módem, la línea serie a usar y un puñado
de opciones de configuración de pppd. No trataré aquí las opciones de
configuración
comunes en /etc/ppp/options. Puede echar un vistazo al fichero de ejemplo y
ojear
la página de manual de pppd.
En lugar de esto conectaremos con nuestro ISP (arcor). Para hacerlo
necesitamos
2 cosas más (éste es un ejemplo que funcionará para lectores en Alemania):
login name: arcor
password: internet
Esta información se tiene que introducir en el fichero /etc/ppp/pap-secrets
y el nombre de usuario irá también en el fichero /etc/ppp/peers/arcor
(véase arriba). Añada una línea como la siguiente a
/etc/ppp/pap-secrets:
# Esto
es /etc/ppp/pap-secrets # client server secret IP-addr arcor * internet 0.0.0.0 |
Ya está. Ahora podemos probarlo. Para hacer la llamada tecleamos:
pppd call arcorarcor es en este caso el nombre del fichero de configuración en /etc/ppp/peers/
killall pppdEspero que este ejemplo le sirva. Debería funcionar como se muestra aquí correctamente a los lectores alemanes. Las personas de otros países evidentemente deberían cambiar número de teléfono, login y password. por los de su ISP. Si no funciona eche un vistazo a la sección de solución de problemas al final de este artículo.
Ahora tiene 1 ISP funcionando. Para añadir más tiene que hace lo siguiente:
En este punto sabe aproximadamente cómo funciona el mecanismo subrayado. A continuación usaremos unos cuantos scripts para hacerlo más sencillo. En particular introduciremos dos scripts en perl "setuidados" con los que haremos posible iniciar y parar su conexión a Internet cuando entre al sistema como un usuario normal (no como superusuario).
Set-UID es un mecanismo que permite a un usuario normal ejecutar
un comando específico como si lo estuviera ejecutando el dueño de
dicho comando. Evidentemente hay que diseñarlo con cuidado para no crear
problemas de seguridad. Los scripts en perl "setuidados" están
incluidos en el ppp.tar.gz que desempaquetó anteriormente.
Deben tener "s" en los permisos de archivo y pertenecer al superusuario:
> cd
/etc/ppp/scripts
> ls -al ppp-on
ppp-off
-rwsr-sr-x 1
root root 1258 Jan 7 13:24 ppp-off
-rwsr-sr-x 1 root root 2619 Jan 9 20:30 ppp-on
Si no tienen estos permisos cámbielos con la orden
chmod 6755 ppp-off
ppp-on.
Los scripts ppp-off ppp-on sólo son scripts
de ajuste. Todo lo que hacen es ejecutar pppd call
algún-fichero-de-configuración o
killall pppd. La ventaja es que ahora cualquier usuario puede
utilizarlos.
El script ppp-on tiene además alguna función especial para los ISP que no
utilizan configuración DNS automática. Si le sucede que tiene un ISP con
esta característica
edite el fichero y busque "static". Hay ejemplos en este fichero que puede
modificar. Use
los ficheros ppp-on/ppp-off como sigue:
Para conectar: /etc/ppp/scripts/ppp-on arcor Para terminar la conexión a Internet: /etc/ppp/scripts/ppp-offEsto debería funcionar para cualquier usuario de su computadora. arcor es de nuevo el nombre de un fichero en /etc/ppp/peers/. Puede darle un nombre distinto.
Por último emplearemos una interfaz gráfica para iniciar y parar nuestra
conexión a Internet. Un programa cgi es un programa que genera páginas web
interactivas. Un programa
cgi bien diseñado funciona con cualquier navegador y cualquier sistema
operativo. Es por
esto por lo que usamos un programa cgi. Se parece a esto:
$url="http://127.0.0.1/cgi-bin/pppcontrol";
El script cgi pppcontrol lee un fichero de configuración llamado /etc/ppp/gpppwrap.conf que tiene la siguiente sintaxis:
ppponarg: <argumento_a_pasar_a_ppp_on> - una cadena adicional de comentario |
# Esto es /etc/ppp/gpppwrap.conf ppponarg: arcor-- arcor.net 3pf/min ppponarg: talknet -- internet por llamada 3.5pf/minNota: los precios 3pf/min y 3.5pf/min pueden haber cambiado y pueden estar equivocados cuando usted lea esto.
Puede que haya sido demasiada información para usted, pero una vez que lo tenga instalado y funcionando sólo necesitará añadir/borrar de vez en cuando un ISP y esto es tan fácil como ha visto antes.
Ahora puede elegir apropiadamente un ISP de la lista en la página web y conectarse simplemente haciendo click en un botón en esa página web.
Para instalar dnrd del código fuente tiene que:
desempaquetarlo: tar zxvf dnrd-2.10.tar.gz cd dnrd-2.10/src/ compilarlo: make strip dnrd instalarlo: cp dnrd /usr/local/sbin/ crear el directorio vacío /etc/dnrd/ : mkdir /etc/dnrd/El proxy DNS dnrd se utiliza como sigue (195.50.149.33 y 195.50.140.6 son e.g los servidores DNS de su ISP):
cuando el enlace ppp se active: dnrd -s 195.50.149.33 -s 195.50.140.6 cuando termine la conexión ejecute: dnrddnrd se ha iniciado en nuestro caso desde los scripts /etc/ppp/ip-up y /etc/ppp/ip-down siendo todo automático. Los scripts que ha descargado anteriormente ya están preparados para esto, esperando encontrar dnrd en el directorio /usr/local/sbin.
dnrd puede hacer mucho más que esto. Puede ser un pequeño servidor
DNS por sí mismo. Bajo Unix siempre puede escribir en el fichero
/etc/host.conf la línea
order hosts, bind
y entonces dar a todas sus máquinas en su pequeña red local nombres
simbólicos en el fichero /etc/hosts .
Desgraciadamente, las estúpidas máquinas Windows en su red no tienen esta
posibilidad. Si dnrd encuentra un fichero /etc/hosts
en su PC Linux actuará automáticamente como un servidor DNS para las
entradas
mencionadas en ese fichero. ¡Esto resuelve el problema!
La sintaxis del archivo /etc/hosts se muestra aquí:
# sintaxis: # dir-ip nombre-host alias1 alias2 ... # ejemplo: 192.168.0.1 linuxpc.mynet linuxpc 192.168.0.2 peppermint.mynet pepper mint |
Para utilizar dnrd no sólo como un proxy DNS sino también como un servidor DNS para las entradas en /etc/hosts debe iniciarlo siempre al arrancar la máquina. Para ello, tiene que añadir la línea
daemon /usr/local/sbin/dnrdal final de la sección start en el script de arranque /etc/rc.d/init.d/network (Esta sintaxis es para redhat, mandrake etc... su distribución puede diferir).
#This is /etc/resolv.conf when dnrd is running nameserver 127.0.0.1La ventaja es que ahora está usando la caché interna de dnrd en todos los hosts y no sólo en los que están dentro de su red.
>nslookup Default Server: localhost Address: 127.0.0.1 >pepper Server: localhost Address: 127.0.0.1 Non-authoritative answer: Name: peppermint.mynet Address: 192.168.0.2Termine nslookup pulsando crtl-d.
En esta sección explicaremos cómo activar la depuración (debuging) para pppd. Esto le ayudará a imaginar qué está mal si algo no funciona. Desgraciadamente he descubierto que no era siempre un problema de configuración por mi parte cuando algo no funcionaba.
Lo primero que hace pppd en nuestro caso es abrir el puerto serie (/dev/modem, un enlace a e.g /dev/ttyS0) para ejecutar el script /etc/ppp/scripts/ppp-on-dialer-pap. Este script enviará comandos AT al módem. Estos comandos hacen que el módem se conecte a su ISP. Si algo fuese mal podrá encontrar los errores en el fichero /etc/ppp/connect-errors. La mayor parte de las veces el fichero connect-errors file le dará suficientes pistas para que se figure qué está mal. Si este no fuese el caso tendría que introducir los comandos AT manualmente. Para hacerlo necesita un programa de comunicación serie como minicom (incluido en la mayoría de las distribuciones Linux), o cu (normalmente incluido en un paquete llamado uucp) o kermit (consígalo en http://www.columbia.edu/kermit/ck70.html). Use estos programas de comunicación serial para "conversar" con su módem. Cuando teclea AT, el módem debería decir "OK". Sino compruebe los parámetros de velocidad, el cable de alimentación etc... En el caso de que diga OK pruebe el comando ATDT1234 el módem debería marcar ahora 1234. Sino compruebe el manual de su módem. El comando podría ser también ATD1234 (sin T) o algún otro parámetro está equivocado.
Después de que el módem ha llamado a su ISP el siguiente paso es la fase de negociación ppp. Para ver qué esta sucediendo aquí deber habilitar el servicio syslog daemon.debug in /etc/syslog.conf. Edite el fichero /etc/syslog.conf y añada ";daemon.debug" a la línea que termina con /var/log/messages . E.g como esto:
*.info;mail.none;authpriv.none;daemon.debug /var/log/messagesAhora rearranque syslog con el comando
tail -f /var/log/messagesy verá la salida debug de pppd mientras esté conectado a su ISP.
Una conexión ppp satisfactoria será algo así:
Jan 14 17:18:11 bearix
pppd[721]: pppd 2.3.10 started by root, uid 0 Jan 14 17:18:34 bearix pppd[721]: Serial connection established. Jan 14 17:18:34 bearix pppd[721]: Using interface ppp0 Jan 14 17:18:34 bearix pppd[721]: Connect: ppp0 <--> /dev/modem Jan 14 17:18:35 bearix pppd[721]: sent [LCP ConfReq id=0x1 Jan 14 17:18:37 bearix pppd[721]: rcvd [LCP ConfReq id=0x46 Jan 14 17:18:37 bearix pppd[721]: sent [LCP ConfNak id=0x46 Jan 14 17:18:38 bearix pppd[721]: rcvd [LCP ConfReq id=0x47 Jan 14 17:18:38 bearix pppd[721]: sent [LCP ConfAck id=0x47 Jan 14 17:18:38 bearix pppd[721]: sent [LCP ConfReq id=0x1 Jan 14 17:18:38 bearix pppd[721]: rcvd [LCP ConfAck id=0x1 Jan 14 17:18:38 bearix pppd[721]: sent [PAP AuthReq id=0x1 user="arcor" password="internet"] Jan 14 17:18:40 bearix pppd[721]: rcvd [LCP ConfReq id=0x49 Jan 14 17:18:40 bearix pppd[721]: sent [LCP ConfReq id=0x2 Jan 14 17:18:40 bearix pppd[721]: sent [LCP ConfAck id=0x49 Jan 14 17:18:41 bearix pppd[721]: rcvd [LCP ConfAck id=0x2 Jan 14 17:18:41 bearix pppd[721]: rcvd [CHAP Challenge id=0x5 <0c7672840494152025f937ac4f5e135e>, name = "klndiinternet"] Jan 14 17:18:41 bearix pppd[721]: sent [CHAP Response id=0x5 Jan 14 17:18:41 bearix pppd[721]: rcvd [CHAP Success id=0x5 ""] Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x1 Jan 14 17:18:41 bearix pppd[721]: sent [CCP ConfReq id=0x1 Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfReq id=0x8e Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfAck id=0x8e Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfRej id=0x1 Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x2 Jan 14 17:18:41 bearix pppd[721]: rcvd [LCP ProtRej id=0xfb 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f] Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfNak id=0x2 Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x3 Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfAck id=0x3 Jan 14 17:18:41 bearix pppd[721]: local IP address 145.253.88.6 Jan 14 17:18:41 bearix pppd[721]: remote IP address 145.253.1.150 Jan 14 17:18:41 bearix pppd[721]: primary DNS address 145.253.2.11 Jan 14 17:18:41 bearix pppd[721]: secondary DNS address 145.253.2.75 Jan 14 17:18:41 bearix pppd[721]: Script /etc/ppp/ip-up started (pid 723) Jan 14 17:18:42 bearix pppd[721]: Script /etc/ppp/ip-up finished (pid 723), status = 0x0 |
Es imposible describir aquí todos los casos de error primero porque no conozco su configuración y segundo porque sencillamente hay demasiadas cosas que pueden ir mal. Con un poco de creatividad y teniendo en mente lo que ha aprendido en este artículo debería ser capaz de encontrar la mayoría de los fallos. Si realmente no puede hacerlo funcionar y no aparece ningún fallo por su parte entonces simplemente pruebe un ISP diferente. Podría muy bien ser un problema del ISP
|
Contactar con el equipo de LinuFocus
© Guido Socher, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2001-03-29, generated by lfparser version 2.9