Archivos para 25/03/08

Servidor en una máquina Linux

Se me ocurrió que era hora ya de entrarle a la configuración de servidores en Linux. Hasta ahora, sólo había conseguido echar a andar un servidor HTTP en linux, para uso local solamente, de forma que pudiera hacer pruebas en desarrollos web con PHP que a veces hago. Sin embargo, no había conseguido, y no me había interesado, en lograr esto mismo pero hacia el exterior. Puesto que tengo configurada una red local (LAN) en mi casa a través de un router (un 2Wire), utilizando la dirección IP local que el router le asigna a mi máquina, alguna vez ya había podido acceder a los servicios HTTP de mi máquina desde otra máquina en la LAN.

Pero sucedió que en mi trabajo comencé a utilizar un cliente SSH para Windows para acceder a una máquina Unix, y se me ocurrió hacer la prueba en mi casa… me llevé dicho cliente, y desde el Windows de la PC de mi esposa, accedí con éxito a mi máquina! como si estuviera trabajando directamente en ella… todo comenzaba a sonar muy interesante…

Sin embargo, la dirección IP de mi máquina era local, y acceder a ella desde afuera tenía que implicar algo con el router, como efectivamente descubrí: hay que configurar dicho aparato para que las solicitudes externas por medio de su dirección IP se redirijan a una máquina de la LAN en particular (o en otras palabras, asignarle la dirección IP del router a la máquina en cuestión).

En el router 2Wire se consigue en las configuraciones avanzadas del Firewall, en donde se elige el nombre de la máquina a servir como entrada a la LAN. (Si se desea también acceder a las otras máquinas de la red, debe, si no me equivoco, configurarse el etc/hosts de la máquina que quedó como entrada, para redirigir las peticiones correctamente, esto no lo he hecho aún, pero ya lo probaré a su tiempo :) Cabe hacer notar que en la configuración del router aparece el nombre de la máquina N veces, dependiendo el número de accesos al router que se tengan: conmigo aparece dos veces, una para la conexión alámbrica y la otra para la inalámbrica. Toda esta configuración la di de alta para mi conexión alámbrica únicamente, que para mi es más confiable y rápida que la inalámbrica, con la cual, si estoy trabajando sin cables, no tendré disponible el servidor. A lo mejor es un tabú mío, pero siento que de forma inalámbrica tengo menos seguridad, además de menos velocidad y confiabilidad de mi conexión.

Una vez configurado esto, también en el router hay que establecer el nivel de seguridad que se quiere tener: se puede establecer que ninguna petición externa pase a la máquina seleccionada (lo que no sirve para nada en realidad), o que ciertas aplicaciones entren directamente a la máquina, o que todas las peticiones pasen a ella, ya es cuestión de gustos en aspecto de seguridad. Por otra parte, es muy recomendable a pesar de la opción elegida, configurar el firewall de la máquina que quedó como entrada, para que también filtre ahora sí de manera particular las peticiones de ciertas aplicaciones / puertos abiertos para permitir la entrada desde el exterior.

Obviamente, para que todo funcione, la computadora debe tener levantados ciertos servicios, dependiendo lo que se desee: SSH para sesiones remotas, HTTP para páginas web, FTP para archivos, SMB para compartir archivos como en Windows, etc. De lo contrario, ni de manera local se conseguiría levantar todo esto.

Y así, teniendo el router configurado para asignarle su dirección IP a la máquina elegida, la máquina reiniciada para adquirir la nueva IP, y el firewall configurado también, todo queda listo para tener la computadora abierta al exterior. Lo único que queda es probar :)
Si se dejó abierto el puerto de HTTP (teniendo también instalado un servidor, como Apache por ejemplo), se puede probar localmente, o mejor, desde una máquina externa en algún otro lugar del mundo (con ayuda de un amigo por ejemplo ;) , para que en un navegador de internet cualquiera teclee http://direccion_ip, lo cual debe llevar a mostrar la página de inicio que tenga configurado el servidor HTTP en la computadora en ese momento. Se pueden hacer otras pruebas, teniendo todo bien configurado, para iniciar sesión en la computadora de manera remota, vía SSH, y muchas otras pruebas más, que en mi caso resultaron satisfactorias y que ahora utilizo para trabajar de manera remota en mi computadora ;)

