miércoles, 18 de junio de 2008

Configuración de la conexión a un servidor

Acontinuacion veremos la conguración de la conexión a un servidor
escogi el servidor del PNTIC

Para configurar la conexión al servidor del PNTIC recomiendo que utilicen la cuenta genérica del Centro (si no la tienes, puedes solicitarla a través de la Dirección del Centro). De esta manera no dependemos del acceso personal de nadie, y evitamos suspicacias en caso de traslados de Centro, disponibilidad del acceso, etc.
Vamos a suponer que los datos del acceso del Centro son los siguientes:

login: telesup
password: linux
servidor POP3 y SMTP: centros1.pntic.mec.es
DNS primaria: 194.179.1.100 DNS secundaria: 194.179.1.101
Alias: cp.telesup.de.prueba@centros1.pntic.mec.es

Archivos a editar y crear
Para realizar la configuración de la conexión a Internet es imprescindible que hayas entrado en el sistema como Superusuario o "root", con la "password" que hayas definido al instalar Linux.
Los siguientes archivos están tomados o modificados con respecto a la propuesta de Javier Cáceres en el artículo publicado por PC-WORLD en Junio de 1.998.
El primer archivo que hay que editar es "/etc/resolv.conf". En él incluiremos los datos de la direcciones DNS de nuestro servidor. Para ello, vamos a editarlo, escribiendo:
pico /etc/resolv.conf
Si el archivo no existía, se crea. Vamos a incluir la siguiente información:
search centros1.pntic.mec.es nameserver 194.179.1.100 nameserver 194.179.1.101
Según parece, Infovía Plus utiliza el servicio de autentificación "pap". Esto significa que tenemos que editar el archivo "/etc/ppp/pap-secrets":

pico /etc/ppp/pap-secrets
#claves de autentificación
pap #nombre de usuario servidor clave
telesup@mec_pntic infoviaplus linux
Ahora vamos a empezar a crear los archivos que van a utilizarse para establecer la conexión a través de "ppp" (protocolo punto a punto).
El primero de ellos será el que haga la llamada al resto. Este archivo debemos colocarlo en algún lugar del "path" (ruta de acceso) que esté definida por defecto para que Linux la busque y ejecute sin necesidad de estar en el directorio en el que se encuentra o tener que escribir este. De cualquier manera, luego crearemos dos archivos ("hola" y "adiós"), que harán las veces de "llamada" y "cierre" de la conexión.
Primer archivo: "internet".

pico /usr/local/bin/internet
#/usr/local/bin/internet #!/bin/sh #Llamamos a pppd con los parámetros de nuestra conexión a internet /usr/bin/pppd file /etc/ppp/internet.ppp ttyS0 57600 -d

Aquí puede que tengamos que cambiar dos cosas:

ttyS0: identifica el primer puerto serie (COM1 en MS-DOS). Si nuestro módem se encuentra en otro puerto serie, debemos identificarlo (ttyS1 para COM2, ttyS2 para COM3, etc.)
57600: indica la velocidad máxima a la que nuestro módem puede establecer una conexión. Debemos poner la que soporte nuestro módem (14400, 19200, 28800, 33600...). También puede consultar el "Serial-HowTo" para mejorar el rendimiento del módem, especialmente si es de los "nuevos" V.90.