Otro paso no necesario pero sí muy útil es el DNS de la máquina. Hasta ahora todo quedó configurado con la dirección IP del router, pero ¿qué pasa si el servicio de internet que tengo contratado no me asigna una IP fija, sino dinámica, que se puede reasignar en cualquier momento una vez que se desconecte el router? (por cualquier razón: caídas de voltaje, acciones voluntarias o involuntarias, hasta simplemente mover los cables de corriente a donde está conectado!) Esto provocaría que cada que suceda esta situación, debería tomarse nota de la nueva dirección IP de la máquina, para poder trabajar de forma remota en ella, y no solo eso, si otras personas hacen uso de los recursos de la máquina, habría que notificarles apropiadamente de la nueva dirección IP para que la utilicen.

Esto es engorroso, poco práctico y bueno, en pocas palabras por eso y más desde hace años existe el DNS. Con este servicio, se mapea un nombre común (por ejemplo www.google.com) con una dirección IP dada. Si esta dirección cambia, los servidores DNS se encargan de actualizar esta información, y así los clientes web solo deben consultar estos servicios si acaso se topan con que las cosas ya no funcionan como antes…

Sin embargo, este tipo de servicios tiene un precio, a menos claro que se sepa buscar bien :) y que se sienta uno satisfecho con lo que los servicios gratuitos pueden proporcionar. Yo en particular, lo hice en dynDns.org, en donde saqué una cuenta gratuita y después di de alta mi servidor, asignando la dirección IP que en ese momento tenía mi máquina con el nombre invernalia.homelinux.net. De esta manera, en vez de aprenderse la dir. IP, basta con teclear estas palabras para lograr el mismo efecto. Al ser un servicio gratuito, tuve que quedarme con el ‘homelinux.net’ (que tampoco se me hizo mala opción), y además dynDns proporciona otros nombres posibles para el dominio. Un servicio pagado a este mismo sitio permitiría elegir el dominio, y registrarlo, pero con esto me basta por ahora ;)

Además, debe hacerse algo respecto al problema mencionado sobre los cambios de direcciones IP. Lo que debe hacerse aquí es tener algún programa que pueda comunicarse con dynDns.org, y que al detectar el cambio de dirección IP registrado respecto al que ahora tenga la máquina, le avise al sitio de la actualización que debe hacerse. Esto lo logré en mi caso utilizando ddclient, un programita que hace precisamente esto cada vez que se arranca la computadora (y existen un montón de estos programas, para diversos sistemas, dynDns.org da una amplia lista).

Por mientras, mi máquina está normalmente dando servicio de lunes a viernes durante las horas del día (en la ciudad de México), que son las horas en que me encuentro ausente de mi casa por mi trabajo, y dejo mi máquina haciendo algo de provecho :P De noche es menos probable que lo tenga, aunque se da el caso. Y definitivamente en fines de semana es muy poco probable que suceda, primero porque suelo llevarme mi laptop a la Casa de la Juventud, en donde o no me conecto a internet, o si lo hago es solamente para dedicarlo a la labor que hago allá (además de que tendría que configurar mi conexión inalámbrica y el router que tienen allá, y todo un rollo más…) Por otro lado cuando no estoy en la Casa de la Juventud, si estoy utilizando mi máquina, lo suelo hacer en cualquier lugar de mi casa, por lo que uso la conexión inalámbrica, y por lo tanto no da servicio ;) Tal vez, el día que me consiga una computadora de escritorio, deje las cosas conectadas de manera más definitiva…

Apéndice, aplicaciones gráficas y no gráficas vía SSH
Bueno, falta comentar un punto más. Vía SSH puedo iniciar sesión en mi máquina de manera remota, y trabajar en ella como si estuviera frente a la misma. Sin embargo, lo más utilizado normalmente es iniciar sesión en modo texto y hacer uso de los programas en modo texto de Linux. Sin embargo, si se desea, también se pueden correr aplicaciones gráficas, y aquí está el como le hago yo:

Antes que nada, recordar que en Linux las aplicaciones gráficas funcionan vía un protocolo llamado XWindow, o X simplemente. Este protocolo funciona aproximadamente de la siguiente manera: se tiene un servidor X en la máquina que desplegará la aplicacion, y todas las aplicaciones que quieran desplegar gráficos hacen uso de los servicios de este servidor. Ahora bien, el servidor puede estar localmente en la misma máquina que las aplicaciones gráficas, o podría estar de forma remota en una máquina donde quieren ejecutarse las aplicaciones provenientes de otro lugar. Esto es lo que yo hago justamente.

Lo que se necesita es, primero que nada, un servidor X en la máquina que se conectará a mi computadora. Por ahora, puesto que utilizo Windows en mi trabajo (desde donde, secretamente, me conecto a mi compu :P ), necesito entonces un servidor X para Windows. El que yo utilizo es el de Cygwin (www.cygwin.com, hay que bajarse la utilidad de instalación del Cygwin, instalarlo y elegir entre muchas otras cosas que se deseen, el servidor X11, ya instalado se ejecuta Cygwin, modo texto y de ahí correr los scripts para iniciar el servidor en /usr/X11R6/bin, o directamente modo gráfico con los .bat de ese mismo directorio, no importan las aplicaciones gráficas de Cygwin en este caso, son para usar las cosas de manera local, lo que importa ahorita es el servidor X, que se queda ejecutando en Windows en la barra inferior de aplicaciones en segundo plano).

Una vez con el servidor X, el cliente SSH con el que uno se conecte a la máquina remota (yo utilizo PuTTY, pero podría usarse otro, como el mismo de Cygwin para una conexión entre dos versiones diferentes de Linux, aunque entre comillas una de ellas ;) en fin, este cliente debe configurarse también para que las solicitudes X hechas a la máquina remota sean canalizadas vía SSH, en lugar de quedarse allá en mi computadora. Si no se hace esto, al querer ejecutar una aplicación gráfica, simplemente mi computadora intentará ejecutarla allá, y como estoy en modo texto no me va a dejar hacerlo :) por ello la canalización hará que la aplicación gráfica envíe las solicitudes a servidor X también vía SSH y acá el servidor X instalado se encargará del resto ;) Así es como ejecuto aplicaciones gráficas sencillas. Si lo que se quiere es tener un entorno de escritorio y toda la cosa, el rollo es más complicado, aún no lo he hecho yo (tanto por falta de tiempo, como por falta de conocimientos, como porque mi conexión a internet desde donde me conecto es lenta, y creo que saturaría la red si mando llamar el KDE vía remota :P )

Instalar Linux (openSuSE 10.3) en una Toshiba Satellite A215

Introducción (lo que me llevó a escribir este post)

En febrero pasado adquirí una nueva computadora, debido a que la anterior sufrió un percance, y como no puedo estar sin computadora por mucho tiempo (por mi trabajo, por afición y por la Casa de la Juventud), adquirí algo que me siriviera por un buen rato, me agradara y me permitiera además tener un buen sistema operativo en ella para trabajar.

De entrada, la computadora venía cargada con Windows Vista, que sí es muy bonito para muchos, pero que no deja de tener graves defectos: primero que nada es software no libre, con lo que el precio es altísimo y la calidad malísima, tanto del sistema en sí como de la suite de oficina (Office 2007) y demás software acompañante… Además está lleno de problemas de memoria, es lento en muchas ocasiones, en fin… no es del todo de mi agrado. Fue por eso que, así como con mi computadora anterior, decidí instalarle alguna distribución Linux.