Investigando encontre :
que el parámetro -d puede no ser correcto en algunas versiones de Linux.
Pro puede que necesitéis poner "nodetach" en lugar de -d. Consulta las páginas de pppd para más información. Además, una vez editado y guardado el archivo, debemos darle permiso de ejecución a todos los usuarios. Para ello, ejecutaremos el comando:
chmod 755 /usr/local/bin/internet
Crearemos a continuación el archivo al que llama el anterior (internet.ppp):
pico /etc/ppp/internet.ppp
#/etc/ppp/internet.ppp connect /etc/ppp/infoviaplus.chat modem defaultroute noipdefault ipcp-accept-local ipcp-accept-remote lock user colegio@mec_pntic remotename infoviaplus
Se sobreentiende que donde pone "colegio" debemos poner nuestro login.
A continuación, creamos el archivo "infoviaplus.chat":
pico /etc/ppp/infoviaplus.chat
#/etc/ppp/infoviaplus.chat /usr/sbin/chat "" "ATZ" "OK\r" "\p\pATDT917529000" "CONNECT"
Aquí debemos cambiar el número de teléfono (917529000) por el del nodo que nos dé servicio a Infovía Plus desde nuestra localidad.
En este archivo también hay que dar permisos de ejecución, así que ejecutamos:
chmod 755 /etc/ppp/infoviaplus.chat
Por último, creamos un archivo que cierre la conexión una vez que deseemos terminar (internet-off)
pico /usr/local/bin/internet-off
#/usr/local/bin/internet-off #Eliminamos cualquier conexión que utilice el "daemon" ppp: killall pppd
Recuerda darle también permisos de ejecución:
chmod 755 /user/local/bin/internet-off
Con esto tendríamos prácticamente terminada nuestra configuración.
Ahora necesitamos que TODOS los usuarios puedan arrancar el protocolo punto a punto, por lo que hay que ejecutar chmod una vez más para dar permisos de ejecución del "pppd" a los usuarios que deseen conectar:
chmod a+s /usr/sbin/pppd
Ahora, yo me atrevería a añadir dos archivos, para que no tengamos que complicarnos la existencia sobre si se puede o no se puede acceder a todos los archivos anteriores, y con nombres más fáciles de recordar para los usuarios. Creo que lo más simple es crearlos en el directorio "/usr/local/bin", dando los correspondientes permisos de ejecución. Además, estos archivos permiten incluir otras órdenes no "estándar" (arranque del navegador al tiempo de la ejecución, etc.)
pico /usr/local/bin/hola
#Llamada al archivo /usr/local/bin/internet /usr/local/bin/internet #Si queremos, podemos aprovechar a arrancar el navegador desde aquí... #Quita la almohadilla (#) de la siguiente línea en tu archivo: #netscape &
chmod 755 hola chown .users hola
pico /usr/local/bin/adios
#Llamada al archivo /usr/local/bin/internet-off /usr/local/bin/internet-off
chmod 755 adios chown .users adios
Ya tenemos preparado el sistema para que todo el mundo pueda establecer una conexión a Internet desde su propia cuenta de usuario.
Ahora nos hace falta crear cada uno de los usuarios, y... que haya suerte.

martes, 17 de junio de 2008

INTERNET EN LINUX

¿Cómo funciona la red ethernet en el sistema operativo linux?

Tal y como suele ser normal en Linux, el sistema proporciona una interfaz virtual para enmascarar u ocultar las complejidades del hardware de comunicaciones. Los usuarios y aplicaciones utilizan estas abstracciones o interfaces para enviar y recibir datos, despreocupándose de las particularidades físicas.
Existen diferentes interfaces de red, en función de su uso y la tecnología empleada. Veámos las más utilizadas comunmente:


lo: localhost o interfaz de loopback. Se utiliza para referirnos a nosotros mismos. Esto es, cuando queramos establecer una conexión de red a nosotros mismos sólo tenemos que conectar con este interfaz y todo lo demás se realizará normalmente. Por convenio tiene la dirección IP 127.0.0.1.
ppp: peer-to-peer protocol, o protocolo de conexión punto a punto. Cuando hacemos una conexión mediante un modem a nuestro proveedor de Internet, establecemos un enlace punto a punto con él. Éste será el interfaz de red por el que típicamente se transmitirán los datos que deseemos cuando estemos conectándonos a una red por modem.
eth0: interfaz Ethernet. El número 0 indica que es el primer interfaz de red instalado, si tuviéramos varios interfaces de red Ethernet se llamarían eth1, eth2... Cuando nos conectemos a una LAN (Local Area Network) que utilice Ethernet (la mayoría de los casos), nuestras comunicaciones se transmitirán por este interfaz. Existen otros interfaces de red en nuestros sistemas Linux (dummy, slip...), si bien quedan fuera del alcance de este artículo.


Hace unos años la configuración de ppp en linux era un trabajo bastante costoso. A la inherente complejidad de las primeras versiones de las distribuciones de linux, se unía mi corta experiencia en Internet, por lo que cuando conseguí realizar una simple llamada a mi nodo local de la extinta infovía, sentí la misma satisfacción que si hubiese encontrado vida extraterrestre. Hoy en día esto ha cambiado radicalmente, existen infinidad de asistentes para la configuración de la conexión mediante ppp (kppp, reciéntemente explicado en +Linux) y todo se reduce a introducir nuestros datos de conexión y realizar la llamada. Por ello no vamos a ahondar más en este tema, sólo deciros que wvdial es un asistente muy recomendable si utilizáis este tipo de conexiones.
La configuración de un interfaz de red Ethernet en Linux es algo que todos deberíamos conocer ya que muchos de los sistemas Linux están en un entorno LAN, bien como servidores, bien como estaciones de trabajo. El primer factor que tendremos que tomar en cuenta es el modelo de tarjeta Ethernet que disponemos. Existen muchas distribuciones que nos ahorran conocer esto, pero vamos a ponernos en el peor de los casos: no disponemos de ningún asistente para instalar la tarjeta y no la hemos comprado nosotros mismos. A pesar de que esto pueda parecer un verdadero reto, con un par de trucos podremos salir de este embrollo fácilmente.
Lo primero en lo que deberemos fijarnos es en si es una tarjeta EISA o PCI. Si nuestro sistema Linux es un ordenador medianamente nuevo, casi sin lugar a dudas se tratará de una tarjeta PCI, pero si estamos en un 386, 486 o primeras versiones de Pentium, hay bastantes posibilidades de que sea una EISA. Lo mejor de todo es quitar la tapa del ordenador y mirar a dónde está conectada la tarjeta: si es un conector alargado, de unos 13 cms y típicamente negro, se tratará de un slot EISA; si por el contrario es un conector más pequeño, de unos 8 cms de largo y normalmente blanco, es un slot PCI.

Una vez hecha esta comprobación, deberemos cargar el módulo que dé soporte a nuestra tarjeta. Si se trata de una tarjeta EISA, intentaremos cargar el módulo para tarjetas "NE2000 compatibles" ("NE2000/NE1000 support", tened cuidado de no elegir NE2000 pci). En el caso de ser una tarjeta PCI, lo normal es que dispongan del chip 8029 si son de 10 Mbps o el 8139 si son de 100 Mbps.


Para probar el módulo y ver si el sistema reconoce la tarjeta haremos uso del comando "modprobe". Con él probaremos si el módulo es adecuado. Veámos cómo sería la sintáxis para cargar el módulo (desde una shell de root) necesario para una tarjeta pci con el chip 8139 (100 Mbps): # modprobe rtl8139
8139too Fast Ethernet driver 0.9.18a
PCI: Found IRQ 11 for device 00:0c.0
PCI: Sharing IRQ 11 with 01:00.0
eth0: RealTek RTL8139 Fast Ethernet at 0xda801000, 00:c0:26:a0:7f:fc, IRQ 11
eth0: Identified 8139 chip type 'RTL-8139B'


De esta manera hemos cargado el módulo para la tarjeta PCI y el sistema nos ha devuelto un mensaje confirmando que ha encontrado la tarjeta en la IRQ 11. Si el sistema nos indica algún error, deberemos asegurarnos de que ese es el módulo adecuado para nuestra tarjeta o probar otro similar. Para una tarjeta a 10 Mbps, en lugar de cargar ese módulo, cargaríamos normalmente el módulo "ne2k-pci".


Vamos a ver ahora un ejemplo para tarjetas EISA. En principio el proceso es muy similar, si bien habitualmente hay que especificar a mano la IRQ y la IO Address que utilizará la tarjeta. Para la gran mayoría de las tarjetas de red EISA, podremos utilizar los valores io=0x300 y irq=3, ó io=0x340 y irq=5 (consultad el manual de la tarjeta si podéis). Veámos cómo sería: # modprobe ne io=0x300 irq=3
NE*000 ethercard probe at 0x300: 00 c0 26 80 15 93
eth0: NE2000 found at 0x300, using IRQ 3.

Ya tenemos instalado el módulo de nuestra tarjeta, vamos a asegurarnos que lo hemos cargado correctamente. Para ello utilizamos el comando "lsmod" que muestra un listado de los módulos cargados: # lsmod
Module Size Used by
serial 19564 1 (autoclean)
ne 6272 1
8390 6040 0 [ne]
unix 10212 89 (autoclean)
En esta lista podemos observar como el módulo "ne" ha sido cargado correctamente.
Una vez aquí, podemos olvidarnos de todas las complicaciones a nivel de hardware. Centrémonos ahora en la configuración de nuestra dirección IP, máscaras de red, servidores DNS, etc. Para proporcionar una dirección IP a nuestro interfaz de red (eth0), utilizaremos el comando "ifconfig": # ifconfig eth0 192.168.0.3
Así habremos asignado al interfaz eth0, la IP 192.168.0.3. Si no definimos la máscara de red, ifconfig le asignará la que es propia a esa familia de direcciones IP (en este caso 255.255.255.0, por ser 192.168.0.3 de clase C). Si nuestro administrador de redes ha establecido subredes y debemos usar una máscara distinta a la estándar, podremos indicarlo en el comando ifconfig, por ejemplo: # ifconfig eth0 192.168.0.3 netmask 255.255.244.0