Pero como aún así lo necesito (para la Casa de la Juventud, y también para jugar :P ) comencé por particionar el disco duro (160Gb), quedándome con 35 para Vista (partición a la que llamé ‘Videogames’ ;) y el resto lo preparé para Linux. Dicho sea de paso, en esos 35Gb le instalé software libre para Windows: aMSN, the Gimp, OpenOffice, etc. y me olvidé de las versiones piratas o legales pero privadas (carísimas o baratas pero en demo o con poco que aportar) de software como Photoshop, Corel, liveMSN, etc.

La partición la hice con el LiveCD para KDE (mi desktop manager favorito) que me bajé del sitio de openSuSE (http://www.opensuse.org/), pues con el particionador de Windows Vista (chafa para no variar) no me dejaba particionarle menos del 50% para ese tonto S.O. (en principio pensaba dejarle unos 45Gb a Windows, pero en vista de la jalada del particionador de este sistema, mejor lo castigue con 10Gb menos ;) Por otro lado dejé una partición de 75 Gb con formato FAT32, para permitirme compartir información entre ambos sistemas, cosa que me resulta útil en gran extremo. De nuevo, hice uso del LiveCD de SuSE, pues el format de Vista no me dejó formatear tanto espacio, mientras que el particionador de SuSE sí.

Así pues, me quedé con aproximadamente 50 Gb reservados para Linux. Mi plan era particionarlo para los distintos directorios del sistema como hice posteriormente… Aunque podía bajarmelo de internet como ya lo he hecho varias veces antes, esta vez decidí en vez de bajarlo de internet, cooperar con la causa y pedí me enviaran a casa el DVD de openSuSE 10.3, pagando a Novell la módica cantidad de $80 USD (que mas gastos de envío, me terminó saliendo en unos $1000 pesos mexicanos ¿caro? ¡para nada! Aunque Windows Vista cueste solo un poco más, en realidad solo incluye el sistema operativo, la suite de oficina más común cuesta una millonada más, ni que decir del obligado antivirus para Windows, y demás software que si se comprara legalmente sería un precio muchísimo muy prohibitivo, mientras tanto esta distribución de Linux, lo mismo que muchas otras, incluye el sistema, suites de oficina (nótese el plural), juegos, software de utilidad variado, software para trabajar en múltiples campos, utilidades de internet que permiten bajar muchísimo más software sin pagar un quinto más (excepto por la electricidad y la conexión a internet claro :) , y todo por nada de precio, con mucha mayor calidad y la posibilidad de actualizar los programas gratuitamente).

Instalé pues el SuSE en mi máquina y en menos de un día ya lo tenía en el disco, prácticamente todo funcionando. Respecto a las particiones, haciendo un poco de caso del Linux Documentation Project, dejé una partición root (/) con 2Gb, /var con 4Gb, /usr con 15Gb y /home con 25Gb, el resto se lo dejé a la partición swap.

Problemas a los que me enfrenté y el reto de investigar cómo resolverlos

Solamente me atasqué en tres puntos:

  • el video,
  • la tarjeta de red inalámbrica (wireless) y
  • el sonido

Respecto al video, el sistema no me reconoció la tarjeta de video incluida en la lap: una ATI Radeon X1200, y todo se veía a 800×600 pixeles (muy feo para mis gustos actuales), además de no reconocer el 3D que tanto deseaba ;)

Respecto al wireless la tarjeta no era reconocida, y ni utilizando el ndiswrapper pude echarla a andar.

Respecto al sonido, la máquina simplemente no emitía nada de nada.

Así pues, me embarqué en la aventura (satisfactoria, divertida, llena de retos) de buscar vía la conexión alámbrica a internet con la que sí contaba, los medios para resolver estos problemas.