Nuestro interfaz de red ya tiene IP y podrá acceder a todos los equipos de su misma red, pero si quiere acceder a equipos de redes diferentes, necesitará establecer una dirección de pasarela (gateway) que nos comunique con otras redes. Para fijar nuestra dirección de pasarela, haremos uso del comando "route": # route add default gw 192.168.0.1
Es decir, añadimos una ruta diciendo que el gateway o pasarela por defecto será la IP 192.168.0.1. Todas las peticiones a IPs que no estén en nuestra red, las haremos a través de esa pasarela.
Después de configurar nuestra IP y la pasarela por defecto, estaremos en condiciones de llegar a cualquier IP a la que nos de acceso dicha pasarela. En este caso, los ejemplos de este artículo me han servido para configurar uno de mis ordenadores de mi pequeña LAN doméstica. A todos les he asignado una IP inventada por mí (en este caso 192.168.0.*), y mi router ADSL tiene como IP interna 192.168.0.1. Así, toda petición que no sea a otro ordenador de mi casa, se pedirá al gateway por defecto (192.168.0.1), y él (el router ADSL) lo encaminará hacia fuera (Internet). Para probar si llegamos desde nuestra máquina a otra máquina a través de la red, se suele utilizar el comando "ping": # ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=255 time=0.7 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=0.4 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=255 time=0.4 ms
--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.4/0.5/0.7 ms

Este comando lanzará un paquete ICMP de 64 bytes contínuamente al destino indicado, y verá si el destino nos responde, indicando el tiempo transcurrido (time=0.7 ms). Si no lo detenemos con Control+C, estará indefinidamente lanzando paquetes ICMP y esperando su respuesta.
Lo único que nos falta para terminar de configurar correctamente nuestra conexión Ethernet es establecer quién será nuestro servidor de nombres DNS. Para ello es necesario editar dos ficheros:
/etc/host.conf
/etc/resolv.conf El primero de ellos indica cuál será la fuente de las correspondencias dirección URL <-> dirección IP, ya que esta traducción puede hacerse preguntando a un servidor DNS o utilizando un fichero (/etc/hosts) que tenga esas correspondencias. Normalmente lo que se hace es utilizar ambas cosas, servidor y fichero, y poner en el fichero sólo las direcciones locales que no se preguntan al DNS. En el fichero /etc/resolv.conf indicaremos las direcciones IP de nuestros servidores DNS. Veámos unos ejemplos muy simples de lo que podría ir en cada uno de estos ficheros: # cat /etc/hosts
127.0.0.1 localhost
# cat /etc/host.conf
order hosts, bind
# cat /etc/resolv.conf
nameserver 194.179.1.100
nameserver 194.179.1.101
En el primer ficheros (/etc/hosts) únicamente tenemos la correspondencia entre nombre y dirección IP para 127.0.0.1, es decir, localhost. El resto se preguntará al servidor o servidores DNS. En el segundo fichero (/etc/host.conf) indicamos cuál será el órden para preguntar acerca de direcciones IP. En nuestro caso primero miraremos el fichero hosts (/etc/hosts) y posteriormente preguntaremos a los servidores DNS (bind). En el tercer fichero indicamos qué servidores DNS utilizaremos. El órden influye, por lo que 194.179.1.100 será nuestro servidor DNS primario, y 194.179.1.101 el secundario.
Ya está, si todo ha ido bien, nuestro navegador encontrará las páginas que solicitemos, podremos conectarnos a servidores ftp, pop3, etc. Para comprobarlo, vamos a ver si llegamos con un ping a www.linux.org, por ejemplo: # ping www.linux.org
PING www.linux.org (198.182.196.56): 56 data bytes
64 bytes from 198.182.196.56: icmp_seq=0 ttl=234 time=261.1 ms
64 bytes from 198.182.196.56: icmp_seq=1 ttl=234 time=257.9 ms
64 bytes from 198.182.196.56: icmp_seq=2 ttl=234 time=255.0 ms
64 bytes from 198.182.196.56: icmp_seq=3 ttl=234 time=258.5 ms
64 bytes from 198.182.196.56: icmp_seq=4 ttl=234 time=257.1 ms

--- www.linux.org ping statistics ---
6 packets transmitted, 5 packets received, 16% packet loss
round-trip min/avg/max = 255.0/257.9/261.1 ms

LISTO YA TENEMOS CONFIGURADO EL INTERNET :=)

CentOS 4.4 -- Wifi

A continuacion veremos como configurar para tener internet inalambrico en el sistema operativo centos

Habilitar el repositorio del yum para que pueda descargar los archivos que necesito, creando un archivo de la siguiente forma:

/etc/yum.repos.d/atrpms.repo
[atrpms-stable]name=RHEL 4 $releasever - $basearch - ATrpmsbaseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stablegpgcheck=1enabled=1
[atrpms-testing]name=RHEL 4 $releasever - $basearch - ATrpmsbaseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testinggpgcheck=1enabled=1

En donde se pone enabled en ambos casos, porque a veces atrpms hace configuraciones raras y no es conveniente tener su repositorio activo permanente, sino solo cuando se le requiera.
Una vez hecho esta configuración corren en el yum lo siguiente:
yum install madwifi-hal-kmdl-`uname -r`yum install madwifi-kmdl-`uname -r`yum install wpa_supplicantyum install wpa_supplicant-gui

Una vez que instaló todo, agregan lo siguiente en el /etc/modprobe.conf
alias ath0 ath_pcioptions ath_pci autocreate=sta
Y de ahi la mas facil, le dan reboot para que cargue todos los módulos y el kudzu encuentre la tarjeta wifi.

Una vez que el sistema regresó, lo que hacen es pasar el key encriptado, de la siguiente manera al archivo de configuración del wpa_suplicant

/usr/sbin/wpa_passphrase ESSID “LA_CLAVE_WPA_PSK” >> /etc/wpa_supplicant/wpa_supplicant.conf
Todo esto en una sóla línea, a mi con esta clave no me funcionó, no se si es porque la tarjeta de red y el wifi estaban en la misma LAN y se hicieron conflicto, lo que hice fué copiar el key del WAP 3com tal cual.

Abren el archivo /etc/wpa_supplicant/wpa_supplicant.conf y dentro del network que les ha creado, ponen entre las llaves esto.
key_mgmt=WPA-PSKproto=WPA

Ok, de ahi, bien la prueba de rigor, levantar la tarjeta a ver si es que camina. Le tienes que dar directamente estos comandos a la consola

iwconfig ath0 essid “TUESSID”ifconfig ath0 TU_IP netmask TU_MASCARA up/usr/sbin/wpa_supplicant -dd -Dmadwifi -iath0 -c /etc/wpa_supplicant/wpa_supplicant.conf

La últimas 2 líneas las ponen en una sola linea.
De ahi empezó un calvario de un buen rato, porque no se conectaba y daba un mensajes de error. De ahi hice 2 cosas, cambie el key, como lo puse mas arriba y en las finales se me ocurrió desconectar el cable de red y darle down a la eth0.
Entonces apareció el bendito mensaje que ya se conectó.

CTRL-EVENT-CONNECTED - Connection to AP_ADDRESS completed (auth)

Ojo, que si no ven este mensaje, ni lo han logrado, tienen que ver que es lo que está sucediendo e intentarla varias veces, pero voilá, ya estaba conectado.
Entonces como ya estaba todo ok, lo que hice fué ponerlo en automático para que se pueda levantar la interfase sin mas trabajo, y lo hice de la siguiente manera, (disculpen, mi CentOS está en español):

Aplicaciones / Configuración del Sistema / Red

Que lo que se hace para que tenga la configuración de una vez y se levante automático. No se olviden de salir y grabarDe ahi lo que hacen es para que se levante el WPA-PSK que es agregandole la siguiente instrucción al final del archivo /etc/sysconfig/network-scripts/ifup-wireless y le agregan lo siguiente al final

/usr/sbin/wpa_supplicant -w -B -Dmadwifi -iath0 -c /etc/wpa_supplicant/wpa_supplicant.conf

En una sóla línea. Y con esto listo, pueden probar para ver si es que levantó correctamente.

/etc/init.d/network restart