Wireless
Comencé por el wireless. Y como me resultó lógico, comencé a investigar en el sitio de openSuSE. Ahí encontré que efectivamente mi tarjeta wireless (una Realtek 8187B) debía ser instalada por medio de ndiswrapper, pero el driver proporcionado por Realtek no servía en mi caso, así que el consejo de opensuse.org no me sirvió tampoco :( Busqué en varios foros y la verdad me di por vencido, así que decidí enfocarme en el video y hacer lo del wireless después.

Video
Para el video, de nuevo consultando opensuse.org, comencé por seguir los pasos para instalar tarjetas ATI en SuSE. Con ello ya pude conseguir la detección de mi tarjeta, y un modo de video de al menos 1024×768 :) Pero resulta que mi tarjeta (Radeon X1200) no está ni siquiera, al menos explícitamente, listada en las tarjetas ATI en el sitio de AMD!!! Por lo tanto, los tips de opensuse.org para conseguir el 3D tampoco funcionaron :(

Audio
Decidí dejar el 3D para luego, y me fui por el sonido. La tarjeta es una Realtek AC97 (recuerdo que en otra máquina donde instalé Linux, el sonido también era de una Realtek y también me dio mucha lata), y de nuevo los consejos del wiki de openSuSE no me sirvieron de mucho (sin embargo para muchas otras cosas si que ha servido, por ejemplo para la webcam y los controladores propietarios para algunos formatos multimedia que necesitaba ;) El caso es que para no rendirme, me puse a buscar en foros y blogs, ¡y me topé con esto!: http://www.jambitz.com/comunidad/linux/2008/02/22/instalacion-de-ubuntu-710-en-toshiba-a215-sp4057 un post de un usuario de Ubuntu 7.1, con el mismo hardware que yo!!! Y para él ya funcionaba el wireless, el video y el sonido, justamente los mismos problemas que yo tenía!

Wireless!!! (ahora sí, como lo conseguí)
Por ello, dejé el audio a un lado y regresé al wireless. Básicamente lo conseguí de la siguiente forma: el autor de aquel post se topó a su vez con http://www.datanorth.net/~cuervo/rtl8187b/, el post de otra persona que modificó el driver de Realtek (el que no me sirvió en un inicio) para echarlo a andar correctamente (en este caso, hay que bajar la versión modificada por el autor del post, la versión original no me sirvió, y la otra versión modificada por otra persona ni siquiera la probé). Lo que se hace simplemente es bajar la versión modificada, descomprimirla, compilarla como root (con ./makedrv) y listo! Cada vez que se requiera detectar la tarjeta wireless, se ejecuta (como root también) el script ./wlan0up. Se pueden seguir los consejos del README para echarlo a andar automaticamente al encender la computadora, o hacer como yo hice :P Modifique /etc/rc.d/boot.local y agregué path/a/wlan0up. Además en halt.local agregué path/a/wlan0down, el script que da de baja el driver cada vez que se requiere (en este caso, al apagar la computadora).

Audio
En el mismo post que encontré de jambitz, hallé la solución al audio:Se trata de un package encontrado en un sitio FTP (hasta ahora no se bien a quien pertenece, como para mencionarlo y de esa forma agradecerle :S ) El caso es que en ftp://209.216.61.149/pc/audio/realtek-linux-audiopack-4.07b.tar.bz2 se consigue el código fuente, que se compila y ejecuta con ./install (como root) (para esto, hay que asegurarse de tener instaladas las librerías libc6-dev, libncurses5-dev y gettext o similares, yo utilicé YAST para verificar esto, mientras que el autor del post en jambitz utiliza las utilidades de Ubuntu para lo mismo).

El package ejecuta una aplicación modo texto con Curses, a color y toda la cosa, y esta permite instalar la tarjeta de audio detectada. En mi caso es la ATI Technologies Inc SBX00 Azalia, la cual seleccioné.

Por último, debe modificarse también el archivo /etc/modprobe.d/sound, como root obviamente, y agregar la siguiente linea al mismo:

options snd-hda-intel model=toshiba

y al reiniciar la computadora, el audio queda listo!

Video (revisited y con un continuará…)
Y bueno, hasta aquí, ya había resuelto los problemas más graves, pero aún me quedaba el 3D. Mi problema consiste en que el 3D no es detectado, y SaX2 no me permite entonces configurar nada respecto al 3D. Conforme intenté resolver este problema, como describo más abajo, mi problema terminó con que el 3D era detectado, pero aún así el 3D no funciona, pues provoca que la pantalla se distorsione de un modo que no permite hacer nada :(
Ni los consejos del post en jambitz, ni los del wiki de opensuse.org, ni nada que leí aquí y allá me estaba sirviendo. Decidí suscribirme a los foros de opensuse que encontré: http://www.suseforums.net/, http://forums.suselinuxsupport.de/ y http://www.forosuse.org/forosuse/ (este último en español ;) Estuve leyendo bastantes entradas en los tres, y varios consejos a otros foreros que probablemente me servirían. Toda la semana llegaba a mi casa para probar mis ideas, pero en vano. Terminé por escribir para pedir ayuda y describir mi problema, el de la distorsión en aplicaciones 3D en el mejor de los casos (o el de que mi máquina se cuelga completamente con ciertos juegos 3D también). La captura de pantalla del problema, ilustrado cuando intento ejecutar fgl_glxgears, la conservo en:
http://invernalia.homelinux.net/~jstitch/jstitch/linux/fgl_glxgears.png
(el programa fgl_glxgears es como el glxgears, que debe desplegar unos engranes giratorios en 3D, pero es la versión del controlador de ATI).

Y sucede que, si quito el controlador ATI, no tengo ni tarjeta ni 3D por lo que quedarme con los controladores por default, los libres, no me sirve. Instalar los de ATI para mi tarjeta gráfica (que son propietarios), me deja con este problema. Una vez intenté instalar una versión anterior de los controladores pero me dejó sin video, pero olvidé correr el SaX2 -r para ver si así sí jalaba (es una prueba que tengo pendiente por hacer) y en fin… en cuanto al 3D aún estoy en espera de resolver este problema para poder conseguirlo, y jugar con estos efectos y demás cosas en mi linux :) CUALQUIER SUGERENCIA AL RESPECTO ES, POR SUPUESTO, BIENVENIDA

Video (revisited2 pero para otra laptop)
Lo que si pude echar a andar fue esta misma versión de openSuSE en otra laptop un año más vieja que la Toshiba, una Dell (no recuerdo el modelo), de mi esposa. Ahí los problemas del wireless y del audio no se presentaron. Mientras tanto en el video sí se detectó la tarjeta NVidia pero no el 3D, pero siguiendo los pasos del wiki de openSuSE todo quedó resuelto, y al menos ella ya puede gozar de esa ventaja :D (Lo que me lleva a concluir que en cuestión de instalación, las tarjetas NVidia son mucho más fáciles que las ATI :( lástima que se trate de una laptop en mi caso…)

Apéndice
Esta noche logré instalar el 3D exitosamente, coloco un post nuevo para comentarlo, gracias Carlos Rocha!


All we need to do, is make sure we keep talking… (Pink Floyd)

 

Marzo 2008
D L M X J V S
« Feb   Dic »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Blog Stats

  • 6,429 hits

Actualizaciones de Twitter

  • Gloria a Dios en el cielo y en la tierra, a los hombres de buena voluntad: PAZ (Lc 2, 14) y unicamente por eso: FELIZ NAVIDAD! 1 day ago
  • Porque un niño nos ha nacido, un niño nos ha sido dado,y se llamara Admirable Consejero,Dios Poderoso,Padre Eterno,Principe d Paz (Is 9,6) 3 days ago
  • A punto de iniciar otra Navidad juvenil... >:-) 4 days ago