<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4459575960491643708</id><updated>2012-01-24T23:28:41.261-03:00</updated><category term='vhcs2'/><category term='ideología'/><category term='OpenSolaris'/><category term='BigBrother'/><category term='debate'/><category term='software'/><category term='networking'/><category term='Linux'/><category term='seguridad'/><category term='VirtualBox'/><title type='text'>.:: HeCSa blog ::.</title><subtitle type='html'>Un extraño registro de mis experiencias en la red...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-897884120864384166</id><published>2012-01-24T23:24:00.002-03:00</published><updated>2012-01-24T23:28:41.267-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>SPICE - Una introducción para entenderlo</title><content type='html'>(Artículo publicado en la revista Tuxinfo: http://www.tuxinfo.com.ar )&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HV3EYychZ6Y/Tx9nhEAK70I/AAAAAAAABFM/6z5CZ2d4ItI/s1600/spice_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://3.bp.blogspot.com/-HV3EYychZ6Y/Tx9nhEAK70I/AAAAAAAABFM/6z5CZ2d4ItI/s320/spice_1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ya hemos hablado, en varias oportunidades, sobre formas de virtualizar servidores. También hemos abordado los temas relativos a la virtualización de escritorios. Alguna vez hablamos de computación en la nube, y nos maravillamos por la forma en la que este concepto evoluciona y se aplica, cada día, a más elementos que hasta ahora acostumbrábamos usar en forma local. Y es en este tópico en particular donde nace una nueva forma de exportar las interfaces gráficas de los escritorios para alimentar clientes delgados, o PCs que ya no tienen la potencia necesaria para funcionar por sí solas. SPICE, un acrónimo de “Simple Protocol for Independent Computing Environment”, será el invitado de honor de este artículo.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hoy nos pondremos a analizar SPICE, que está emergiendo como una tecnología alternativa, pero altamente mejorada, a los sistemas de escritorios exportados por la red, y que se perfila para ser, en un futuro cercano, el protocolo elegido cuando se deseen las mejores prestaciones en lo que a integración, velocidad y gestión de audio y video refiere.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Dos se vuelven uno&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPICE fue originalmente desarrollado por la empresa Qumranet, quien en su época de independencia corporativa se dedicaba a desarrollar entornos de virtualización de escritorios basados en el uso de KVM (Kernel Virtual Machine). Suena bastante lógico que esta empresa haya trabajado sobre este protocolo si tenemos en cuenta que fueron ellos mismos los que crearon y mantuvieron el mismísimo hipervisor KVM, que hoy en día podemos ver en sistemas operativos GNU/Linux y hasta en OpenIndiana gracias a los aportes y el desarrollo de la empresa Joyent.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Este producto resultó como un subconjunto de su idea original, Solid ICE, que en su momento parecía estar posicionándose como el producto de virtualización de escritorios por excelencia, dado que entregaba sus interfaces mediante el uso de una interfaz web, o un pequeño cliente delgado. Como todos nos podemos imaginar, ICE es parte del nombre SPICE, justamente por ser el acrónimo de “Independent Computing Environment”. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Xmdd9oMgO3U/Tx9npLx6usI/AAAAAAAABFU/98CndCOCZos/s1600/spice_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-Xmdd9oMgO3U/Tx9npLx6usI/AAAAAAAABFU/98CndCOCZos/s320/spice_2.png" width="299" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y como muchas veces pasa en el mundo corporativo, esta pequeña empresa israelí que armaba soluciones de código cerrado para GNU/Linux fue comprada en el año 2008 por Red Hat, quien un tiempo después integró su cartera de productos con los que Qumranet poseía. Por supuesto, abrió su código a las comunidades, permitiéndoles alimentarlo y acrecentarlo para llegar a ser lo que es ahora.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lo que pensamos que es&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Así es que SPICE es una solución de computación remota que provee a sus clientes acceso a sus entornos gráficos y dispositivos (teclado, mouse, micrófono, parlantes, etc.). Logra una experiencia similar a la que se tiene cuando se interactúa con una máquina local gracias al uso de un sistema de análisis de potencia que dependiendo de lo que se posea del lado del cliente puede bien enviar comandos para generar (render) los gráficos del lado del cliente, si éste tiene suficiente potencia, o puede procesar y sólo enviar los elementos necesarios para dibujar pantallas del lado del cliente, si el cliente tiene poco poder de procesamiento.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A diferencia de los protocolos de presentación remota de escritorios, tales como RDP, VNC o ICA, SPICE se presenta como una arquitectura basada en varias capas que interactúan para mejorar la experiencia del usuario. Estas capas son:&lt;br /&gt;&lt;br /&gt;SPICE Driver: Es un componente que se encuentra en cada escritorio virtual. Un escritorio virtual es una de las máquinas virtuales que se podrá generar partiendo de un hipervisor como lo es, efectivamente, KVM.&lt;br /&gt;SPICE Device: Es éste el componente existente en el entorno de virtualización en sí mismo, como ser un hipervisor.&lt;br /&gt;SPICE Client: Este componente reside del otro lado de esta relación, es decir, en el cliente delgado, PC a punto de ser tirada a la basura por vieja, o el navegador. A través de esta capa se accede a cada escritorio virtual.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Desde el punto de vista de la arquitectura, SPICE está compuesto por el protocolo SPICE, el servidor SPICE, y el cliente SPICE. Sus capas de “Driver” y “Device” serán entregadas por un dispositivo QLX y un driver QLX, respectivamente. El dispositivo QLX se encuentra en el paquete de virtulización “qemu”, y el driver QLX en el mismo sistema operativo que exporta su interfaz gráfica.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-86K-BFl6iwg/Tx9nw8ytwrI/AAAAAAAABFc/HdiQxnW3U8g/s1600/spice_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-86K-BFl6iwg/Tx9nw8ytwrI/AAAAAAAABFc/HdiQxnW3U8g/s320/spice_3.png" width="153" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cuando un cliente se conecta a un servidor SPICE, lo hace a través de canales. Cada tipo de canal está dedicado a un tipo de datos en particular. Usa su propio socket, y puede estar encriptado utilizando SSL. Del lado del cliente cada canal será manejado por un hilo de procesamiento separado (thread), lo que nos permitirá definir valores que gestionen el nivel de rendimiento de nuestros escritorios. Si quisiéramos, podríamos aplicar QoS (Quality of Service) a cada thread, y entonces modificar su grado de precedencia dentro del sistema operativo.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; El canal principal se llama “RedClient” y es el responsable de controlar todos los demás. Parte de este control es la creación de canales, su conexión y desconexión, entre otros.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Entre los demás canales encontramos:&lt;br /&gt;&lt;br /&gt;Main: Este canal está implementado por RedClient.&lt;br /&gt;DisplayChannel: Es el responsable de gestionar los comandos gráficos, así como las imágenes y los flujos de video.&lt;br /&gt;InputsChannel: Es quien gestiona la entrada por teclado y mouse.&lt;br /&gt;CursorChannel: Es el que maneja la posición y visibilidad del cursor.&lt;br /&gt;PlaybackChannel: Para nuestra grata alegría, este canal maneja la forma en la cual el servidor envía audio y video al cliente de forma tal de permitir ver, por ejemplo, videos en forma remota con prácticamente ningún tipo de retardo.&lt;br /&gt;RecordChannel: Es el encargado de capturar audio y video del lado del cliente, y enviarlo al servidor.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A diferencia de otros protocolos que envían al cliente actualizaciones de frame-buffer, SPICE envía comandos de gráficos 2D, y hasta 3D, si bien este último aún no está listo. Media hora de horno, y lo podremos disfrutar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Algo un poco divertido&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Veamos, entonces, la forma en la que se establece una conexión entre un cliente y un servidor de SPICE. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; El proceso de conexión de canales es iniciado por el cliente. Éste envía un mensaje (RedLinkMess) al servidor. Entonces, el servidor responde con otro mensaje (RedLinkReply). Cuando el cliente recibe el RedLinkReply examina su código de error, y actúa en consecuencia. En el caso de no haber un código de error (porque no han habido errores) encripta su contraseña utilizando la clave pública que le envió el servidor dentro del mensaje RedLinkreply y se lo envía al servidor. Entonces el servidor recibe la clave, y envía un mensaje más con el detalle del enlace que el cliente debe utilizar. El cliente examina el link, y si es adecuado (se verifica que su código de error coincida con el que el cliente posee) se establece una conexión válida. No es tan terrible, y ocurre en una fracción de segundo.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Si alguna vez hemos viajado en un autobús (colectivo para mis paisanos) sabemos que de tanto en tanto hemos prestado nuestro boleto a un inspector que nos lo solicitaba para saber si habíamos pagado o no. Si habíamos pagado, todos felices. Si no habíamos pagado, bueno, nos bajaban del autobús, generalmente acompañados de algún vocablo o frase mundana que evocaba a un pariente cercano nuestro.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPICE también tiene una forma de controlar boletos (tickets) a través de su sistema de ticketing. Este sistema es la forma que tiene SPICE para asegurarse que el cliente que está sólicitando la conexión es una fuente confiable. El servidor logra esto generando un ticket que contiene una clave y un tiempo de expiración. Cuando el tiempo de la conexión supera este valor, el ticket completo expira.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Este ticket se encontrará encriptado generando una clave RSA de 1024 bits cuya porción pública es enviada al cliente mediante el mensaje RedLinkInfo. El cliente utiliza esta clave para encriptar la contraseña y enviarla de vuelta al servidor a través del mensaje recién comentado, RedLinkMess. Entonces el servidor desencripta la contraseña, la compara con el ticket, y se asegura que se ha recibido dentro del período de tiempo establecido. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Para hacer corta una historia larga, SPICE implementa una forma de comunicación muy parecida a la que tiene el mismísimo protocolo TCP/IP, con formatos propios de ping, por ejemplo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Moverse&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hasta ahora nos hemos focalizado en el caso de tener un servidor y un cliente. Pero ¿qué pasaría si un servidor se debe sacar de línea, o si sencillamente se cae, producto de un mal funcionamiento? Todo está pensado en el protocolo SPICE, y para casos como estos, tenemos a nuestra disposición un conjunto de mensajes que nos permitirán migrar la sesión desde un servidor a otro.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Principalmente, se comenzará enviando mensajes para que se migran los canales de mensajes que el cliente se encuentra utilizando, y que por lo tanto están abiertos. El canal principal será el que utilizará para iniciar el proceso de migración de canales cuando el servidor envía un mensaje al cliente. Entonces éste examina sus componentes, y envía una respuesta al servidor. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Entonces es que el cliente comienza a utilizar los canales de comunicación con el servidor de destino, desafectando de esta responsabilidad al servidor de origen. Así de sencillo es que una sesión pase de un servidor a otro.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Si pensamos en un esquema de computación en la nube, donde no hay uno, sino cientos de servidores funcionando como si fueran uno solo, veremos que este mecanismo es extremadamente útil, ya que nos permite balancear la carga de las conexiones entre los diferentes servidores sabiendo que existe la posibilidad de mover sesiones desde un servidor a otro sin generar inconvenientes en el cliente, entregándole una sensación de continuidad muy buena.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y por supuesto, dado que uno de los usos del sistema de escritorios virtualizados es el de alimentar soluciones de recuperación ante desastres, encontramos en SPICE una excelente opción para entregar escritorios remotos aún cuando un centro de cómputos entero se destruya, pasando a otro centro de cómputos alternativo sin que el cliente note la diferencia.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--Lvb3H0iPL8/Tx9n3KZZa_I/AAAAAAAABFk/Nt-SHGKfRkI/s1600/spice_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="279" src="http://4.bp.blogspot.com/--Lvb3H0iPL8/Tx9n3KZZa_I/AAAAAAAABFk/Nt-SHGKfRkI/s320/spice_4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Si te querés divertir&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Para finalizar este artículo sobre las bondades del sistema SPICE, abordaremos un tema que ha dejado con la boca abierta a muchas personas. Es la capacidad de manejar video y audio en forma remota prácticamente sin retardo entre el servidor y el cliente, inclusive sobre redes WAN como lo es internet.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPICE ofrece muchos mecanismos diferentes de compresión de imágenes que se pueden elegir en el momento de inicializar el servidor, y dinámicamente mientras éste está funcionando. Un método propietario de SPICE es el denominado Quic, basado en el algoritmo SFALIC. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Como siempre, SFALIC es un acrónimo que significa “Simple Fast and Adaptive Lossless Image Compression”. Resulta que este algoritmo ha sido diseñado, desde su base, para entregar compresión a velocidades elevadísimas. Se basa en predicción lineal, y un método de modelado predictivo de control de errores. Por lo tanto, Quic tendrá un manejo predictivo para el envío de imágenes, permitiendo entonces entregar video por medio de redes WAN con un nivel increible de velocidad y exactitud.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Otra opción de compresión es LZSS, o su pariente, el Global LZ (Lempel Ziv), o GLZ, que gestiona cambios en las imágenes para enviar comandos de renderización al cliente. Sin meternos en demasiados detalles, GLZ es un algoritmo que analiza las repeticiones de ocurrencias dentro de una cadena de audio, por ejemplo, y las parametriza para evitar el envío redundante de información. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Imaginemos este último como si escucháramos una canción de discoteca, donde por media hora se escucha el mismo ritmo, las mismas meoldías y el mismo estribillo por períodos de un minuto y medio. No tendría sentido enviar por red media hora de sonidos, si se puede enviar sólo un minuto y medio, y luego un parámetro que especifique la cantidad de veces que se debe repetir. Lo mismo para el video, y así tenemos como resultado un sistema de audio y video bidireccional de alta velocidad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hemos metido nuestra nariz en el protocolo SPICE, y nos hemos enterado que el mundo no termina donde VNC, RDP o ICA nos han dejado. Encontramos que este protocolo, que está en plena producción para entornos virtualizados de escritorios, está siendo mejorado para que se comporte y se maneje de la misma forma en la que hoy usamos VNC, por sólo citar un ejemplo de notable simplicidad.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Esperemos ver en breve estas implementaciones funcionando en nuestros servidores. Como hacemos en estos casos, no podemos sino sacarnos el sombrero ante tan buen producto ;-) . ¡Nos vemos el mes que viene!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-897884120864384166?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/897884120864384166/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=897884120864384166' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/897884120864384166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/897884120864384166'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2012/01/spice-una-introduccion-para-entenderlo.html' title='SPICE - Una introducción para entenderlo'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-HV3EYychZ6Y/Tx9nhEAK70I/AAAAAAAABFM/6z5CZ2d4ItI/s72-c/spice_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-6111241087151679681</id><published>2012-01-24T22:31:00.000-03:00</published><updated>2012-01-24T22:31:46.577-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debate'/><category scheme='http://www.blogger.com/atom/ns#' term='ideología'/><title type='text'>Sobre la originalidad y la reacción</title><content type='html'>&lt;div&gt;Hace ya un buen tiempo tuve este debate con alguien. Ya ni recuerdo qué lo disparó, pero recuerdo haber hablado de esto. No sé si fue alguna medida internacional de esas que nos dejan boquiabiertos, o alguna otra cosa.&lt;br /&gt;La cosa es que, con todo el tema de SOPA y PIPA, otra vez hablamos de estos temas.&lt;br /&gt;Cuando menos nos lo esperábamos, nuevamente apareció la amenaza de tener un Internet censurado. Y no fue sólo una amenaza, ya que algunos sitios, como es el caso de Megaupload, fueron cerrados por el gobierno de un país diferente del mío. No quiero decir con esto que las decisiones de mi gobierno siempre representan mi pensaniento...&lt;br /&gt;Como nota de color, cito un diario de mi tierra que decidió hablar de Anonymous y Sony, aún luego de haber declarado, el mismo Anonymous, que en ESE caso sí no tenía nada que ver. No hay nada que hacer. El que nació para clarinete no llega a saxofón. No tiene nada que ver, pero leyendo sobre SOPA y PIPA en ese diario me encontré con eso. Me hizo reir un rato.&lt;br /&gt;La cuestión es que generalmente nos encontramos ante actitudes desmesuradas por parte de algunas entidades no representativas, o al menos no para nosotros, que apuntan a defender a quien le da de comer. Ante eso, tenemos dos posibilidades. Una es demostrar que podemos también darles de comer (no, no me gusta esa opción), y la otra es reaccionar en consecuencia.&lt;br /&gt;Claro está, todo tipo de reacción es eso: una respuesta a la acción original de alguien o algo.&lt;br /&gt;Entonces, mi idea es bien sencilla, y se basa justamente en la originalidad. Es decir basta a todo este juego de reacciones, y comenzar a tener acciones originales, que apunten al beneficio de la comunidad informática en general, y a la libertad de que gozamos.&lt;br /&gt;Entonces, eso implicaría una nueva organización que esté completamente de espaldas al esquema de control por parte de entidades como aquellas de que hemos tenido tristes noticias últimamente, manejada por personas que sí se interesen en lo que esta tecnología (léase: ideología) tiene para ofrecer.&lt;br /&gt;Hay un millón de cabos sueltos en este esquema de originalidad, así que agradeceré que los que lean esto le pongan y agreguen los pensamientos que se les crucen, ya que mi cabeza está explotando de repentinas ideas viejas, pero muy renovadas.&lt;br /&gt;Salutte!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-6111241087151679681?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/6111241087151679681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=6111241087151679681' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/6111241087151679681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/6111241087151679681'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2012/01/sobre-la-originalidad-y-la-reaccion.html' title='Sobre la originalidad y la reacción'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-8924340727979249096</id><published>2012-01-07T23:52:00.003-03:00</published><updated>2012-01-24T22:54:56.087-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><title type='text'>Otra vez VirtualBox</title><content type='html'>Como lo hago siempre luego de instalar un nuevo sistema operativo en mi máquina, me decidí a agregar el repositorio para que me funcione el YUM de mi Fedora 16 con VirtualBox, y así poder revivir mis máquinas virtuales.&lt;br /&gt;Luego de la instalación del repo y de VirtualBox, en lo que no voy a ahondar porque no tendría sentido considerando que está más que claro en el mismo sitio virtualbox.org, me dispuse a instalar el tan querido Extension Pack de VirtualBox para tener RDP, USB, y algún que otro beneficio en las máquinas virtuales.&lt;br /&gt;Pero la sorpresa no fue muy agradable cuando me encontré con el mensaje "Failed to install the Extension Pack The installer failed with exit code 127: The value for the SHELL variable was not found the /etc/shells file".&lt;br /&gt;Más abajo menciona algo sobre que el incidente ya ha sido reportado.&lt;br /&gt;Así que hurgando por la red me encontré con que en un sistema recientemente implementado se debe instalar, primero, todo el kit de compilación de kernel, y el dkms.&lt;br /&gt;Allá vamos, ejecuté, como root:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;# yum install dkms binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No fue tan terrible, sólo 28 MB de binarios debieron bajar a mi máquina. Entonces nuevamente fui a la carga haciendo doble click en el ícono correspondiente al Extension Pack. Pero nada, el mismo error de antes.&lt;/div&gt;&lt;div&gt;Mirando un poco el comando VBoxManage me encontré con un hermoso parámetro, justamente el "extpack". Efectivamente, era lo que estaba buscando.&lt;/div&gt;&lt;div&gt;No tuve más que ejecutar:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;$ VBoxManage extpack install --replace /home/hecsa/Downloads/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;WARNING: The vboxdrv kernel module is not loaded. Either there is no module&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; available for the current kernel (3.1.6-1.fc16.x86_64) or it failed to&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; load. Please recompile the kernel module and install it by&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sudo /etc/init.d/vboxdrv setup&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; You will not be able to start VMs until this problem is fixed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;0%...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;Progress state: NS_ERROR_FAILURE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;VBoxManage: error: Failed to install "/home/hecsa/Downloads/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack": The installer failed with exit code 127: The value for the SHELL variable was not found the /etc/shells file&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;VBoxManage: error: This incident has been reported.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bueno, otra vez lo mismo, pero esta vez en modo texto.&lt;/div&gt;&lt;div&gt;Lo hice sencillo, confié en la lógica de los mensajes, y por ende de los programadores de este excelente producto, y me decidí a rebootear el sistema para poder tener el módulo compilado. Pero antes, me dije a mí mismo "no será que algún programador, quizá, no es tan brillante como mi cerebro opina, y se olvidó de verificar si quien lo ejecuta es root?", e hice lo mismo como ese usuario, y no como el mío, hecsa.&lt;/div&gt;&lt;div&gt;El resultado fue interesante:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;# VBoxManage extpack install --replace /home/hecsa/Downloads/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;WARNING: The vboxdrv kernel module is not loaded. Either there is no module&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; available for the current kernel (3.1.6-1.fc16.x86_64) or it failed to&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; load. Please recompile the kernel module and install it by&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sudo /etc/init.d/vboxdrv setup&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; You will not be able to start VMs until this problem is fixed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;Successfully installed "Oracle VM VirtualBox Extension Pack".&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si bien me dispuse a rebootear mi maquinilla, me puse a pensar que los programadores se equivocaron en varias cosas:&lt;/div&gt;&lt;div&gt;- Se olvidaron de verificar si el usuario que ejecuta esto tiene permisos de root o no.&lt;/div&gt;&lt;div&gt;- Dicen que no se podrá levantar ninguna VM, pero no es así, dado que sí levantan, pero sin el Extension Pack, al menos hasta que rebootee. Pero luego del reboot, la gran sorpresa: las máquinas virtuales aún no levantaban el USB.&lt;br /&gt;Bien, seguí las instrucciones de ejecutar:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# /etc/init.d/vboxdrv setup&lt;/div&gt;&lt;br /&gt;...y luego volví a probar suerte...pero sin suerte. Los USB aún no se ven, y probaré volver a bootear para ver si ahora sí los levanta.&lt;br /&gt;Luego del reboot, ejecuté de nuevo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# VBoxManage extpack install --replace /home/hecsa/Downloads/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Successfully installed "Oracle VM VirtualBox Extension Pack".&lt;/div&gt;&lt;br /&gt;Wow! Sin erorres! Pero nada es tan bello, el sistema sigue sin reconocer el subsistema USB.&lt;br /&gt;La frustración no tiene límites...qué quieren que les diga...esto con Sun no pasaba...&lt;br /&gt;&lt;br /&gt;[ACTUALIZACIÓN - GRACIAS SALVA!!!]&lt;br /&gt;No olviden agregar Vuestro usuario al grupo vboxusers, de esa forma al reloguearse todo vuelve a estar en su lugar, y el error desaparece.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-8924340727979249096?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/8924340727979249096/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=8924340727979249096' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8924340727979249096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8924340727979249096'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2012/01/otra-vez-virtualbox.html' title='Otra vez VirtualBox'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-3581724436717760040</id><published>2011-08-08T21:55:00.001-03:00</published><updated>2011-08-08T21:56:13.722-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Punk Fluid, the Shorewall</title><content type='html'>&lt;title&gt;&lt;/title&gt; 	 	&lt;style type="text/css"&gt;	&lt;!--		@page { margin: 0.79in }		P { margin-bottom: 0.08in }		A:link { so-language: zxx }	--&gt;	&lt;/style&gt;   &lt;br /&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&amp;nbsp;Para los que ya se cansaron de saber que sus máquinas están abiertas al mundo y no se animaron a jugar con las herramientas que Netfilter posee, en este artículo veremos algunos conceptos iniciales sobre la teoría de filtrado de paquetes en GNU/Linux, apuntando a una implementación del producto Shorewall para una instalación muy típica.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-x24LOQL9N5c/TkCE0SqCp5I/AAAAAAAAAcA/xRJDMZ3Ccdw/s1600/logo3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="66" src="http://1.bp.blogspot.com/-x24LOQL9N5c/TkCE0SqCp5I/AAAAAAAAAcA/xRJDMZ3Ccdw/s320/logo3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&lt;b&gt;La problemática&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	El escenario planteado comienza a tomar forma cuando vemos el estado inicial de nuestra instalación, y el punto al que queremos llegar. De esa forma veremos cómo encarar un proyecto en el cual tengamos que implementar un sistema del tipo firewall, utilizando la mayor cantidad de filtros, redireccionamientos, y demás juguetes posibles. Y todo esto lo haremos implementando el producto Shorewall para simplificar nuestra dura vida.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Originalmente nuestra red sólo tiene una salida a internet, con dirección IP pública variable o fija (no modifica mucho el contenido de este artículo que esto varíe, ya que en el caso de no tener una dirección IP fija, de seguro se podrá utilizar algún servicio de DNS dinámico para los casos de IP variable, como ser dyndns, o no-ip). A través de un pequeño equipo basado en GNU/Linux con dos tarjetas de red, una que se conecta con esta salida pública, y otra apuntando a la red privada, es que todos los integrantes de nuestra empresa están obteniendo salida a Internet utilizando un proxy (léase Squid, o lo que se prefiera. En nuestro caso pensamos en Squid) configurado en el puerto 8008. &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Veamos este diagrama esquemático para tener una idea más acabada de la instalación existente:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-i9LSoXf16q4/TkCE6Wb-r8I/AAAAAAAAAcE/ql_6wivFrFE/s1600/Red_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/-i9LSoXf16q4/TkCE6Wb-r8I/AAAAAAAAAcE/ql_6wivFrFE/s320/Red_1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	El desafío planteado incluye varios elementos a tener en cuenta, como ser:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Todo 	cliente que quiera salir a Internet directamente, y sin configurar 	su proxy en su sistema, deberá ser redirigido automáticamente al 	puerto 8008.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Todo 	protocolo de red diferente de la navegación por Internet deberá 	salir al mundo utilizando enmascaramiento de direcciones IP.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Sólo 	habrá un cliente que tendrá permitido salir a Internet sin pasar 	por el proxy, y tendrá la dirección IP 10.100.100.10.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;La 	red interna continuará utilizando el rango de direcciones IP 	10.100.100.0/24.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Se 	implementará un servidor Web interno, que no deberá ser accedido 	desde afuera de la red. Su dirección IP será 10.100.100.50.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Se 	deberá implementar un servidor de aplicaciones que utilice los 	datos de la base que se encuentra en un servidor con dirección IP 	10.100.100.100. El servidor es PostgreSQL, por lo que se accede a 	sus datos a través del puerto 5432. El software del servidor de 	aplicaciones es un Tomcat, que usa el puerto TCP 8080 para 	funcionar.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;La 	puerta de enlace predeterminada de todos los puestos clientes será 	10.100.100.1, es decir, será el servidor que ahora es un proxy.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	De acuerdo a estas premisas, vemos que el esquema de red original al menos a nivel físico no cambiaría demasiado. Sólo hay un punto que es fundamental y que se modificará, que es el correspondiente a dónde se pondrá el servidor de aplicaciones.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Como se pretende que dicho servidor sea visible desde el mundo exterior, y que se conecte con un servidor de bases de datos, tenemos que pensar en que si lo ubicamos dentro de la red interna, quien ingrese a él desde Internet, también estará en posición de violar las demás máquinas de la red interna. Para ello, tendremos que crear una nueva red que permitirá sólo el ingreso desde Internet a través del puerto 80, y sólo el contacto con el servidor de bases de datos a través del puerto 5432. Así es como aparece el concepto de zona desmilitariada, o DMZ. &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	La DMZ es una red que permitirá esta comunicación, de forma que si alguien pudiera ingresar y romper nuestro servidor de aplicacciones, no podría acceder a más que el puerto 5432 de nuestro servidor de bases de datos. Desde afuera de nuestra red, los clientes deberán apuntar a un URL normal, sin invocar el puerto 8080, por lo que de alguna forma tendré que redirigir el puerto 80 al 8080 del servidor de aplicaciones. &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Por otro lado, si estamos hablando de una nueva red, tendremos que pensar, también, en un nuevo rango de direcciones IP. Necesitamos que estas direcciones sean privadas, por lo que hemos definido que las mismas se encuentren en el rango 10.100.150/0. La pata del servidor firewall tendrá la dirección 10.100.150.1, y el servidor Tomcat tendrá la dirección 10.100.150.10.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Con estos puntos en mente, entonces, el esquema de nuestra red queda modificado para tomar esta forma:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZbsORL2178Q/TkCFAjgiOMI/AAAAAAAAAcI/V6yHITKzVUk/s1600/Red_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://2.bp.blogspot.com/-ZbsORL2178Q/TkCFAjgiOMI/AAAAAAAAAcI/V6yHITKzVUk/s320/Red_2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Si se quiere pasar a meter mano, no hace falta leer las secciones con la teoría de lo que implementaremos. Aún así, recomiendo dejar de lado el pragmatismo por un instante, y leerlas para comprender qué es lo que estaremos haciendo, y así poder modificar lo que se exponga en este artículo de forma acorde a nuestra instalación.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&lt;b&gt;Conceptos&lt;/b&gt; &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Netfilter es el nombre que recibe el conjunto de porciones de código que están dentro del kernel de GNU/Linux y que le permiten registrar el comportamiento de las funciones de red utilizadas por cada paquete cuando pasa por un sistema y hace uso de ellas.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Por ejemplo, si un usuario ejecuta el comando “ping” para verificar la existencia de un sistema en la red, la máquina de destino de ese comando debe tener un programa que escuche el protocolo que usa el “ping” (ICMP), y por lo tanto algunas funciones en el kernel que registren el uso de los recursos de red para esta tarea.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	A través de Netfilter podré modificar el comportamiento de cada paquete de red que llegue o salga de una máquina.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Lo más común del mundo es conocer Netfilter no por su mismo nombre, sino por la implementación de programas como “iptables” en los kernels 2.4 y 2.6, por “ipchains” en los kernels 2.2, y por “ipfwadm” en los kernels 2.0. &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	¿Cómo es que funciona, entonces, algo como iptables, y cómo nos ayudará a realizar nuestra tarea? Sencillo, iptables conservará una serie de reglas de coincidencia que permitirán la ejecución de determinadas acciones cada vez que un paquete de red cumpla con alguna de ellas. Entonces, de seguro nos encontraremos con dos partes bien definidas en cada regla:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Una 	regla de coincidencia, donde podré especificar protocolo, puerto, 	dirección IP de origen y de destino, y conjunto de reglas a la que 	quiero agregarla.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Una 	acción o serie de acciones a ejecutar sobre los paquetes de red que 	coincidan con dicha regla.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Por ejemplo, para el caso que queremos implementar, algunas reglas serían:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Si 	un paquete de red quiere ingresar vía Internet, y apunta al puerto 	80, redirigirlo al puerto 8080 del servidor 10.100.150.10 que se 	encuentra en la DMZ.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Si 	un paquete de red tiene origen en la red interna, tiene dirección 	IP diferente de 10.100.100.10, y quiere acceder a Internet, 	redirigirlo al puerto 8008.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Impedir 	el ingreso de cualquier paquete de red, no importa su origen, al 	firewall o cualquier otra red interna, a menos que no ingrese 	explícitamente por el puerto 80.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	La lista de reglas en “pseudocódigo” siguen para representar la realidad de nuestras premisas. He escrito sólo algunas aquí, que repasaremos en el momento de realizar la implementación.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Ahora bien, iptables tiene una sintáxis que no es exáctamente amigable a la hora de generar reglas. Puede ser engorroso, algo confuso, y muchas veces un error nos lleva a tener un problema de seguridad grave. Aquí es donde el programa Shorewall hace su aparición, demostrándonos que todo se puede simplificar considerablemente cuando se quiere.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&lt;b&gt;Shorewall&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Shorewall, una abreviatura de “Shoreline Firewall”, como comentamos más arriba, viene a ser la herramienta que simplificará la configuración de iptables al punto de volverse casi documentada por sí misma. Lo que antes es una serie de reglas larguísima, ahora es sólo unas cuantas líneas en algunos archivos. Cuando Shorewall se ejecuta lee estas líneas de configuración, y con la ayuda de iptables genera todas las reglas necesarias para hacer lo que hemos definido. Y iptables, como vimos más arriba, hace uso de Netfilter para ello. Ahora las piezas del rompecabezas comienzan a encastrar, ¿no?.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Un punto importante a tener en cuenta es que Shorewall no es un proceso demonio que estará en ejecución todo el tiempo, sino que se ejecuta para realizar sus configuraciones, y luego finaliza, por lo que carece de sentido verificar si está o no en ejecución, y sí el verificar si las reglas que hemos configurado están activas. Para esto último, una mirada rápida al archivo /var/log/messages o /var/log/kern.log serán suficientes, así como la ejecución de “iptables -L”.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Shorewall se instala muy fácilmente. Se utilizará “apt-get” o “rpm” de esta forma:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;# apt-get install shorewall&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;(para los sistemas operativos basados en Debian, como ser el mismo Debian o Ubuntu)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Los paquetes para Red Hat, CentOS, Fedora, Suse y demás distros basadas en .rpm se pueden bajar directamente de la página de Shorewall (&lt;a href="http://shorewall.net/"&gt;http://shorewall.net&lt;/a&gt;), e instalar con el comando “rpm -Uvh PAQUETE.rpm”.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Una vez instalados los paquetes, encontraremos ciertos archivos y directorios nuevos, a saber:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Directorio 	/etc/shorewall: en él encontraremos todos los archivos de 	configuración de este paquete a nivel de reglas.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Archivo 	/etc/default/shorewall: ciertas configuraciones de caracter más 	general se encontrarán en este archivo, como ser la orden de 	ejecutar o no Shorewall cuando se invoque. Sirve para generar la 	configuración sabiendo que nadie va a ejecutarlo y, por error, 	dejarnos por ejemplo sin acceso al servidor firewall.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Archivo 	/etc/init.d/shorewall: este archivo estará relacionado por medio de 	links simbólicos con los correspondientes en los directorios 	/etc/rcX.d.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Archivo 	/var/log/kern.log: en este archivo, típicamente, se dejarán los 	mensajes correspondientes a las acciones que se han ejecutado a 	nivel de kernel cuando un paquete de red coincidió con alguna 	regla.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Con todo esto instalado, comenzaremos a transformar nuestras premisas en reglas reales.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&lt;b&gt;Reglas y escuadras&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Shorewall utiliza para su proceso de configuración una serie de alias que permiten asociar zonas de red a tarjetas o conexiones de red. Una zona de red será aquella que tenga determinada condición común, como ser “Red Interna”, “Red Externa”, “Zona Desmilitarizada”, etc.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	En nuestro ejemplo, consideraremos tres zonas de red diferentes; la red interna, que será la que corresponde a todo lo que está dentro de nuestra propia red y que queremos proteger del mundo exterior; la red externa, que comprende ni más ni menos que a todo Internet; y finalmente la zona desmilitariada, que será aquella que contendrá sólo los servidores que queremos exponer parcialmente hacia la red externa, y parcialmente hacia la red interna, sin disminuir por ello el nivel de seguridad. &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Sus nombres de zona serán, entonces, “lan” para la red interna, “wan” para la red externa, y “dmz” para la zona desmilitarizada.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Suponemos que nuestro equipo firewall dispone de tres tarjetas de red, denominadas:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;eth0: 	corresponde a la red interna, o zona “lan”.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;eth1: 	corresponde a la red externa, o zona “wan”.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;eth2: 	corresponde a la red intermedia, o zona “dmz”.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;fw: 	si bien no es una tarjeta de red, se podrán realizar conexiones 	hacia y desde él.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Debemos, entonces, asociar cada tarjeta o conexión de red a una zona dentro de los archivos de configuración de Shorewall. Para ello, editaremos o crearemos el archivo /etc/shorewall/interfaces con el siguiente contenido:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;lan eth0&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;wan eth1&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;dmz eth2&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Sencillo, ¿no? Ahora bien, como Shorewall soporta tanto zonas configuradas con Ipv4, como aquellas con Ipv6, procederemos a editar o crear el archivo /etc/shorewall/zones, donde definiremos cuál de las dos usaremos, o si una zona se trata del mismo firewall. En nuestro caso, será Ipv4:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;fw	firewall&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;lan ipv4&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;wan ipv4&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;dmz ipv4&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	El motivo por el cual se debe dar de alta el firewall dentro de las zonas es que se podrían generar reglas que se apliquen sólo cuando determinado tráfico de red es hacia o desde el firewall, y no a través de él.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Teniendo las asociaciones listas, veremos cuál es el formato que tienen dos archivos importantes: /etc/shorewall/policy y /etc/shorewall/rules.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	En general, el formato será basado en columnas que definirán:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Resultado 	esperado: es el resultado que pretendemos cuando un paquete de red 	coincide con una determinada regla. Por ejemplo, podríamos 	especificar:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;ACCEPT: 	el paquete de red es aceptado.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;DROP: 	el paquete de red es descartado.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;REJECT: 	el paquete de red es denegado. Difiere del anterior en que quien lo 	envía toma conocimiento de esta acción.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;DNAT: 	Se ejerce “NAT” sobre la dirección de destino. En nuestro caso, 	todo lo que llegue al puerto 80 del servidor firewall, será 	redirigido al puerto 8080 del servidor de aplicaciones, y las 	respuestas de dicho servidor saldrán como si nunca hubiera habido 	un redireccionamiento. Por eso se llama “Destination NAT”.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;SNAT: 	si un cliente de la red interna debe realizar un pedido a un 	servidor en la red externa, su dirección será reescrita de forma 	tal que cuando el servidor responda, dicha respuesta llegue 	nuevamente al cliente en cuestión. Por eso se llama “Source NAT”.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Cliente: 	es el punto donde se genera la comunicación de red. Por ejemplo, en 	el caso de una conexión desde Internet hacia nuestro equipo, la 	máquina que hace el llamado por medio de su navegador será el 	cliente.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Servidor: 	es el punto al cual llegarán los paquetes de red. En el caso del 	servidor del proxy, por ejemplo, el cliente será cualquiera de los 	puestos de trabajo, y el servidor estará en algún lugar de 	internet.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Familia 	de protocolos: en este caso, la familia de protocolos podrá ser 	“tcp”, “udp”, “icmp”, etc.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Puerto: 	en este caso, se registrará el puerto al cual se invoca desde el 	lado del cliente. En el ejemplo del servidor de aplicaciones, el 	puerto sería 80.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Comentarios: 	en este campo se colocarán comentarios que nos guíen sobre qué 	afecta esa regla. Por ejemplo, documentar nuestros archivos con algo 	del estilo “Sólo pasan desde Internet hacia 10.100.150.10” 	puede ser muy útil si queremos en algún momento modificar las 	reglas.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Existe un archivo importante que es /etc/shorewall/masq. En ese archivo configuraremos las diferentes redes que enmascararán sus direcciones IP cuando deban acceder a otras. En nuestro caso, lo haremos con los puestos que salgan a Internet y que utilicen un puerto diferente del 80, redirigido al proxy que tenemos en el puerto 8008.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	El formato de este archivo también se basa en el uso de columnas, o campos, y sus usos son los siguientes:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Interface: 	se especifica en este caso cuál será el destino del cual se espera 	recibir respuestas cuando se enmascare una dirección o rango de 	direcciones IP. Por ejemplo, si pensamos en todo Internet, tendremos 	que colocar 0.0.0.0/0.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Dirección 	o rango de origen: aquí configuraremos la dirección o rango de 	direcciones IP que serán enmascaradas cuando deban acceder alguna 	dirección especificada en el campo anterior. Por ejemplo, para los 	puestos cliente, tendremos que colocar 10.100.100.0/0.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Por último, veremos un archivo más, que también se debiera editar o crear, y que es el /etc/shorewall/policy. Este archivo contendrá políticas generales, fuera de lo que son las reglas, que se aplicarán al firewall en general. Su formato en sí es muy parecido al /etc/shorewall/rules, también basado en columnas:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Cliente: 	como vimos antes, desde donde se generan las conexiones.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Servidor: 	ídem, hacia donde van las conexiones.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Política: 	qué se hará en forma predeterminada. Las acciones también podrán 	ser “ACCEPT”, “DROP”, etc.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;Nivel 	de log: en este campo definiremos si queremos que se genere un 	registro en el log cada vez que se produzca un error (“err”), 	sólo por cuestiones informativas (“info”), u otros casos. 	Tengamos en cuenta que puede ser bastante grande un archivo de log 	cuando el tráfico es fuerte, por lo que esto se debe regular bien.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Ahora, definiremos qué es lo que se hará en cada zona, dependiendo de las premisas de que partimos. Para ello, editaremos o crearemos el archivo /etc/shorewall/rules. Veamos cada una de estas premisas.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Premisas 1 y 3: Todo cliente que quiera salir a Internet directamente, y sin configurar su proxy en su sistema, deberá ser redirigido automáticamente al puerto 8008. Sólo habrá un cliente que tendrá permitido salir a Internet sin pasar por el proxy, y tendrá la dirección IP 10.100.100.10.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Para lograr esto, tendremos que pensar que el cliente será cualquier máquina de la red 10.100.100.0/24 que quiera salir a internet. Por lo tanto, el cliente será “lan”, el servidor será el puerto 8008, el protocolo será de la familia “tcp”, el puerto será el 80, y la acción a realizar será “REDIRECT” con todos ellos, a excepción del cliente 10.100.100.10, que podrá salir a Internet sin pasar por este proxy. La regla resultante será, entonces:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;REDIRECT	lan:!10.100.100.10	8008	tcp	www	&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Notemos que en la sección del cliente, estamos agregando todo lo que provenga de “lan”, y exceptuando la dirección 10.100.100.10 colocándole un “!” antes. Si tuviéramos más máquinas que exceptuar, las agregaríamos separadas por comas, sin espacios. Si por ejemplo, tuviéramos que exceptuar las direcciones 10.100.100.10 y 10.100.100.9, esa expresión se vería reemplazada por “!10.100.100.10,10.100.100.9”.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Premisa 2: Todo protocolo de red diferente de la navegación por Internet deberá salir al mundo utilizando enmascaramiento de direcciones IP.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Para lograrlo, veamos cómo configurar el archivo /etc/shorewall/masq siguendo los lineamientos que vimos antes:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;0.0.0.0/0	10.100.100.0/0&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Así de sencillo es configurar el enmascaramiento de direcciones IP.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Premisa 5: Se implementará un servidor Web interno, que no deberá ser accedido desde afuera de la red. Su dirección IP será 10.100.100.50.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	En este caso, tendremos que realizar, como acción un NAT en el destino, por lo que la acción se llamará “DNAT”. El cliente será Internet en general, el servidor estará en la zona dmz, específicamente en la dirección 10.100.150.10, el puerto invocado por el cliente será el 80, pero el sistema tendrá que enviar los pedidos desde este puerto al 8080. La regla entonces quedará así:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DNAT	wan	dmz:10.100.105.10:8080	tcp	80&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Premisa 6: Se deberá implementar un servidor de aplicaciones que utilice los datos de la base que se encuentra en un servidor con dirección IP 10.100.100.100. El servidor es PostgreSQL, por lo que se accede a sus datos a través del puerto 5432. El software del servidor de aplicaciones es un Tomcat, que usa el puerto TCP 8080 para funcionar.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	En este caso el tema se pone un poco, y solo un poco más complicado. El cliente, como vemos, es el servidor de aplicaciones que tiene la dirección 10.100.150.10 y está ubicado en la zona “dmz”, y el servidor se encuentra en el puerto 5432 de la dirección IP 10.100.100.100 de la zona “lan”. Lo que se hará a nivel de acción será aceptar estos pedidos. La regla entonces quedará así:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ACCEPT dmz:10.100.150.10	lan:10.100.100.100	tcp	5432&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Bueno, tal parece que ya tenemos todas las reglas en su lugar. Sólo nos queda una sección de la configuración que tocar a nivel de reglas, y es el archivo /etc/shorewall/policy.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Una de las cosas que deberé especificar es que todo lo que no esté explícitamente aceptado, cuando se trate de una conexión desde Internet hacia la red interna, o hacia el mismo firewall, estará denegado. Eso se hace sólo con declarar lo siguiente:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;wan	all	DROP	err&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Al agregar como servidor “all” le especificamos a Shorewall que no importa a qué zona un paquete de red se esté dirigiendo, deberá ser eliminado.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Si lo que deseo es un nivel de logueo exhaustivo, en este archivo declararé las reglas:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;lan	all	ACCEPT	info&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;fw	all	ACCEPT	err&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Con estas reglas, ya no queda mucho más por configurar para lograr las premisas que fueron planteadas.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Ahora, podremos modificar el archivo /etc/default/shorewall cambiando la entrada:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;startup=0&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;...por:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;startup=1&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	IMPORTANTE: Veamos que no hemos habilitado el SSH hacia nuestro firewall desde ninguna zona. Si lo queremos dejar habilitado para conectarnos desde nuestra red interna, deberemos agregar una entrada como la siguiente en /etc/shorewall/rules:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ACCEPT	lan	fw	tcp	22&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;...y si queremos acceder a nuestro firewall desde Internet, la regla cambiará para tomar esta forma:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ACCEPT	wan	fw	tcp	22&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Con esto configurado, sólo debemos ejecutar Shorewall con el comando:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# /etc/init.d/shorewall start&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&lt;b&gt;Interfases gráficas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Si bien vemos que la configuración de un firewall profesional, gracias a Shorewall es notablemente sencilla, podría ocurrir que un fanático de los navegadores se encuentre en medio de nuestra tropa de sysadmins, por lo que tendremos que implementar alguna ventana que lo haga felíz.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Una de las aplicaciones difundidas, y de mucho uso, es el denominado “Webmin”, que posee un módulo específico para la administración de firewalls basados en Shorewall.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Recordemos que Webmin usa generalmente el puerto 10000 para funcionar, por lo que antes de activar el firewall debemos agregar una regla que nos permita conexiones desde una determinada red hacia él.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Esto lo lograremos agregando a /etc/shorewall/rules una línea como la siguiente si queremos que se acceda Webmin desde la red interna:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ACCEPT	lan	fw	tcp	10000&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;...o como la siguiente si queremos que se acceda desde Internet:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ACCEPT	wan	fw	tcp	10000&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Ahora instalamos el paquete webmin, su módulo de control de Shorewall, relanzamos los procesos de shorewall con:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1px solid #000000; margin-bottom: 0in; padding: 0.02in;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# /etc/init.d/shorewall restart&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Y con esto terminamos nuestra tarea, dejando a nuestro sysadmin amigo con una sonrisa en su cara, y una ventanita como ésta en nuestro navegador:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-FtjRpD8gQlo/TkCEqv0h9UI/AAAAAAAAAb8/GoJmh5HHkz0/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://1.bp.blogspot.com/-FtjRpD8gQlo/TkCEqv0h9UI/AAAAAAAAAb8/GoJmh5HHkz0/s320/3.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Con estos pocos comandos, como vimos más arriba, hemos configurado un firewall de características profesionales. Con él tenemos protegida nuestra red interna, redirigida nuestra red externa, y hasta contamos con una zona desmilitarizada donde podremos colocar nuestro servidor de aplicaciones conectado a una base de datos sólo por un puerto. &lt;/span&gt; &lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Un aspecto también importante de este tipo de configuraciones es que salvo un consumo demasiado elevado a nivel de tráfico de red, máquinas muy chicas, y que sólo posean la capacidad de tener varias tarjetas de red genéricas pueden servir para armar un verdadero sistema de seguridad perimetral. Espero que hayan disfrutado de los conceptos aquí volcados, y de la configuración de ejemplo que hemos realizado.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;span style="font-family: 'Liberation Sans', sans-serif;"&gt;	Los espero el mes que viene, con más artículos técnicos para depilarnos el flequillo. ¡Nos vemos!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-3581724436717760040?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/3581724436717760040/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=3581724436717760040' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/3581724436717760040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/3581724436717760040'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2011/08/punk-fluid-shorewall.html' title='Punk Fluid, the Shorewall'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-x24LOQL9N5c/TkCE0SqCp5I/AAAAAAAAAcA/xRJDMZ3Ccdw/s72-c/logo3.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-649411869478617473</id><published>2011-01-16T18:37:00.001-03:00</published><updated>2011-01-16T18:44:38.580-03:00</updated><title type='text'>Sobre OpenSolaris, OpenIndiana, IllumOS, Solaris 11, y demás</title><content type='html'>Bueno, ya se esperaba el momento en el cual comience a hablar del tema, y aprovechando mi actual incapacidad de moverme demasiado, que espero, en breve deje de ser tal y me permita volver a buscar el mate y la pava en el piso, acá va un post sobre lo que creo, deberá ocurrir en el breve lapso de tiempo que es este año con las distros más comunes de la tecnología Solaris.&lt;br /&gt;Ya todos conocen la historia, y deben de estar mirando al mundo de los que seguimos y/o codificamos para estas distros como "esos tipos que pierden el tiempo con algo que nadie usa".&lt;br /&gt;Lo cierto es que estamos en uno de esos momentos en los que la inflexión se hace notar demasiado, y la diáspora entre los miembros de una comunidad puede resultar en dos cosas, muy bien diferenciadas:&lt;br /&gt;a) Varias comunidades que se tienen simpatía por haber tenido una raíz común en algún momento de su historia.&lt;br /&gt;b) Un montón de gente que cada tanto se junta en un bar a hablar de las buenas épocas y nada más.&lt;br /&gt;c) La unión de todas las personas que están metiendo los dedos en cada una de las distros para armar una comunidad mucho más grande y con mejores productos.&lt;br /&gt;Creo que había dicho dos...bueno, son tres las opciones. Tengo derecho a meter la pata a veces.&lt;br /&gt;Y cuál es el estado actual de las cosas?&lt;br /&gt;Bien, en la lista de OpenSolaris la gente se mete para ver en qué momento alguien, quizá el mismísimo Jim Grisanzio declara la muerte por cierre del sitio. La punta la metió el grupo de OpenSolaris de Madrid pidiendo que archiven su parte del sitio, y que cierren su lista de correo, dado que no tiene más nada que ver con un grupo de personas que siguen al código abierto. Yo ya lo decía hace tiempo, la madre patria para algunos se suma a la tendencia del paro...bueno, algo de humor negro en estos tiempos. Quizá algún gobernante lea esto y se dé cuenta que es importante hacer algo, pero no con la lista de OpenSolaris de Madrid, sino con el país que le toca conducir. Si quiere meterse en la lista de OpenSolaris de Madrid, ya es tarde...espero que no sea una tendencia.&lt;br /&gt;El canal IRC de la misma lista sirve para que la misma gente que desarrolla en otras distros tome algo de conocimiento sobre las cosas que allí se cocinan, que no son muchas, porque dicho sea de paso, el horno no tiene gas hace rato.&lt;br /&gt;Eso nos lleva a la lista de illumOS, donde pareciera que hay un poco más de movimiento, claro que tenemos a Garrett como moderador-censor-definidor de cada línea de código que se mete allí, y a algún que otro programador malhumorado que cada tanto pone el grito en el cielo porque siente que eso no es democrático.&lt;br /&gt;Quién le dijo a esos programadores que algo democrático podría salir de una iniciativa como esa? Ojalá que así sea, al menos pareciera que hay esfuerzos para que esa sea la tendencia, pero por ahora, parece que la tendencia es seguir los caminos y designios de los mismos malhumorados de unas líneas más arriba.&lt;br /&gt;En este caso el canal de IRC es bastante más divertido. Se definen porciones de código, se piensa cuál será el alcance real del esfuerzo de illumOS, se ahuyenta a todo programdor que tenga ganas de comenzar con esto, que generalmente es alguien que no entiende que si bien está mejor organizado que la mayoría de los IRC's de otras distros, se va a sentir mal antes de poder compilar el código mínimo para tener un illumOS en ejecución.&lt;br /&gt;Luego tenemos OpenIndiana, que parecía como la salvación de la gente que alguna vez apostó mucho de su tiempo en la implementación del viejo OpenSolaris. Esta distro funciona, es una distro en sí misma, lo que significa que una persona no debe ser experta en C/C++, Python, Java y demás para poder instalarla, y dentro de todo se ve bastante amigable.&lt;br /&gt;El problema es el que se esperaba: no hay tantos paquetes directamente en el repositorio, por lo que todo el tiempo salen propuestas para que aparezcan nuevos que contengan estos paquetes. Claro está, si alguien viene de la vieja guardia, como es mi caso, entenderán al segundo cómo hacer para implementar OpenOffice, PostgreSQL, o demás con el sistema de paquetería SVR4, que tantas alegrías me ha dado.&lt;br /&gt;El canal de IRC de esta distro también está más interesante. Mucha gente propone cosas, y mucha otra le explica a la primera que las manos no alcanzan para todo lo que se quiere hacer. Por lo menos en este caso es más democrático que en el anterior.&lt;br /&gt;Solaris 11 lo bajé, lo instalé, lo maldije, y lo desinstalé. Pesa una barbaridad (de seguro alguien del oráculo va a venir a decirme que es mentira, que el uso de CPU en esta distro es un 95,23% menor que en los anteriores desarrollados por los tipos de Sun, que los viejos programadores no sabían nada, que el color rojo es más lindo que el violeta, y otra estupideces), pero tiene novedades interesantes en lo que a ZFS respecta, por ejemplo. La versión es superior a la que teníamos en nuestro OpenSolaris, y también que en el OpenIndiana.&lt;br /&gt;Claro está, tiene el pequeño problema de ser software privativo que el señor Larry entre cirugías y regattas nos permite usar porque es buen chabón.&lt;br /&gt;Pero tengamos en cuenta una cosa importante: si las versiones se comienzan a abrir, entonces estamos ante el problema de no saber en el futuro qué es lo que se podrá o no se podrá montar.&lt;br /&gt;Alguien podría tener un Ubuntu implementado, con su flamante módulo de ZFS, y ver cómo le aparece un mensaje de error que hace referencia a que la versión que tiene es más nueva que la que el sistema operativo soporta.&lt;br /&gt;O alguien puede querer mudar sus containers de una máquina con un ZFS a otra y ver cómo no funciona la migración, alimentando todos los foros del mundo XXXSolaris para que alguien le tire una soga y le permita volver a levantar sus sistemas operativos virtualizados. Parece mentira ne esta época hablar de eso, no? &lt;br /&gt;Por mi parte, mi actitud frente a todo este descontrol es bien clara: seguiré con un grupo de personas con las cuales cada vez que nos juntamos sentimos que estamos haciendo cosas grossas por cada miembro de la comunidad de acá y del resto del mundo, seguiré adaptando paquetes para que se puedan levantar en cualquiera de las versiones de XXXSolaris que aparezcan, y se las seguiré ofreciedo al mundo. Porque sí, porque soy taaaan copado...&lt;br /&gt;Salutte per tutti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-649411869478617473?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/649411869478617473/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=649411869478617473' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/649411869478617473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/649411869478617473'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2011/01/sobre-opensolaris-openindiana-illumos.html' title='Sobre OpenSolaris, OpenIndiana, IllumOS, Solaris 11, y demás'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-2686628550145019468</id><published>2010-07-27T22:51:00.001-03:00</published><updated>2010-07-27T22:52:14.114-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>DRAFT – Compilación de actualizaciones</title><content type='html'>&lt;p&gt;Para compilar el código fuente que cada cierto tiempo se libera, se deben seguir determinados pasos, así como se debe contar con determinada configuración de ambiente de compilación.&lt;/p&gt;  &lt;p&gt;Este capítulo intenta simplificar este proceso a través de una lista de sencillos pasos. La fuente de consulta en caso de dudas es &lt;a href="http://hub.opensolaris.org/bin/view/Community+Group+on/devref_toc"&gt;http://hub.opensolaris.org/bin/view/Community+Group+on/devref_toc&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Armado del ambiente de compilación&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Como regla general, recordemos que para compilar la versión &amp;quot;N&amp;quot;, siempre tendremos que estar utilizando, como mínimo, la versión &amp;quot;N-2&amp;quot;. Eso quiere decir que si partimos de la versión onnv_142, podremos compilar la versión onnv_144, por ejemplo. Luego, podremos compilar la versión onnv_145, o la onnv_146.&lt;/p&gt;  &lt;p&gt;Instalaremos ante todo, desde el repositorio /dev de opensolaris.org, el paquete &amp;quot;developer/versioning/mercurial&amp;quot;.   &lt;br /&gt;Luego, tendremos que instalar el paquete &amp;quot;developer/opensolaris/osnet&amp;quot; desde el repositorio &amp;quot;extras&amp;quot; de pkg.sun.com, para el cual necesitaremos seguir determinados pasos, a saber:&lt;/p&gt;  &lt;p&gt;- Tener una cuenta. Si no la tenemos, ingersaremos a &lt;a href="http://pkg.sun.com/register"&gt;http://pkg.sun.com/register&lt;/a&gt;, y la sacaremos.    &lt;br /&gt;- En el mismo sitio ingresaremos, y solicitaremos nuestro certificado para el repositorio &amp;quot;extras&amp;quot; de OpenSolaris.    &lt;br /&gt;- En la pantalla donde se nos ofrece bajar la clave y el certificado, bajaremos ambos dos. Es importante guardarlos como si fueran hechos de oro y brillantes.    &lt;br /&gt;- Ejecutamos la siguiente secuencia de comandos:    &lt;br /&gt;# mkdir -m 0755 -p /var/pkg/ssl    &lt;br /&gt;# cp -i OpenSolaris_extras.key.pem /var/pkg/ssl    &lt;br /&gt;# cp -i OpenSolaris_extras.certificate.pem /var/pkg/ssl    &lt;br /&gt;# pkg set-authority -k /var/pkg/ssl/OpenSolaris_extras.key.pem -c /var/pkg/ssl/OpenSolaris_extras.certificate.pem -O &lt;a href="https://pkg.sun.com/opensolaris/extra/&amp;nbsp;extra"&gt;https://pkg.sun.com/opensolaris/extra/ extra&lt;/a&gt;    &lt;br /&gt;# pkg list -a 'pkg://extra/*'    &lt;br /&gt;# pkg install developer/opensolaris/osnet&lt;/p&gt;  &lt;p&gt;Si nuestra instalación estaba limpia, cuando instalemos este paquete veremos que también se instalan:&lt;/p&gt;  &lt;p&gt;- developer/build/onbld   &lt;br /&gt;- library/gnome/base-libs    &lt;br /&gt;- developer/parser/bison    &lt;br /&gt;- library/libsigsegv    &lt;br /&gt;- system/library/mozilla-nss/header-nss    &lt;br /&gt;- system/management/snmp/sea    &lt;br /&gt;- SUNWwbdev    &lt;br /&gt;- developer/java/jdk    &lt;br /&gt;- web/server/apache-13    &lt;br /&gt;- SUNWcsl    &lt;br /&gt;- library/apt-util-13    &lt;br /&gt;- SUNWsasnm    &lt;br /&gt;- data/docbook    &lt;br /&gt;- SUNWjsnmp    &lt;br /&gt;- developer/library/lint    &lt;br /&gt;- SUNWadmj    &lt;br /&gt;- developer/astdev    &lt;br /&gt;- text/gnu-gettext    &lt;br /&gt;- web/server/apache-22    &lt;br /&gt;- SUNWwbapi    &lt;br /&gt;- developer/gcc-3    &lt;br /&gt;- library/tooltalk    &lt;br /&gt;- library/apr-13    &lt;br /&gt;- cde/cde-runtime    &lt;br /&gt;- system/header    &lt;br /&gt;- SUNWlibms    &lt;br /&gt;- library/motif    &lt;br /&gt;- library/nspr/header-nspr    &lt;br /&gt;- library/apt-util-13/apr-ldap    &lt;br /&gt;- SUNWwbcou    &lt;br /&gt;- developer/gnu-binutils    &lt;br /&gt;- SUNWlibC    &lt;br /&gt;- developer/lexer/flex    &lt;br /&gt;- developer/macro/gnu-m4    &lt;br /&gt;- system/library/liblayout&lt;/p&gt;  &lt;p&gt;Ahora, debemos instalar el compilador que usaremos. Si instalamos el compilador SunStudio 12 Update 1, tendremos infinitos errores de compilación, dado que el que está homologado, al menos al día de la fecha (07/2010) es el SunStudio 12 (sin el Update 1).    &lt;br /&gt;Entonces, tendremos que bajar dicho compilador del url &lt;a href="http://hub.opensolaris.org/bin/view/Community+Group+tools/sun_studio_12_tools"&gt;http://hub.opensolaris.org/bin/view/Community+Group+tools/sun_studio_12_...&lt;/a&gt;, que nos llevará nuevamente a un sitio donde necesitamos nuestro Sun Online Account.     &lt;br /&gt;En mi caso particular, el archivo que bajé es el sunstudio12-patched-ii-2009Sep-sol-x86.tar.bz2, por lo que ejecutaré, para instalarlo, los siguientes comandos:&lt;/p&gt;  &lt;p&gt;$ su -   &lt;br /&gt;# cd /opt    &lt;br /&gt;# mkdir SUNWspro    &lt;br /&gt;# cd SUNWspro    &lt;br /&gt;# tar jxvf /export/home/hecsa/Downloads/sunstudio12-patched-ii-2009Sep-sol-x86.tar.bz2    &lt;br /&gt;...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Compilación del nuevo código&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Con esos paquetes instalados, ya podremos bajar el código fuente nuevo.    &lt;br /&gt;Debemos ejecutar los siguientes comandos:&lt;/p&gt;  &lt;p&gt;$ su -   &lt;br /&gt;# cd /opt    &lt;br /&gt;# mkdir sources    &lt;br /&gt;# cd sources    &lt;br /&gt;# hg clone ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate onnv_144    &lt;br /&gt;# cd onnv_144    &lt;br /&gt;# hg update onnv_144&lt;/p&gt;  &lt;p&gt;Aceptamos el fingerprint si es la primera vez que ingresamos mediante la utilidad &amp;quot;hg&amp;quot; de Mercurial utilizando ssh. Al finalizar este proceso, tendremos un nuevo directorio llamado &amp;quot;/opt/sources/onnv-gate&amp;quot; con aproximadamente 862 MB. Este valor puede variar según la versión que se esté bajando.   &lt;br /&gt;También debemos, para esta versión, bajar los binarios cerrados, y los de criptografía.    &lt;br /&gt;En nuestro caso, para esta versión, lo haremos desde los URL's: http://dlc.sun.com/osol/on/downloads/b144/on-closed-bins-nd.i386.tar.bz2 y &lt;a href="http://dlc.sun.com/osol/on/downloads/b144/on-crypto.i386.tar.bz2"&gt;http://dlc.sun.com/osol/on/downloads/b144/on-crypto.i386.tar.bz2&lt;/a&gt;.    &lt;br /&gt;Para hacer uso de estos dos archivos, ejecutaremos estos comandos:&lt;/p&gt;  &lt;p&gt;# cd /opt/sources/onnv_144   &lt;br /&gt;# tar jxvf /export/home/hecsa/Downloads/on-closed-bins-nd.i386.tar.bz2    &lt;br /&gt;...    &lt;br /&gt;# mv /export/home/hecsa/Downloads/on-crypto.i386.tar.bz2 .&lt;/p&gt;  &lt;p&gt;Copiaremos y modificaremos el archivo opensolaris.sh:&lt;/p&gt;  &lt;p&gt;# cd /opt/sources/onnv_144   &lt;br /&gt;# cp usr/src/tools/env/opensolaris.sh .    &lt;br /&gt;# vi opensolaris.sh&lt;/p&gt;  &lt;p&gt;Modificaremos las siguientes líneas:&lt;/p&gt;  &lt;p&gt;GATE=testws;   &lt;br /&gt;por    &lt;br /&gt;GATE=onnv_144;&lt;/p&gt;  &lt;p&gt;CODEMGR_WS=&amp;quot;/export/$GATE&amp;quot;;   &lt;br /&gt;por     &lt;br /&gt;CODEMGR_WS=&amp;quot;/opt/sources/$GATE&amp;quot;;&lt;/p&gt;  &lt;p&gt;STAFFER=nobody;   &lt;br /&gt;por     &lt;br /&gt;STAFFER=root;&lt;/p&gt;  &lt;p&gt;Ahora, configuraremos las variables de ambiente necesarias para realizar la compilación:&lt;/p&gt;  &lt;p&gt;# export PATH=/opt/onbld/bin:/opt/SUNWspro/bin:$PATH&lt;/p&gt;  &lt;p&gt;Al final del archivo agregamos estas dos líneas:&lt;/p&gt;  &lt;p&gt;i386_LINT=/opt/SUNWspro/bin/lint; export i386_LINT   &lt;br /&gt;amd64_LINT=/opt/SUNWspro/bin/lint; export amd64_LINT&lt;/p&gt;  &lt;p&gt;Listos para la compilación, ejecutaremos:&lt;/p&gt;  &lt;p&gt;# nightly ./opensolaris.sh &amp;amp;&lt;/p&gt;  &lt;p&gt;Si queremos ver cómo van las cosas que estamos haciendo, sólo tendremos que verificar el archivo log/nightly.log, utilizando el comando &amp;quot;tail -f /opt/sources/onnv_144/log/nightly.log&amp;quot;. También podemos verificar la existencia de varios comandos &amp;quot;dmake&amp;quot; en plena ejecución con el comando &amp;quot;prstat -a&amp;quot;.   &lt;br /&gt;Nótese que en forma predeterminada tendremos en la variable NIGHTLY_OPTIONS del archivo opensolaris.sh la letra &amp;quot;p&amp;quot;, lo que significa que el comando nightly generará, al final de la compilación, un directorio conteniendo todos los paquetes que se han implementado.     &lt;br /&gt;Esos paquetes conforman un repositorio que se encuentra en &amp;quot;/opt/sources/onnv_144/packages&amp;quot;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-2686628550145019468?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/2686628550145019468/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=2686628550145019468' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/2686628550145019468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/2686628550145019468'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2010/07/draft-compilacion-de-actualizaciones.html' title='DRAFT – Compilación de actualizaciones'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-7682775342735213931</id><published>2010-06-20T02:01:00.001-03:00</published><updated>2010-06-20T02:01:51.146-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debate'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ideología'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Sobre Cyborgs y demás yerbas</title><content type='html'>&lt;p&gt;Para los que están acostumbrados a ver salir de mis neuronas artículos sobre tecnologías de código abierto, GNU/Linux y OpenSolaris, u otros más pegados a ciencias duras, la inclusión de éste que tienen en Su poder puede despertar una sensación de considerar que el postre tenía mucho moscato y me cayó mal, dejando casi sin oxígeno al pobre cerebro que intento llevar sobre mis hombros con algo de esfuerzo y dignidad.&lt;/p&gt;  &lt;p&gt;Lo cierto es que este tema siempre me interesó. Lo analicé varias veces sin demasiada profundidad, al menos eso es lo que ahora pienso. Veamos cómo encarar un tema que en un principio puede sonar futurista, y casi salido de un libro de ciencia ficción, pero que se mete cada día más en nuestra vida de una forma casi imperceptible, y para quedarse. Hablemos de cyborgs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Qué es un cyborg?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;La palabra “cyborg” es un acrónimo de “cybernetic organism”, u organismo cibernético. Y la cibernética no es más que una ciencia estudiosa de las “analogías entre los sistemas de control y comunicación de los seres vivos y los de las máquinas; particularmente, el de las aplicaciones de los mecanismos de regulación biológica a la tecnología” (entre comillas por pertenecer al diccionario de la Real Academia Española&amp;quot;).   &lt;br /&gt;Simplificando y contrastando con la imagen que el común de la gente tiene, un cyborg es un organismo que posee parte de su tejido orgánico, y parte conformado por dispositivos mecánicos, o electrónicos.    &lt;br /&gt;Al hablar de “un organismo”, y no un “ser humano”, estamos dividiendo las aguas y separando éste de conceptos como el del “androide”, que es un autómata con aspecto de ser humano. Un cyborg no tiene por qué tener un aspecto humano.    &lt;br /&gt;Un ejemplo de ello son los experimentos que se han hecho en una universidad de Surrey (Inglaterra) utilizando un cerebro de rata contenido en un recipiente capaz de enlazar terminaciones nerviosas a través de un dispositivo bluetooth (enlace inalámbrico para distancias cortas, se utiliza en redes de área pequeña, o portátiles, y de allí su nombre “PAN”) con un robot de tres ruedas y varios juegos de sensores dispuestos para reemplazar ojos, nariz y oídos.    &lt;br /&gt;Por suerte, la sociedad protectora de animales estuvo presente en cada uno de los cientos de experimentos que se hicieron en Surrey. Fueron cientos hasta que se terminó de entender cómo hacer para encender los mecanismos del robot usando el cerebro de la rata. Sí, mataron cientos de ratas hasta que le dieron en el clavo.    &lt;br /&gt;Es especialmente interesante el momento en el que el robot comienza a funcionar como se esperaba, y podemos ver cómo la rata nota que algo le está faltando (todo su cuerpo), por lo que comienza a mover las ruedas del robot de forma desesperante, como buscando algo que no sabemos qué es.    &lt;br /&gt;Por suerte, nos hacemos llamar humanos, y no escatimamos en gastos cuando de lágrimas de rata se trata. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Y yo pensaba que un implante de pelo era antinatural&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si ya lloramos un poco pensando en la pobre rata, veamos ahora un ejemplo de aplicaciones claramente cibernéticas sobre seres humanos.   &lt;br /&gt;Tal parece que nuestro querido amigo Kevin Warwick, también de Inglaterra, pero esta vez desde Coventry (¿será sólo una casualidad que sean todos ingleses, y que vengan de ciudades con nombre de aire acondicionado?), decidió llevar sus estudios sobre cibernética un paso más adelante, y un buen día luego de una sobredosis de “El hombre nuclear” desarrollo algo bastante imaginativo.    &lt;br /&gt;Su desarrollo se denominó “Proyecto Cyborg”, y (por ahora) constó de dos fases.     &lt;br /&gt;En la primera (“Cyborg 1.0”) creó un implante subcutáneo que un grupo de cirujanos dirigidos por él mismo le implantó en el antebrazo.    &lt;br /&gt;Este implante consta de un transmisor RFID (Radio Frequency Identification) gracias al cual la identidad de Kevin es verificada en cada lugar por el cual se mueve, abriendo automáticamente puertas y ventanas, o encendiendo las luces y su computadora cuando él se encuentra cerca.    &lt;br /&gt;Para que tengamos una idea un poco más acabada del nivel de desarrollo que tiene la tecnología RFID en este momento, ya hay cadenas de supermercados que incorporan etiquetas de este tipo en sus alimentos, sabiendo automáticamente cuándo ingresa, es vendido, o vence. En base a eso, se disparan órdenes de compra automáticas a los proveedores para nunca quedar desabastecidos, o para alimentar la estacionalidad de nuestras costumbres como consumidores.     &lt;br /&gt;La segunda fase (“Cyborg 2.0”) es aún más polémica, dado que desarrollo un dispositivo de interface neuronal que luego fue construido por el Dr. Mark Gasson. Este dispositivo fue luego implantado en el sistema nervioso de nuestro amigo Warwick, quien en una primera etapa logró controlar un brazo robot con su pensamiento. Así es, conectó su sistema nervioso a la entrada de internet de la Universidad de Columbia, en Nueva York, y desde ese punto pudo controlar este brazo robotizado.    &lt;br /&gt;La broma clásica en esa universidad por aquellos tiempos (2002) era que con tanta pornografía dando vueltas en internet, era de esperar que Kevin quisiera un nuevo brazo.    &lt;br /&gt;Como a Warwick no lo satisfizo ese experimento, le conectó un distribuidor de señales a su esposa, con quien aún hoy en día puede mantener contactos en forma telepática utilizando también internet como medio de enlace mundial.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;No todo son rosas&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Así es, no todo es color de rosa. Algunos ven el mundo en blanco y negro, como le ocurría al artista plástico Neil Harbisson (sí, adivinaron, también es inglés, pero esta vez de Londres).   &lt;br /&gt;En sus épocas de estudiante Neil conoció a Adam Montandon, un licenciado en cibernética de la Universidad de Plymouth, con quien trabajó en el desarrollo de un dispositivo denimonado “Eyeborg”.     &lt;br /&gt;Este aparato (el eyeborg, no Neil) consta de un sensor frontal que se dispone entre ambos ojos, y una serie de interconexiones que llegan hasta el oído, de forma tal de permitir la conversión de los colores a sonidos.     &lt;br /&gt;Esta invención hizo merecedores a Neil y Adam del premio británico a la innovación. Neil, por su parte, recorrió toda Europa y le asignó a cada país un color que lo identificaría. Su obra se denomina “Capital Color of Europe”.    &lt;br /&gt;Ya que los colores se pudieron traducir en sonidos, Neil llevó esto un escalón más arriba convirtiendo los sonidos en colores, traduciendo las cien primeras notas de varias partituras famosas en colores, consecuentemente entregándonos una espléndida obra denominada “Color Scores”.    &lt;br /&gt;Por suerte, esta historia tiene un final felíz. No matamos ratas, ni esclavizamos esposas controlando cada uno de sus pasos a través de internet.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Cyber-cucatrap&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;En Japón no podían quedarse atrás. En este caso, el desarrollo se basó en un dispositivo de sólo tres gramos de peso (el doble del de una cucaracha, que soporta cargar hasta veinte veces su masa corporal) aplicado sobre la cabeza de una cucaracha.   &lt;br /&gt;Así, se creó una cucaracha que aún estando viva es controlada en forma remota, pudiendo influenciar al resto de su grupo. Me recuerda a ciertos políticos, pero debo ser yo que siempre tengo malos pensamientos.    &lt;br /&gt;Se logró modificar el recorrido de un grupo de insectos y hasta su comportamiento frente a determinadas circunstancias.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Volviendo a la tierra&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Pisando nuevamente el suelo, nos encontramos con ejemplos de cyborgs mucho más cotidianos. Una persona que tenga implantado un marcapasos puede orgullosamente ubicarse dentro de este grupo, ya que sin este dispositivo no podría siquiera vivir.    &lt;br /&gt;En general, hemos dejado de ser seres que se mueven dentro de la pura naturaleza y nos convertimos en dependientes de la tecnología a niveles tales de caer en un colapso nervioso cuando se agota la batería de nuestro celular, o de nuestro reloj pulsera. Ya no sabemos siquiera mirar al cielo para reconocer por la posición de las estrellas si es medianoche o estamos cerca de la madrugada del día siguiente.    &lt;br /&gt;Tampoco podemos oler un alimento y saber cuándo está por descomponerse, nos limitamos a verificar la fecha de vencimiento de una lata. Y lo peor, confiamos ciegamente en que un día antes de ese vencimiento nuestro cuerpo estará a gusto con ese alimento, y un día después estaremos ante las siete plagas por ingerirlo.    &lt;br /&gt;Por lo tanto, en menor medida (¿realmente menor?) nos hemos convertido en cyborgs. O mejor dicho, nos han obligado a aceptar nuestra característica cyborg casi sin chistar.    &lt;br /&gt;Hoy recordaba con una compañera la frase “resistirse es fútil, serás asimilado”, acuñada por la legendaria serie “Star Trek” y sus colonias Borg. Hagan una pausa para suspirar con “SevenOfNine” y sigan adelante.    &lt;br /&gt;Desmenuzando algo de la sociedad en la que he nacido, encuentro que esta frase se hace carne en mí. No puedo resistirme a volverme un cyborg; desde que nací, y aún antes de haberlo hecho, las máquinas han sido un factor de supervivencia para mí. Me he vuelto un adicto a ellas, esta sociedad insertó en mi cabeza un sistema de control neuronal que me impulsa a considerarlas una necesidad, aún cuando realmente no lo sean.     &lt;br /&gt;No es que hayamos perdido la cordura, es la triste realidad. Si cuando ordenás tu placard te aparece la pantalla del Tetris delante tuyo, es momento de consultar con un profesional, y tirar la PlayStation al tacho de basura.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Algo bueno para cerrar&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Basta de mala onda. Seamos felices, encarguemos un Big Mac, y veamos el mundo a través del Google Earth.   &lt;br /&gt;Hace menos de un año tuve el gusto de compartir una conferencia con Rómulo Speratti, un miembro del CaFeLUG (Capital Federal Linux Users Group) tal como lo soy yo. Él se dedico a asombrar al público de la Universidad Tecnológica Nacional formándolos sobre los desarrollos que existen en materia de software libre dedicados a personas minusválidas y discapacitadas. No voy a ahondar en la diferencia que existe entre cada tipo de discapacidad porque si hay alguien que realmente sabe de eso es él, yo soy apenas un neófito, y desde ese día, otro entusiasta esperando en algún momento poder ser un colaborador de sus proyectos.    &lt;br /&gt;Tan abrumado salí de su conferencia, que me puse a investigar más a fondo sobre los temas que había tocado.     &lt;br /&gt;Concretamente, tuve el gusto de implementar un software denomiado eViaCam que sirve para que personas cuadripléjicas, sólo girando su cara, puedan controlar una computadora en forma completa accediendo a páginas web, escribiendo y leyendo mails, o realizando cualquier tipo de trabajo que con una máquina es posible.    &lt;br /&gt;También implementé el sistema Orca en mi computadora, que lee el texto que tengo delante de mí, o magnifica cualquier parte de la pantalla para que pueda verlo más cómodamente.    &lt;br /&gt;Me queda la felicidad de estos inventos, y de recibir a veces algún mail de sus listas de correos, con la ilusión de que fueron escritos por personas que de no haber sido desarrollados, no hubieran podido decirle al mundo lo que sienten.    &lt;br /&gt;Hasta la próxima, mis queridos cyborgs.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-7682775342735213931?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/7682775342735213931/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=7682775342735213931' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7682775342735213931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7682775342735213931'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2010/06/sobre-cyborgs-y-demas-yerbas.html' title='Sobre Cyborgs y demás yerbas'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-8501338171878963590</id><published>2010-05-14T01:22:00.010-03:00</published><updated>2010-07-13T18:07:35.280-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>OpenSolaris y sus servicios</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml" align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p xmlns="http://www.w3.org/1999/xhtml" align="left"&gt;En este artículo se aborda la forma que tiene OpenSolaris de manejar sus servicios.&lt;br /&gt;Veremos que ha cambiado bastante desde la época de Solaris 8 ó 9, e inclusive respecto de la forma en la cual se trabajaba con Solaris 10.&lt;br /&gt;Tenemos, en el caso de OpenSolaris, varias herramientas que nos permitirán armar el árbol de precedencia de procesos a la hora de lanzar un servicio en particular, así como la forma en la cual se paralelizará éste con otros.&lt;br /&gt;Aprendamos a utilizarlos, serán nuestros amigos en la automatización de tareas de arranque, y su diagnóstico nos hará muy sencilla la vida cuando aparezca algún problema.&lt;br /&gt;Para los que creyeron que los artículos anteriores eran light, acá va un desafío a sus neuronas.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Todo es historia&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ya hace un buen tiempo atrás aparecieron tecnologías de hardware que permitieron contar con herramientas de monitoreo y detección de fallas en forma automática. Elementos tales como el termómetro interno nos permiten conocer la temperatura de nuestro procesador, y en base a ello decidir qué hacer en caso que se eleve demasiado. No es raro que alguien esté escribiendo un documento larguísimo, y que antes de salvarlo descubra que su máquina se apaga por tener un ventilador tapado con pelos del perro Caniche Toy que le recomendaron comprar para cuidar la casa.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://lh3.ggpht.com/_0U2xNCbsgec/S-zknHiGaDI/AAAAAAAAAOg/d1MxmDL5fhI/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" alt="image" src="http://lh4.ggpht.com/_0U2xNCbsgec/S-zkoAWP1fI/AAAAAAAAAOk/WXVi8UtW1nk/image_thumb%5B1%5D.png?imgmax=800" border="0" height="218" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;En el caso de servidores de mayor porte, hasta tenemos indicadores que nos dicen cuándo alguna pieza debe ser reemplazada. Así, por ejemplo, tenemos discos, memorias y otras piezas de hardware que tienen como característica ser “hot swap”, es decir, que se pueden reemplazar aún con el sistema funcionando, sin generar ningún tipo de inconveniente. La redundancia es muy común en este tipo de sistemas.&lt;br /&gt;Ahora bien, a nivel de hardware pareciera que nuestra vida está simplificada. ¿Qué pasa a nivel de software? Hasta hace un tiempo atrás, los diferentes sabores de Unix, tanto originales como clónicos, sólo contaban con la posibilidad de lanzar servicios en forma secuencial, y en el mejor de los casos con algún grado de paralelismo.&lt;br /&gt;La forma de monitorear servicios, así como de lograr su lanzamiento considerando dependencias se basaba casi de forma exclusiva en infinidad de scripts no estandarizados que cada sysadmin armaba. Y que debuggeaba cada vez que un servicio se caía.&lt;br /&gt;No era extraño poder casi adivinar la cantidad de versiones de scripts creados, y su fecha de release sólo con mirar el CV de un sysadmin. Los cambios de empresa coincidían con una “prueba productiva” que generalmente terminaba con un botellazo y algunas palabras irreproducibles por parte de sus superiores.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_0U2xNCbsgec/S-zko8ZhGQI/AAAAAAAAAOo/LNxITbeMDGo/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" alt="image" src="http://lh4.ggpht.com/_0U2xNCbsgec/S-zkps3pg-I/AAAAAAAAAOs/e9rd80mmpak/image_thumb%5B3%5D.png?imgmax=800" border="0" height="183" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;Antes configurábamos un script en el directorio /etc/init.d, que luego linkeábamos simbólicamente ("ln -s") hacia los directorios /etc/rcX.d con un nombre que comanzaba con “S” si queríamos que se ejecuten con el argumento “start”, o con “K” si el argumento debía ser “stop”. Pero si necesitábamos verificar la existencia de un servicio previo al lanzamiento de otro, todo volvía a depender de scripts. Y si algo fallaba, lo más común era buscar con comandos como “grep” algún tipo de pista en los logs del sistema.&lt;br /&gt;Teniendo esto en cuenta, OpenSolaris modificó este subsistema al punto de crear un framework completo de gestión de servicios. Así logramos identificar procesos correspondientes a servicios en un único log por cada uno de ellos, separándolos de cualquier otro proceso lanzado por un usuario.&lt;br /&gt;También se generó un subsistema que permite saber en qué momento debe ser ejecutado cada servicio, sus dependencias, las reglas que implican su relanzamiento, la cantidad de relanzamientos antes de considerar que hay una falla que requiere intervención humana, y un formato estandarizado de configuración para todos y cada uno de ellos.&lt;br /&gt;Y si tenemos algún sysadmin enamorado de los scripts, le permitimos que los siga usando como hasta ahora, sin tener que modificar nada.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conceptos previos&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Bueno, creo que todos ya sabemos lo que es un servicio. ¿Lo sabemos? Está bien, para los que no lo tienen muy claro, acá van algunas definiciones de “servicio”:&lt;br /&gt;&lt;br /&gt;- En *nix, lo que se ejecuta en forma no-interactiva, por lo que no debe ser lanzado por un usuario humanamente logueado en nuestro sistema.&lt;br /&gt;- En España, es un sinónimo de “baño”.&lt;br /&gt;- Para el ciudadano común, aquello que le permite tener luz, agua, y gas, y que le es cortado cuando no paga, y a veces cuando paga también.&lt;br /&gt;&lt;br /&gt;Por ejemplo, cuando ingresamos a un sistema mediante SSH o Telnet, lo hacemos gracias a un servicio que “escucha” en un determinado puerto esperando a que algo, como nuestro pedido de ingreso, ocurra. Sin caer en lo obvio, entendemos ahora por qué se llama a los sistemas que nos proveen algún servicio (suenen trompetas), "servidores".&lt;br /&gt;El framework que en OpenSolaris se creó para poder manejar estos servicios recibió el nombre de SMF (Service Management Framework). Él permite estandarizar, por ejemplo, el modelo de estados y la convención de nombres. Asigna dependencias y describe cada uno de los métodos utilizados para rearrancar un servicio en caso de fallas o caídas. Todo esto se encuentra controlado por un proceso demonio llamado “svc.startd”. Es él quien se ocupa de recibir los avisos de procesos o servicios caídos, siendo quien los levanta o notifica en base a las especificaciones que se hayan asignado.&lt;br /&gt;El proceso svc.startd es invocado en forma automática cuando el sistema operativo arranca, de allí que veamos en una de las líneas del archivo "/etc/inittab":&lt;br /&gt;smf::sysinit:/lib/svc/bin/svc.startd    &gt;/dev/msglog 2&lt;&gt;/dev/msglog &lt;strong&gt;El nombre de la rosa &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;De la misma forma en la cual si queremos referirnos a alguien lo hacemos por su nombre y apellido, cuando querramos referirnos a un servicio lo debemos hacer por medio de su nombre.&lt;br /&gt;Entonces, lo primero será saber cómo se nombran los servicios.&lt;br /&gt;En OpenSolaris el nombre de un servicio se denomina FMRI, siglas de “Fault Management Resource Identifier” (más adelante extenderemos la explicación sobre por qué se ha asignado este nombre).&lt;br /&gt;Veamos primero cuáles son los campos que existen en su nombre, para luego llegar a un ejemplo práctico que pueden seguir en sus propias máquinas. Los campos existentes en un nombre de servicio son:&lt;br /&gt;&lt;br /&gt;- &lt;u&gt;scheme&lt;/u&gt;: Indica el tipo de servicio que se está invocando. Puede ser “svc” si se trata de un servicio manejado por SMF, o “rc” si mantiene el viejo esquema de scripts. ¡Sí, desde esta facilidad también podemos administrar los viejos scripts localizados en /etc/init.d!&lt;br /&gt;- &lt;u&gt;location&lt;/u&gt;: Este campo indicará el servidor o sistema donde el servicio esté declarado, o en ejecución. Normalmente estaremos declarando “localhost” en este campo.&lt;br /&gt;- &lt;u&gt;functional category&lt;/u&gt;: Este campo indicará el tipo de servicio que se está invocando, desde un punto de vista funcional. Según esta característica puede ser:&lt;br /&gt;- &lt;u&gt;application&lt;/u&gt;: Se está haciendo referencia, por medio de este campo, a un programa o demonio en particular. El que se nombre de esta forma implicará que no tiene nada que ver con alguna de las categorías anteriores. Ejemplos de “application” son “graphical-login”, que nos mostrará la ventana gráfica por medio de la cual ingresar nuestro usuario y contraseña, o “net-snmp”, que nos permitirá manejar la gestión de servicios SNMP (simple Network Management Protocol).&lt;br /&gt;- &lt;u&gt;system&lt;/u&gt;: Se está invocando un servicio independiente de la plataforma. Ejemplos de esta categoría son “cron” (el gestor de tareas agendadas en forma repetitiva en OpenSolaris o cualquier *nix), o “rbac” (Role Based Access Control).&lt;br /&gt;- &lt;u&gt;device&lt;/u&gt;: Se nombra un servicio que ayuda a cubrir las dependencias originadas en el hardware, como ser algún dispositivo del cual se requiera una entrada o salida para funcionar.&lt;br /&gt;- &lt;u&gt;network&lt;/u&gt;: Refiere servicios de red que ya han sido convertidos de “inetd”. Ejemplos de esta categoría son “nfs” (Network File System), o “ssh”.&lt;br /&gt;- &lt;u&gt;milestone&lt;/u&gt;: Tal como en los viejos sistemas SVR4 teníamos “run levels”, en OpenSolaris tenemos “milestones”. Por lo tanto, esta categoría hará referencia al nivel de ejecución que el sistema operativo tendrá, y a los servicios dependientes que deberán encontrarse en estado de ejecución para considerar que ese “milestone” se ha alcanzado. Para verlo más claramente, un “milestone” podría ser “multi-user”, o “single-user”, por sólo citar un par de ejemplos.&lt;br /&gt;- &lt;u&gt;platform&lt;/u&gt;: Esta categoría hace referencia a servicios que sean específicos al hardware con el cual se está trabajando.&lt;br /&gt;- site: Hacen referencia a la organización del sitio en el cual se esté trabajando. Esta categoría tiene toda la pinta de ser un placeholder, dado que al menos al día d ela fecha no encuentro ninguno que se lance desde ella.&lt;br /&gt;- &lt;u&gt;description&lt;/u&gt;: Tal como se podrán imaginar, es una descripción del servicio. Ni más ni menos.&lt;br /&gt;- &lt;u&gt;instance&lt;/u&gt;: Existen en OpenSolaris (así como en cualquier sistema operativo) servicios que podrán encontrarse en ejecución más de una vez, por ejemplo para entregar algo a más de un cliente. En casos como éste podremos encontrar diferentes instancias de un servicio ejecutándose al mismo tiempo.&lt;br /&gt;&lt;br /&gt;Luego de haber enloquecido con toda esta nomenclatura, vamos a las arenas, y nos ponemos a ver en un simple gráfico cada uno de estos campos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_0U2xNCbsgec/TAcjdEhBjnI/AAAAAAAAAOw/rf0aZnA1tsg/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border: 0px none; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" alt="image" src="http://lh3.ggpht.com/_0U2xNCbsgec/TAcjdilB7TI/AAAAAAAAAO0/J6nyItdkJTY/image_thumb%5B1%5D.png?imgmax=800" border="0" height="137" width="501" /&gt;&lt;/a&gt;&lt;br /&gt;En muchos casos veremos que la “location” se obvia, por lo que el servicio presentado podría ser listado sencillamente como “svc:/network/dns/client:default”.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Isla de los Estados&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Como era de esperarse, los servicios podrán tener diferentes estados, dependiendo de si se han lanzado, si están bajos, si han fallado, etc.&lt;br /&gt;A continuación, un resumen de los estados posibles de un servicio:&lt;br /&gt;&lt;br /&gt;- &lt;u&gt;uninitialized&lt;/u&gt;: Este estado aparece cuando el proceso “svc.startd” aún no ha realizado ninguna acción sobre él. Cuando el sistema está booteando, por ejemplo, se podrían ver servicios en este estado.&lt;br /&gt;- &lt;u&gt;disabled&lt;/u&gt;: El administrador del sistema ha deshabilitado este servicio por algún motivo. Mientras que el estado sea éste, aún con un rebooteo continuará sin levantar.&lt;br /&gt;- &lt;u&gt;offline&lt;/u&gt;: El servicio se encuentra habilitado por el administrador del sistema, pero aún no se ha lanzado, de seguro por estar a la espera de una dependencia que debe ser satisfecha para su correcto funcionamiento. Más adelante veremos cómo se pueden declarar las dependencias para que sean revisadas por un servicio previo a su lanzamiento.&lt;br /&gt;- online: Éste es el estado de felicidad absoluta del administrador de sistemas. Su salario ha quedado justificado por el resto del año. El servicio se ha lanzado, así como todas sus dependencias, y está funcionando. La casa está en orden, y…&lt;br /&gt;- &lt;u&gt;degraded&lt;/u&gt;: El servicio se encuentra online, y funcionando, pero con un nivel de performance degradado. Es el momento de tomar el toro por las astas, leer el log de ese servicio en particular, o ejecutar, como veremos más adelante “svcs –xv” para comprender el motivo por el cual ese servicio se encuentra en ese estado.&lt;br /&gt;- &lt;u&gt;maintenance&lt;/u&gt;: Es éste y no otro el estado por el cual se consume café entre los sysadmines. Algo ha logrado bajar nuestro servicio, y es nuestra misión como mega-plus-super-expertos en el área analizarlo y repararlo en forma adecuada. Pensabas que todo iba a ser mágico…pobre iluso…&lt;br /&gt;&lt;br /&gt;Cuando un servicio aparece con el estado “maintenance”, debemos hurgar en sus fosas nasales hasta encontrar qué causa su malfuncionamiento. Para eso, encontraremos los correspondientes logs en “/var/svc/log”. Cada archivo se corresponde con un servicio en particular. Cada nombre de archivo comenzará con su “functional category” (por ejemplo, “network”), continuará con su “description” (por ejemplo, “ssh”), y finalizará con su “instance”, seguido de la palabra “log” (por ejemplo, “default.log”). El archivo de log correspondiente al servicio de ssh sería, entonces, “/var/svc/log/network-ssh:default.log”. No dolió tanto, ¿o sí?&lt;br /&gt;&lt;br /&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto;" src="http://www.ubp.edu.ar/per/docpt-2001/2-2001/c1402.jpg" height="236" width="350" /&gt;&lt;br /&gt;&lt;strong&gt;Comandos azules&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;OpenSolaris nos entrega una nueva serie de comandos para gestionar los servicios del sistema. Y ellos, como en los casos anteriores, siguen los mismos estándares de las demás novedades de este sistema operativo: son pocos, y muy sencillos de aprender y utilizar.&lt;br /&gt;En este caso, utilizaremos en general, y salvo grandes problemas, sólo cuatro comandos: svcs, svcprop, svcadm y svccfg. Sencillo, ¿no?&lt;br /&gt;Veamos para qué sirve cada uno de estos comandos:&lt;br /&gt;&lt;br /&gt;- &lt;u&gt;svcs&lt;/u&gt;: Entrega información relativa al estado, dependencia, instancias y diagnóstico de procesos. Si nos encontramos que un determinado servicio no parece estar funcionando, utilizaríamos este comando para verificarlo. Veamos algunos ejemplos:&lt;br /&gt;Este comando sólo nos muestra los servicios que se encuentran en ejecución:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs more&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S20sysetup&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S47pppd&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S72autoinstall&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S73cachefs_daemon&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S81dodatadm_udaplt&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S89PRESERVE&lt;br /&gt;legacy_run 17:44:26 lrc:/etc/rc2_d/S98deallocate&lt;br /&gt;online 17:43:35 svc:/system/svc/restarter:default&lt;br /&gt;online 17:43:37 svc:/network/loopback:default&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;El siguiente nos mostrará todos los servicios declarados, estén o no en ejecución:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs -a more&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S20sysetup&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S47pppd&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S72autoinstall&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S73cachefs_daemon&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S81dodatadm_udaplt&lt;br /&gt;legacy_run 17:44:25 lrc:/etc/rc2_d/S89PRESERVE&lt;br /&gt;legacy_run 17:44:26 lrc:/etc/rc2_d/S98deallocate&lt;br /&gt;disabled 17:43:35 svc:/network/physical:default&lt;br /&gt;disabled 17:43:35 svc:/system/device/mpxio-upgrade:default&lt;br /&gt;disabled 17:43:36 svc:/system/svc/global:default&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;Y este último, los servicios que están marcados con problemas:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs –xv&lt;br /&gt;&lt;br /&gt;- &lt;u&gt;svcadm&lt;/u&gt;: Habilita, deshabilita, relanza y administra diferentes instancias de servicios. Si por ejemplo queremos bajar un servicio, o relanzarlo en forma manual, sería éste el comando que podríamos utilizar. Este comando posee varios argumentos que manejarán su comportamiento, dentro de los cuales encontramos:&lt;br /&gt;- enable: Habilita la instancia del servicio especificado. Esto pondrá al servicio como “online”, lo lanzará, y mantendrá su estado entre booteos.&lt;br /&gt;- disable: Ídem caso anterior, pero lo deshabilita.&lt;br /&gt;- restart: Relanza un servicio siempre y cuando el mismo se encuentre en estado “online” o “degraded”.&lt;br /&gt;- refresh: Verifica la nueva configuración del servicio, y solicita a “svc.startd” que la modifique, mientras se encuentra en ejecución.&lt;br /&gt;- clear: Cuando un servicio se fue a estado “maintenance” por algún motivo, y habiendo solucionado la causa raíz del problema, ejecutaremos “svcadm” con este argumento para que limpie dicho estado, y lo relance.&lt;br /&gt;- mark: Si una instancia de un servicio se encuentra en estado “maintenance”, este argumento pone en el mismo modo a todos los servicios e instancias especificados. Si la instancia se encuentra en modo “degraded”, hace lo mismo pero colocándolos en modo “degraded”.&lt;br /&gt;&lt;br /&gt;Analicemos un ejemplo con el servidor web Apache:&lt;br /&gt;Primero, verificamos si Apache se encuentra en funcionamiento:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs apache22&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;online 17:44:27 svc:/network/http:apache22&lt;br /&gt;&lt;br /&gt;Viendo que su estado es “online”, procederemos a bajarlo con el comando:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcadm disable apache22&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs apache22&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;disabled 0:20:36 svc:/network/http:apache22&lt;br /&gt;&lt;br /&gt;Ahora, procederemos a subirlo con el comando:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcadm enable apache22&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs apache22&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;online 0:41:09 svc:/network/http:apache22&lt;br /&gt;&lt;br /&gt;Lo pondremos en modo “maintenance”:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcadm mark maintenance apache22&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs apache22&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;maintenance 0:52:57 svc:/network/http:apache22&lt;br /&gt;&lt;br /&gt;Y finalmente lo pondremos nuevamente en modo online:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcadm clear apache22&lt;br /&gt;&lt;a href="mailto:root@server"&gt;root@server&lt;/a&gt;:~# svcs apache22&lt;br /&gt;STATE STIME FMRI&lt;br /&gt;online 0:54:18 svc:/network/http:apache22&lt;br /&gt;&lt;br /&gt;Nótese que en todos los casos anteriores, no se ha utilizado el FMRI completo para invocar al servicio, sino sólo una parte significativa de su nombre. Esto es posible siempre que no haya más de una instancia de ese servicio´y que no exista otro servicio con la misma “description”, pero con alguno de los demás componentes de su FMRI diferentes. Algo tenía que ser simple, después de todo…&lt;br /&gt;&lt;br /&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto;" src="http://www.ucm.es/info/echi1/imagen/pint/MUNCH.jpg" height="239" width="190" /&gt;&lt;br /&gt;- &lt;u&gt;svccfg&lt;/u&gt;: Configura los parámetros necesarios en cada servicio. También permite importar y exportar configuraciones de servicios. Si es invocado sin ningún FMRI, abre un prompt propio, para trabajar con los diferentes servicios del sistema. Por ejemplo, si se tiene un servicio web basado en Apache, y se desea cambiar el puerto 80 por otro, sería éste el comando a utilizar.&lt;br /&gt;- &lt;u&gt;svcprop&lt;/u&gt;: Entrega un detalle de los permisos y propiedades de un servicio. Si un determinado usuario no puede lanzar un servicio, podríamos comenzar analizando si tiene los permisos necesarios a través de este comando.&lt;br /&gt;&lt;br /&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto;" src="http://hablaele.wikispaces.com/file/view/20071019-marcha_zapatista_subcomandante_marcos.jpg/65231048/20071019-marcha_zapatista_subcomandante_marcos.jpg" height="221" width="211" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Hablemos de milestones&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Cuando obtuvimos el listado de servicios, encontramos varios que tenían entre sus functional categories la palabra "milestone". Un servicio tipo "milestone" forma parte de un grupo que permite, tal como antes ocurría con los niveles de ejecución de un sistema operativo *nix, llevar el sistema a un determinado nivel de ejecución.&lt;br /&gt;Por lo tanto, y como es lógico, encontraremos una determinada analogía entre los niveles de ejecución de los sistemas *nix basados en scripts rc*, y OpenSolaris.&lt;br /&gt;Veamos cuáles son estas correspondencias:&lt;br /&gt;&lt;br /&gt;- : En SMF existe un nivel de ejecución que no existe en otros sistemas operativos, donde sólo el kernel se encuentra en funcionamiento. El nombre de este milestone será "none".&lt;br /&gt;s ó S: Lo que en otros sistemas operativos se consideraba el nivel "single-user", en OpenSolaris recibe, justamente, este nombre: milestone "single-user". Si ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server:/etc"&gt;root@server:/etc&lt;/a&gt;# svcs -a grep milestone grep single-user&lt;br /&gt;&lt;br /&gt;...la salida será:&lt;br /&gt;&lt;br /&gt;online 23:48:29 svc:/milestone/single-user:default&lt;br /&gt;&lt;br /&gt;2: El nivel "2" es considerado como el multiusuario sin recursos compartidos. Si bien se permite el ingreso por telnet, o ssh, no debieran existir, en este nivel, filesystems exportados mediante NFS, o cualquier otro sistema. En OpenSolaris, este milestone se denomina "multiuser". Tal como en el caso anterior, ejecutaremos:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server:/etc"&gt;root@server:/etc&lt;/a&gt;# svcs -a grep milestone grep multi-user&lt;br /&gt;&lt;br /&gt;...y la salida será:&lt;br /&gt;&lt;br /&gt;online 23:48:49 svc:/milestone/multi-user:default&lt;br /&gt;&lt;br /&gt;3: El nivel "3" es el multiuser pero a diferencia del anterior, con recursos compartidos. El equivalente en OpenSolaris es el milestone "multi-user-server".&lt;br /&gt;5: Es el equivalente a mencionar todos los niveles anteriores.&lt;br /&gt;&lt;br /&gt;Por lo tanto, si debiéramos dejar nuestro sistema operativo en un nivel diferente al que actualmente posee, debemos utilizar, como en todos los casos anteriores, el comando svcadm:&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@server:/etc"&gt;root@server:/etc&lt;/a&gt;# svcadm milestone single-user&lt;br /&gt;&lt;br /&gt;El comando anterior lo llevaría a nivel single user.&lt;br /&gt;El conjunto de programas que se ejecutarán en cada nivel se puede explorar de una manera muy sencilla, por ejemplo, revisando el archivo /var/svc/manifest/milestone/single-user.xml.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;dependency&gt;Conclusión &lt;/dependency&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Hemos analizado cómo funcionan los servicios en OpenSolaris, ahora es momento de crear los nuestros propios para los sistemas que implementemos.&lt;br /&gt;Al principio puede ser medio complicado, pero con el tiempo veremos que estos extraños comandos nuevos se nos volverán parte de nuestro día a día.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-8501338171878963590?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/8501338171878963590/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=8501338171878963590' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8501338171878963590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8501338171878963590'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2010/05/opensolaris-y-sus-servicios.html' title='OpenSolaris y sus servicios'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_0U2xNCbsgec/S-zkoAWP1fI/AAAAAAAAAOk/WXVi8UtW1nk/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-1576942340539456717</id><published>2010-05-13T22:04:00.003-03:00</published><updated>2010-05-14T01:04:09.797-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debate'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='ideología'/><title type='text'>Software e ideología</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Hace algunos días grabamos, como siempre hacemos con otros amigos y colaboradores de la revista Tuxinfo, uno de nuestros podcasts. Como siempre, duró algo más de dos horas, que se tradujeron en algo así como una hora y cuarenta minutos luego de editado y recortado.&lt;br/&gt;Entre los temas que tratamos estuvo el de una distribución de GNU/Linux compilada por un grupo de ideología socialista, y que conserva según ellos esta ideología en sus líneas de código. Se presentó un nuevo término, el de software comunitario, a diferencia del que usamos comúnmente, que es software libre.&lt;br/&gt;Ahora bien, en un primer momento, y como análisis urgente, nos viene a la cabeza la idea de considerar este concepto como algo extraño, dado que no entendemos cómo una distribución se pueda considerar socialista, o de cualquier otra facción política.&lt;br/&gt;Cuando pienso en política, recuerdo una charla con un viejo amigo, estudiante él de Filosofía y Letras, que me decía "políticos somos todos, vivimos en una polis en el sentido ámplio de la palabra...ahora bien, representantes políticos son unos pocos agraciados por nuestra confianza a la hora de sufragar". Me gusta y siempre me gustó el juego de romper con las estructuras mentales que uno tiene desde chico, y este amigo es un especialista en eso. Adoro esa actitud casi futbolística de enfrentar todo y plantearse la veracidad o no de cada cosa en teoría ya aprendida.&lt;br/&gt;Si sigo estos conceptos, y me considero porlítico por vivir en la polis, y con eso quiero decir absorber lo que la polis ha determinado para mí, aún cuando me la replantee contínuamente, tengo que pensar que mi código también debiera llevar, embebido, un concepto o una ideología política que, al menos en forma subyacente, demostraría su orígen ideológico.&lt;br/&gt;Pero todos sabemos que eso no es así. En general vamos a programar aunque más no sea un script en base al manual que hemos leído, el apunte que hemos encontrado, o como pudimos. Entonces, no podemos considerar que la ideología es el elemento subyacente en nuestro código. ¿Qué lo es?&lt;br/&gt;Siguiendo con el mismo regimen de razonamiento, lo que haría que una determinada ideología se manifieste en este tipo de productos (seamos sinceros, estamos hablando, al menos en el podcast, de productos de software libre) entonces no es el código en sí mismo, sino la forma en la cual nosotros nos movemos en torno a él.&lt;br/&gt;El compartirlo es una muestra de nuestra ideología. Tal como lo es el hecho de prestar un libro o una prenda a un amigo. ¿Lo es realmente?&lt;br/&gt;¿Cuál es la ideología que nos dice que es mejor compartir para que todos podamos gozar de lo mismo, y cuál la que nos dice lo contrario?&lt;br/&gt;Si tenemos en cuenta a Eric Hoff (muchos me odiarán por citarlo, y otros me amarán. Yo nunca perdoné que acepte un premio de las manos manchadas con sangre, es decir de Ronald Reagan), el socialismo sostiene una tendencia a plantearse lo establecido, y a intentar modificarlo para beneficiar a las clases populares, evitando la pérdida de gobernabilidad del estado por exceso en el poder de las corporaciones, los terratenientes, y demás predadores. La derecha, en cambio, apuntaría a no modificar prerrogativas de poder basado en el capital concentrado, en la raza, la religión, y demás bellezas creadas por el hombre para dividir y mejorar el nivel de vida de unos pocos a costilla de unos cuantos más.&lt;br/&gt;Si seguimos estos conceptos, el proveer a las personas de herramientas libres que pueden utilizar sin pertenecer a una clase tal que las pueda pagar nos podría acercar a la izquierda. Remarco que no estoy hablando del código en sí mismo, sino de lo que con él hacemos, y cómo lo hacemos.&lt;br/&gt;Pero entonces...si somos usuarios de software privativo, y decidimos manejarnos con la tan conocida técnica de entregar nuestra copia al mundo para que la misma sea utilizada sin pagar legalmente una licencia, nos volveríamos izquierdistas, tanto por romper con un esquema de poder, como por hacer justamente en donde más le duele. Casi parece una de las banderas políticas de los partidos que se hacen llamar de izquierda en el país en el que vivo yo.&lt;br/&gt;No quiero volverme un matemático del razonamiento, porque creo carecer del nivel suficiente para hacerlo, pero sí quiero remarcar esto: no depende, tal como antes lo vimos, del tipo de software que utilicemos, sino de lo que con él logramos en los demás, y cómo intentamos romper con las estructuras existentes cuando las mismas estén mirando a grupos diferentes de los populares, al menos pensando en el izquierdismo.&lt;br/&gt;¿Cuál es la conclusión, entonces? ¿Podría ser un ser humano considerado un izquierdista del software si no existiera el software libre?&lt;/p&gt;&lt;p&gt;De acuerdo a lo que estuvimos viendo más arriba, tal parece que sí. Pero claro está, la utilización de esta lógica cuando se quiere aplicar a teorías políticas, a veces falla. &lt;/p&gt;&lt;p&gt;&lt;img height='1' width='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-1576942340539456717?l=hsaltiel.blogspot.com'/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-1576942340539456717?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/1576942340539456717/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=1576942340539456717' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/1576942340539456717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/1576942340539456717'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2010/05/software-e-ideologia.html' title='Software e ideología'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-3501960353269179543</id><published>2010-03-08T01:02:00.002-03:00</published><updated>2010-03-08T02:04:44.723-03:00</updated><title type='text'>Bio (for OGB elections)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Career:&lt;/span&gt;&lt;br /&gt;- First career: Electronic Engineering.&lt;br /&gt;- Second career: Information Systems Engineering.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Work experience:&lt;/span&gt;&lt;br /&gt;- Sisteco (Wang in Argentina) as laboratory engineer.&lt;br /&gt;- IBM (Andalucia, Spain) as field engineer for RS/6000, mainframes, AS/400 and other goodies.&lt;br /&gt;- Sade, Engineering &amp;amp; Constructions (back to Argentina) as...some sort of servo-controlled systems engineer.&lt;br /&gt;- Sisteco (yes, again!) as field engineer.&lt;br /&gt;- Cidi.com Argentina (SunService in Argentina) as a field engineer.&lt;br /&gt;- Banknet S.A. (Sun Microsystems Financial Vertical Market reseller) as IT Manager.&lt;br /&gt;- Telefónica Moviles Argentina (now Movistar) as CTO.&lt;br /&gt;- Oracle Argentina as Core Technologies Senior Consultant.&lt;br /&gt;- &lt;span style="font-style: italic;"&gt;Currently&lt;/span&gt;, at Verizon Business Argentina as Project Manager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other groups and affiliations:&lt;/span&gt;&lt;br /&gt;- LUGAr (Linux User Group of Argentina), as founder and now...the oldest member! - more than 15 years working and having fun.&lt;br /&gt;- &lt;span style="font-style: italic;"&gt;Currently&lt;/span&gt;, at CaFeLUG (Capital Federal Linux Users Group), as founder and...oldest guy too (I feel OLD) - I cannot remember how much time...more than 10 years for sure.&lt;br /&gt;- &lt;span style="font-style: italic;"&gt;Currently&lt;/span&gt;, at AOSUG (Argentina OpenSolaris Users Group), as founder and actual leader for more than 4 years.&lt;br /&gt;- &lt;span style="font-style: italic;"&gt;Currently&lt;/span&gt;, Greek Tragedy workshops for 5 years.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tech Talks:&lt;/span&gt;&lt;br /&gt;- "PostgreSQL" at Palermo University.&lt;br /&gt;- "MySQL Internals" at Belgrano University.&lt;br /&gt;- "Glassfish" at La Plata National Engineering University.&lt;br /&gt;- "OpenSolaris Virtualization" several times, at Buenos Aires University (Engineering), LUGFI (Linux Users Group - Engineering University).&lt;br /&gt;- "Cloud Computing" several times, at Verizon Business Argentina.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Articles:&lt;/span&gt;&lt;br /&gt;- &lt;span style="font-style: italic;"&gt;Currently&lt;/span&gt;, and for 10 months, I write OpenSolaris articles for Tuxinfo magazine (www.tuxinfo.com.ar).&lt;br /&gt;- Firewalls, for AULA Project (AULA = Classroom in Spanish).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prizes:&lt;/span&gt;&lt;br /&gt;- Siemens prize for the best electronics technician. But I was very young, now to repair my radio i driving me crazy...&lt;br /&gt;- Performance prize at Telefónica because of the design and implementation of the Prepaid real time telecommunications system. My cell phone still works when he wants.&lt;br /&gt;- A strange prize at Verizon Business for a series of Cloud Computing tech talks. Sorry, Larry...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Our future plans for 2010 (AOSUG):&lt;/span&gt;&lt;br /&gt;- Participate in Flisol 2010 (Latinamerican Free Software Installation Festival, normally almost 300 people per city).&lt;br /&gt;- Give tech talks at CaFeCONF (Open Source conference, typically more than 1500 people).&lt;br /&gt;- Organize SFD'2010 as we did last year (more than 300 people last year only in Buenos Aires).&lt;br /&gt;- Give tech talks as JRSL'2010 (Regional Free Software Annual Conference, normally more than 2500 people in two days).&lt;br /&gt;- Help schools and universities to build their Open Source laboratories and classrooms.&lt;br /&gt;- Continue having monthly meetings.&lt;br /&gt;- Help the community grow, and grow, and grow. And have a lot of fun while learning, and teaching.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My other stuff:&lt;/span&gt;&lt;br /&gt;- Love old movies, classic books, cinema, coffee.&lt;br /&gt;- Collect clocks.&lt;br /&gt;- TaeKwonDo (I'm II Dan now).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Collective Relationships&lt;/span&gt;&lt;br /&gt;Collective type           Collective                      Relationship&lt;br /&gt;Community Group     advocacy                       Leader&lt;br /&gt;Electorate                  advocacy electorate     Core Contributor&lt;br /&gt;User Group                aosug                            Leader&lt;br /&gt;Community Group     device_drivers               Participant&lt;br /&gt;Project                        es                                   Participant&lt;br /&gt;Community Group     ha-clusters                    Participant&lt;br /&gt;Community Group     int_localization             Participant&lt;br /&gt;User Group                neaosug                        Leader&lt;br /&gt;Community Group     pm                                 Participant&lt;br /&gt;Project                        portals                          Participant&lt;br /&gt;Community Group     sw-porters                    Participant&lt;br /&gt;Project                        usecase                        Participant&lt;br /&gt;Community Group     zfs                                 Participant&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-3501960353269179543?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/3501960353269179543/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=3501960353269179543' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/3501960353269179543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/3501960353269179543'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2010/03/bio-for-ogb-elections.html' title='Bio (for OGB elections)'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-8547415764138200309</id><published>2010-03-07T22:11:00.003-03:00</published><updated>2010-03-07T23:05:02.325-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Configuración de IP estática con NWAM</title><content type='html'>Hola!&lt;br /&gt;En este artículo, hablaremos un poco sobre NWAM, una facilidad de OpenSolaris que configura las direcciones IP en forma automática.&lt;br /&gt;La cuestión es que es muy sencillo que una máquina con OpenSolaris configure su interface de red mediante DHCP: no se debe hacer absolutamente nada!&lt;br /&gt;Y cuando estamos configurando un servidor, y queremos que use una dirección IP estática? Ahí la cosa se complica un poco más, pero tampoco demasiado.&lt;br /&gt;Una nota de color es que la mayor parte de los comandos que ejecutaremos, y para los archivos que modificaremos, necesitaremos permisos de root, por lo que bien podemos hacer "&lt;span style="font-family:courier new;"&gt;pfexec&lt;/span&gt;" antes de cada comando, bien podemos ejecutar "&lt;span style="font-family:courier new;"&gt;su -&lt;/span&gt;", y listo.&lt;br /&gt;La cuestión es que vamos a ver si tenemos NWAM funcionando mediante el comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Sun Microsystems Inc.   SunOS 5.11      snv_111b        November 2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@ns1:~# svcs nwam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;STATE          STIME    FMRI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;online         23:07:18 svc:/network/physical:nwam&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vemos que, efectivamente, nuestra máquina está usando NWAM. Si nos entregara un valor "disabled", entonces debiéramos ejecutar un comando para ver si el servicio "default" está levantado:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@ns1:~# svcs physical&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;STATE          STIME    FMRI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;online       23:07:16 svc:/network/physical:default&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;disabled         23:07:18 svc:/network/physical:nwam&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...bajar "physical:default":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@ns1:~# svcadm disable svc:/network/physical:default&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...y subir "physical:nwam"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@ns1:~# svcadm enable nwa&lt;/span&gt;m&lt;br /&gt;&lt;br /&gt;Bien, ahora, a modificar archivos, así tenemos nuestra dirección IP estática, y configuramos todos los demás parámetros (DNS, default router, y name services) de nuestra interface de red.&lt;br /&gt;&lt;br /&gt;Suponemos que nuestra interface de red será la e1000g0, tendrá la dirección 10.100.100.19, su máscara de red es la 255.255.255.0, su default router es el 10.100.100.1, y que sus DNS's son los 200.42.0.111, 200.42.97.111, y 200.42.0.110.&lt;br /&gt;&lt;br /&gt;Los pasos a seguir serán:&lt;br /&gt;&lt;br /&gt;a) Modificar el archivo &lt;span style="font-family:courier new;"&gt;/etc/nwam/llp&lt;/span&gt;:&lt;br /&gt;Originalmente, su contenido es:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;e1000g0    dhcp&lt;/span&gt;&lt;br /&gt;Y se modifica para que quede:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;e1000g0    static    10.100.100.19/24&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;b) Relanzar el NWAM:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@ns1:~# svcadm restart nwam&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;c) Configurar el default router:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@ns1:~# route -p add default 10.100.100.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;d) Configurar los DNS servers:&lt;br /&gt;Modificar el archivo &lt;span style="font-family:courier new;"&gt;/etc/resolv.conf&lt;/span&gt; para que su contenido sea:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;nameserver 200.42.0.111&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;nameserver 200.42.97.111&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;nameserver 200.42.0.110&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;e) Configurar los name services para que DNS sea uno de ellos:&lt;br /&gt;Modificar el archivo /etc/nsswitch.conf para que su entrada hosts sea:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;hosts: files dns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;f) Si queremos, relanzamos el NWAM, y si queremos ver que todo funciona perfecto, rebooteamos el sistema, y nos fijamos si todo quedó bien usando los comandos:&lt;br /&gt;1) &lt;span style="font-family:courier new;"&gt;ifconfig e1000g0&lt;/span&gt;&lt;br /&gt;2) &lt;span style="font-family:courier new;"&gt;netstat -nr&lt;/span&gt;&lt;br /&gt;3) &lt;span style="font-family:courier new;"&gt;ping&lt;/span&gt; a una dirección DNS conocida, y que responda el ping.&lt;br /&gt;&lt;br /&gt;Listo! Todo funciona ya! Happy networking!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-8547415764138200309?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/8547415764138200309/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=8547415764138200309' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8547415764138200309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8547415764138200309'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2010/03/configuracion-de-ip-estatica-con-nwam.html' title='Configuración de IP estática con NWAM'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-3504786148417476454</id><published>2009-07-08T23:01:00.019-03:00</published><updated>2009-10-11T18:54:39.425-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Servidor hogareño - versión OpenSolaris</title><content type='html'>En este artículo veremos cómo hacer un servidor hogareño con OpenSolaris.&lt;br /&gt;La versión que se está utilizando en esta oportunidad, es la 2009.06, desde su repositorio de release (no se está usando la versión dev).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Servidor DHCP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez instalado el sistema operativo, y ejecutado como root un "&lt;span style="font-family:courier new;"&gt;pkg refresh --full&lt;/span&gt;", procederemos a la instalación y configuración del servidor DHCP.&lt;br /&gt;Para ello, ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pkg install SUNWdhcs SUNWdhcm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con eso quedan instalados tanto los binarios del dhcp server, como los del DHCP Manager, una herramienta gráfica para administrar DHCP basada en Java, que nunca pensé que podría haber sido tan útil sino hasta que tuve que usarla.&lt;br /&gt;Para configurar el dhcp server, tengamos en cuenta algunos detalles importantes:&lt;br /&gt;a) Basaré mi configuración en archivos, no en NIS, ni en DNS.&lt;br /&gt;b) Guardaré dicha configuración en el directorio /var/dhcp&lt;br /&gt;c) El rango de IP's de mi red estará en 10.100.100.0.&lt;br /&gt;d) La dirección IP de mi servidor será 10.100.100.2&lt;br /&gt;e) Necesito que uno de mis equipos obtenga siempre la misma dirección IP, que será la 10.100.100.4. La MAC address de este equipo será la 00:16:D4:0E:1C:A9.&lt;br /&gt;f) Mi default router será el 10.100.100.1, y mis DNS's serán 200.42.0.111, 200.42.97.111, 200.42.0.110 y 200.42.97.110.&lt;br /&gt;Con estos datos en mente, vamos a comenzar con la configuración del servidor DHCP.&lt;br /&gt;&lt;br /&gt;1) Configurar archivos como fuente de información, /var/dhcp como directorio para poder los archivos de configuración, DNS servers, dominio, y lease time:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# dhcpconfig -D -r SUNWfiles -p /var/dhcp -a 200.42.0.111,200.42.97.111,200.42.0.110,200.42.97.110 -d hecsa.com.ar -h files -l 86400&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2) Configurar la red, su máscara, y el default gateway:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# dhcpconfig -N 10.100.100.0 -m 255.255.255.0 -t 10.100.100.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3) Configurar una dirección para un equipo en base a su MAC address, agregándolo al macro generado para la red 10.100.100.0:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.4 -c "Battlelloyd" -f MANUAL -i 010016D40E1CA9 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nótese que en este caso, se ha agregado un "01" a la MAC address que queremos configurar.&lt;br /&gt;&lt;br /&gt;4) Agregar direcciones IP al pool disponible para otros equipos, éstos dinámicos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.200 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.201 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.202 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.203 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.204 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.205 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.206 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.207 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.208 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.209 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pntadm -A 10.100.100.210 -m 10.100.100.0 -y 10.100.100.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5) Reiniciamos el servidor DHCP para que tome los cambios realizados:&lt;br /&gt;&lt;br /&gt;# svcadm restart dhcp-server&lt;br /&gt;&lt;br /&gt;6) Abrimos el DHCP Manager, y configuramos los DNS's en forma correcta (no sé si esto es un bug, o algo que no configuré bien, pero debí hacerlo para que todo funcione):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ pfexec dhcpmgr&lt;/span&gt; (nótese que en este caso no uso la cuenta de root, sino que hago un pfexec, para poder levantar la interface gráfica java)&lt;br /&gt;&lt;br /&gt;La interface gráfica que levanto es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0U2xNCbsgec/StI4DbLaNII/AAAAAAAAAFo/lWTPtuRbrcs/s1600-h/dhcpmgr1.png"&gt;&lt;img style="cursor: pointer; width: 544px; height: 391px;" src="http://4.bp.blogspot.com/_0U2xNCbsgec/StI4DbLaNII/AAAAAAAAAFo/lWTPtuRbrcs/s320/dhcpmgr1.png" alt="" id="BLOGGER_PHOTO_ID_5391433335402280066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ahora selecciono la solapa de Macros, dentro de la que elijo el Macro 10.100.100.0.&lt;br /&gt;Ahora, del menú superior (Edit), selecciono la opción "Properties", y agrego la siguiente:&lt;br /&gt;Option Name: DNSserv&lt;br /&gt;Option Value: 200.42.0.111 200.42.97.111 200.42.0.110 200.42.97.110&lt;br /&gt;Presiono el botón "Add", y lo confirmo con "OK".&lt;br /&gt;Finalmente, reinicio los servicios de DHCP con el mismo DHCP manager, seleccionando, el menú superior, "Service", luego "Restart".&lt;br /&gt;Salgo del DHCP Manager sencillamente con "File" - "Exit".&lt;br /&gt;&lt;br /&gt;Listo! Ya ha quedado configurado el servidor DHCP, y está alimentando de direcciones IP al resto de mi red.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Servidor SAMBA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La siguiente fase de esta implementación es la de permitir que el sistema pueda compartir archivos con los demás clientes de la red. Para eso, elegimos el servidor SAMBA.&lt;br /&gt;Para instalarlo, ejecutamos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pkg install SUNWsmba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para los que están acostumbrados a GNU/Linux, algunos tips sobre los lugares donde encontraremos los archivos más comunes:&lt;br /&gt;a) Archivos de configuración:&lt;br /&gt;1) smb.conf: &lt;span style="font-family: courier new;"&gt;/etc/sfw/smb.conf&lt;/span&gt;&lt;br /&gt;b) Archivos de log:&lt;br /&gt;1) Por una cuestión de simplicidad, decidí poner los archivos de log en &lt;span style="font-family: courier new;"&gt;/var/log/samba&lt;/span&gt;, por lo cual debí generar ese directorio. Por omisión no lo genera, lógico!&lt;br /&gt;&lt;br /&gt;Configuración del archivo smb.conf:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[global]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  workgroup = HECSAGRP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  netbios name = DSHECSA1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  server string = %h server&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  obey pam restrictions = Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  passdb backend = tdbsam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  passwd program = /usr/bin/passwd %u&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  log level = 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  log file = /var/log/samba/log.%m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  max log size = 1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  add user script = /usr/sbin/useradd -m %u&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  delete user script = /usr/sbin/userdel -r %u&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  add group script = /usr/sbin/groupadd %g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  delete group script = /usr/sbin/groupdel %g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  add user to group script = /usr/sbin/usermod -G %g %u&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  add machine script = /usr/sbin/useradd -d /var/lib/nobody -s /bin/false -M %u&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  logon script = %U.cmd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  domain logons = Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  os level = 65&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  domain master = Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  dns proxy = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  wins support = Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  ldap ssl = no&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  panic action = /usr/share/samba/panic-action %d&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  invalid users = bin, daemon, sys, man, postfix, mail, ftp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  admin users = @wheel smbadmin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  interfaces = 10.100.100.2 127.0.0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  hosts deny = 10.100.100.1/255.255.255.255&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  hosts allow = 10.100.100.0/255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[homes]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  comment = Home Directories&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  valid users = %S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  read only = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  create mask = 0700&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  directory mask = 0700&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  browseable = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  dont descend = profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[netlogon]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  comment = Network Logon Service&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  path = /export/home/samba/netlogon&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  share modes = No&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[printers]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  comment = All Printers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  path = /tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  create mask = 0700&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  printable = Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  browseable = No&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[print$]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  comment = Printer Drivers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  path = /var/lib/samba/printers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[hecsarchive]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  comment = Directorio Archivos de HeCSa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  path = /archivos/hecsa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  valid users = @interno, root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  read only = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  create mask = 0770&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  directory mask = 0770&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  browseable = No&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agrego el usuario hecsa, mi usuario dentro de la red SAMBA, ya existente en OpenSolaris a nivel Unix:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# smbpasswd -a hecsa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;New SMB password:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Retype new SMB password:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Added user hecsa.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Genero el path donde los usuarios del grupo "interno" podrán depositar sus archivos. Entre estos usuarios, tendré al usuario "hecsa":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# mkdir -p /archivos/hecsa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# groupadd interno&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora, modifico la línea correspondiente al archivo "/etc/group" para que el usuario "hecsa" forme parte de él:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;interno::100:hecsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cambio los permisos del directorio a compartir:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# chgrp -R interno /archivos/hecsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para probar si todo funcionó bien, relanzo los procesos de Samba:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# svcadm restart samba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Desde mi PC intento levantar el path //10.100.100.2/hesarchive, y funciona perfectamente! Eso quiere decir que mi servidor de archivos ha quedado funcionando.&lt;br /&gt;Victoria!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-3504786148417476454?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/3504786148417476454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=3504786148417476454' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/3504786148417476454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/3504786148417476454'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2009/07/servidor-hogareno-version-opensolaris.html' title='Servidor hogareño - versión OpenSolaris'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0U2xNCbsgec/StI4DbLaNII/AAAAAAAAAFo/lWTPtuRbrcs/s72-c/dhcpmgr1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-4243838971173178672</id><published>2009-04-15T22:28:00.003-03:00</published><updated>2009-04-26T19:49:42.953-03:00</updated><title type='text'>Mirror Debian en OpenSolaris</title><content type='html'>Este artículo tiene por objeto explicar la forma en la cual configuré un servidor de paquetes Debian y Ubuntu dentro de un equipo que tiene instalado OpenSolaris 2008.11.&lt;br /&gt;La idea detrás de esto es poder servir las actualizaciones de equipos Debian y Ubuntu desde OpenSolaris, entregándoles un mirror que funcione perfectamente.&lt;br /&gt;Para poder hacerlo, utilicé el sistema "apt-mirror", y por lo tanto, partí de una de mis máquinas, que lo tenía instalado, para poder recrear la configuración sobre OpenSolaris.&lt;br /&gt;Manos a la obra!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Primer desafío: comando apt-mirror&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El primer paso, es generar el grupo y usuario necesarios para poder utilizar el comando de la misma forma que se hace en cualquier máquina con Ubuntu o Debian.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# groupadd apt-mirror&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;UX: groupadd: apt-mirror name too long.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;UX: groupadd: apt-mirror name should be all lower case or numeric.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# grep apt-mirror /etc/group&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;apt-mirror::100:&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# useradd -g apt-mirror -d /var/spool/apt-mirror -m apt-mirror&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;UX: useradd: apt-mirror name too long.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;UX: useradd: apt-mirror name too long.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;UX: useradd: apt-mirror name should be all lower case or numeric.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;80 blocks&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# passwd apt-mirror&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;New Password: &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Re-enter new Password: &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;passwd: password successfully changed for apt-mirror&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego, generamos los directorios necesarios para que se ejecute el comando apt-mirror, y guarde los paquetes espejados. Tenemos especial consideración, aquí, de los permisos y propietarios necesarios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# mkdir /etc/apt&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# chmod 755 /etc/apt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# su - apt-mirror&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Sun Microsystems Inc.    &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;SunOS 5.11    snv_101b    November 2008&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;apt-mirror:/var/spool/apt-mirror$ mkdir mirror skel var&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego, copiamos el archivo mirror.list del servidor linux utilizado como modelo de origen dentro del directorio recién creado, /etc/apt.&lt;br /&gt;Recordemos configurar sus entradas para que sepa de dónde se deberá espejar el conjunto de paquetes, así como qué arquitecturas se deberán espejar (x86, amd64, etc.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:~# cd /etc/apt&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/etc/apt# scp hecsa@linux:/etc/apt/mirror.list .&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;The authenticity of host 'linux (linux)' can't be established.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;RSA key fingerprint is dc:78:ff:1d:17:c6:50:52:d2:80:87:15:49:03:f0:a8.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;Are you sure you want to continue connecting (yes/no)? yes&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Warning: Permanently added 'linux' (RSA) to the list of known hosts.&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;hecsa@linux's password: &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;mirror.list          100% |*****************************|  2457       00:00    &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/etc/apt# ls -ltr&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;total 3&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;-rw-r--r-- 1 root root 2457 2009-04-15 21:58 mirror.list&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El contenido de este script será del siguiente estilo, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;set nthreads     20&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;set _tilde 0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="font-family:courier new;"&gt;deb http://debian.logiclinux.com/debian stable main contrib non-free&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;deb-amd64 http://debian.logiclinux.com/debian stable main contrib non-free&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;deb-src http://debian.logiclinux.com/debian stable main contrib non-free&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora, copiamos el script perl apt-mirror dentro de /usr/bin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/etc/apt# cd /usr/bin&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/usr/bin# scp hecsa@linux:/usr/bin/apt-mirror .&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;hecsa@linux's password: &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;apt-mirror           100% |*****************************| 16424       00:00    &lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/usr/bin# ls -las apt-mirror&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;17 -rwxr-xr-x 1 root root 16424 2009-04-15 22:01 apt-mirror&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finalmente, intentaremos ejecutarlo con el siguiente comando (necesitaremos una buena cantidad de espacio en disco si queremos que baje todos los paquetes):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; "&gt;root:/usr/bin# su - apt-mirror -c apt-mirror&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Podemos jugar un poco con la lista de paquetes que se bajarán, por ejemplo, agregando las siguientes entradas en el archivo /etc/apt/mirror.list, para que soporte aparte de Debian, Ubuntu:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;deb http://espelhos.edugraf.ufsc.br/ubuntu/ jaunty universe main multiverse restricted&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;deb-amd64 http://espelhos.edugraf.ufsc.br/ubuntu/ jaunty universe main multiverse restricted&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Segundo desafío: Configurar el web server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora, deberemos hacer que nuestro web server entregue estos paquetes a los futuros clientes.&lt;/div&gt;&lt;div&gt;Para ello, lo único que debemos hacer es generar dos links simbólicos, uno para Ubuntu, y otro para Debian, de la siguiente forma:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/etc/apt# ln -s /var/spool/apt-mirror/mirror/debian.logiclinux.com/debian /var/apache2/2.2/htdocs/debian&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;root:/usr/bin# ln -s /var/spool/apt-mirror/mirror/espelhos.edugraf.ufsc.br/ubuntu /var/apache2/2.2/htdocs/ubuntu&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Y con lo anterior, ya estamos listos para servir a clientes Ubuntu y Debian en su proceso de instalación, cosa que se hizo en el Flisol 2009, en forma exitosa, siendo ésta la primera vez que un servidor OpenSolaris está implementado para instalar clientes de otras arquitecturas, al menos hasta donde yo sé.&lt;/div&gt;&lt;div&gt;Saludos, hasta la próxima!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HeCSa&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-4243838971173178672?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/4243838971173178672/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=4243838971173178672' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/4243838971173178672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/4243838971173178672'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2009/04/mirror-debian-en-opensolaris.html' title='Mirror Debian en OpenSolaris'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-5482938584566653963</id><published>2009-02-25T21:16:00.004-02:00</published><updated>2009-02-25T21:25:02.084-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Ver DivX, DVD, y escuchar mp3 en OpenSolaris 2008.11</title><content type='html'>De seguro muchos se habrán preguntado por qué no pueden ni ver DVD's, ni Divx, ni escuchar mp3 en su nueva y bonita instalación de OpenSolaris.&lt;br /&gt;Bueno, la respuesta es bien simple: porque no tienen los codecs necesarios, dado que algunos de ellos son propietarios, y no es política de la gente de OpenSolaris, entre los cuales me incluyo, poner cosas privativas en la distribución.&lt;br /&gt;Si bien Sun tiene sus intereses en él, se intenta mantener OpenSolaris lo más opensource que se pueda, a pesar de haber aún porciones que tienen una licencia medio cerradita, que digamos...&lt;br /&gt;Pero bueno, lo que se debe hacer en el caso de querer utilizar estos formatos multimedia, es lo siguiente:&lt;br /&gt;&lt;br /&gt;a) Agregar el correspondiente repositorio:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# pkg set-authority -O http://ips.homeunix.com:10000 ips.homeunix.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;b) Actualizar la lista de paquetes:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# pkg refresh --full&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;c) Instalar los paquetes:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;# pkg install MBLgst-plugin-mp3 MBLgst-plugin-dvd MBLgst-plugin-ffmpeg&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;d) Abrí tu programa de música favorito, y ponete a escuchar. Please, elegí algo bueno. Soda Stereo, Metallica, o Pink Floyd podrían ser ejemplos, si te sirve de guía.&lt;br /&gt;Saludos!&lt;br /&gt;&lt;br /&gt;HeCSa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-5482938584566653963?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/5482938584566653963/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=5482938584566653963' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/5482938584566653963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/5482938584566653963'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2009/02/ver-divx-dvd-y-escuchar-mp3-en.html' title='Ver DivX, DVD, y escuchar mp3 en OpenSolaris 2008.11'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-1050686817473158739</id><published>2009-02-08T17:23:00.008-02:00</published><updated>2009-03-01T17:05:29.039-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BigBrother'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Implementación de Big Brother en ambientes heterogéneos</title><content type='html'>El presente art&amp;#237;culo tiene por objeto explicar la forma en la cual se ha implementado la soluci&amp;#243;n de monitoreo y alarma &amp;quot;Big Brother&amp;quot;, versi&amp;#243;n gratuita, en un ambiente heterog&amp;#233;neo, espec&amp;#237;ficamente uno que posee servidores GNU/Linux (Red Hat y Ubuntu), Solaris y Windows 2003 Enterprise Server.  &lt;br /&gt;  &lt;br /&gt;El sistema Big Brother utiliza, para poder funcionar, ciertos conceptos, a saber:  &lt;br /&gt;  &lt;ul&gt;   &lt;li&gt;Un BBDISPLAY es un servidor que contendr&amp;#225; la capa de visualizaci&amp;#243;n del sistema de monitoreo Big Brother.&lt;/li&gt;    &lt;li&gt;Un BBPAGER es un servidor que podr&amp;#237;a tener un sistema de conexi&amp;#243;n a un SMS Center para enviar en forma directa mensajes a quienes se determine.&lt;/li&gt;    &lt;li&gt;Lo m&amp;#225;s com&amp;#250;n del mundo es que el servidor de Big Brother, es decir, el que recibe las alertas de todos los clientes, as&amp;#237; como el que ejecuta el web server que muestra el resultado de los monitoreos, sea el mism&amp;#237;simo BBDISPLAY y BBPAGER.&lt;/li&gt;    &lt;li&gt;Cada servidor cliente debe ejecutar el paquete cliente de Big Brother para poder recolectar m&amp;#233;tricas, y reportarlas al servidor de Big Brother.&lt;/li&gt; &lt;/ul&gt; Ahora que tenemos estos conceptos en nuestra mente, pasemos a poner manos a la obra.  &lt;br /&gt;  &lt;br /&gt;&lt;span style="font-weight: bold"&gt;Instalaci&amp;#243;n del servidor de Big Brother&lt;/span&gt; (y el primer cliente!)  &lt;br /&gt;  &lt;br /&gt;Para instalar el servidor de Big Brother ante todo se debe bajar el archivo correspondiente al c&amp;#243;digo fuente desde la direcci&amp;#243;n http://www.bb4.org.  &lt;br /&gt;En nuestro caso, el servidor de Big Brother ser&amp;#225; un sistema con Red Hat Linux ES 4.3 instalado, que a los efectos de esta pr&amp;#225;ctica, llamaremos &amp;quot;bbserver&amp;quot;.  &lt;br /&gt;El paquete que hemos bajado se llama &amp;quot;bb-1.9i.tar.gz&amp;quot;, y contiene dentro de s&amp;#237; dos paquetes, uno que es el servidor en s&amp;#237; mismo (&amp;quot;BBSVR-bb1.9i-btf.tar&amp;quot;), y otro que es el cliente (&amp;quot;BBCLT-bbc1.9i-btf.tar&amp;quot;). Podremos ver estos dos paquetes luego de descomprimirlo con el comando &amp;quot;tar zxvf bb-1.9i.tar.gz&amp;quot;.  &lt;br /&gt;Ahora, llega la hora de instalar el servidor.  &lt;br /&gt;Por cuestiones de seguridad, lo mejor es generar un grupo denominado &amp;quot;bb&amp;quot;, y un usuario denominado &amp;quot;bb&amp;quot;, para que estos monitores no tengan, bajo ning&amp;#250;n punto de vista, que acceder archivos utilizando el superusuario (&amp;quot;root&amp;quot;).  &lt;br /&gt;Los comandos para generar el grupo y el usuario son los siguientes:  &lt;br /&gt;  &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# groupadd bb&lt;/span&gt; &lt;span style="font-family: courier new"&gt;   &lt;br /&gt;[root@bbserver opt]# useradd -d /home/bb -m -g bb -c &amp;quot;Big Brother&amp;quot; -s /bin/bash bb&lt;/span&gt; &lt;span style="font-family: courier new"&gt;   &lt;br /&gt;[root@bbserver opt]# passwd bb&lt;/span&gt; &lt;span style="font-family: courier new"&gt;(ingresar una contrase&amp;#241;a)&lt;/span&gt;  &lt;br /&gt;  &lt;br /&gt;Una vez generado el usuario y el grupo, procederemos a la instalaci&amp;#243;n de los paquetes descomprimidos, considerando que en este equipo, para poder monitorearlo, se deber&amp;#225;n instalar los dos, tanto el servidor como el cliente de Big Brother.  &lt;br /&gt;Para la instalaci&amp;#243;n del servidor, ejecutamos los siguientes comandos:  &lt;br /&gt;  &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;cd /opt&lt;/span&gt;  &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;tar zxvf bb-1.9i.tar.gz&lt;/span&gt;  &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;tar xvf BBSVR-bb1.9i-btf.tar&lt;/span&gt;  &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;chown -R bb:bb bb1.9i-btf&lt;/span&gt; (o el directorio que haya generado el paquete del servidor)  &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# su - bb&lt;/span&gt; &lt;span style="font-family: courier new"&gt;   &lt;br /&gt;[bb@bbserver bb]$ mkdir ~/public_html/cgi-bin&lt;/span&gt; &lt;span style="font-family: courier new"&gt;   &lt;br /&gt;[bb@bbserver bb]$ cd /opt/bb1.9i-btf/install&lt;/span&gt; &lt;span style="font-family: courier new"&gt;   &lt;br /&gt;[bb@bbserver install]$ ./bbconfig redhat&lt;/span&gt;  &lt;br /&gt;Responder a las preguntas que aqu&amp;#237; nos hace el instalador con lo siguiente:  &lt;br /&gt;  &lt;ul&gt;   &lt;li&gt;El usuario de Big Brother ser&amp;#225; &amp;quot;bb&amp;quot;.&lt;/li&gt;    &lt;li&gt;La m&amp;#225;quina ser&amp;#225; un BBDISPLAY.&lt;/li&gt;    &lt;li&gt;La m&amp;#225;quina ser&amp;#225; un BBPAGER (aunque todav&amp;#237;a no lo usemos, dej&amp;#233;moslo configurado).&lt;/li&gt;    &lt;li&gt;El URL base ser&amp;#225; &amp;quot;/bb&amp;quot; porque luego del http://servidor.web, queremos que sea accedido el monitoreo por medio de ese directorio. El URL al que accederemos ser&amp;#225; http://servidor.web/bb.&lt;/li&gt;    &lt;li&gt;El directorio para cgi-bin ser&amp;#225; &amp;quot;/home/bb/public_html/cgi-bin&amp;quot;, dado que lo creamos en un paso anterior a tales fines.&lt;/li&gt;    &lt;li&gt;El usuario que levanta el web server ser&amp;#225; &amp;quot;apache&amp;quot;, a menos que en nuestro caso sea otro, como ser &amp;quot;nobody&amp;quot; (si no lo sabemos, verifiquemos los procesos que est&amp;#225;n en ejecuci&amp;#243;n correspondientes al web server, con &amp;quot;ps aux | grep http&amp;quot;, por ejemplo).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver install]$ cd ../src&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;[bb@bbserver src]$ make&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;[bb@bbserver src]$ make install&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;[bb@bbserver src]$ exit&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# cd /var/www/html&lt;/span&gt; (o el directorio que se haya configurado como base de nuestro web server).    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver html]# ln -s /opt/bb1.9i-btf/www bb&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;[root@bbserver html]# cd /etc/cron.daily&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;[root@bbserver cron.daily]# vi logrotate&lt;/span&gt; (esto es para quitar un bug conocido que impide al usuario &amp;quot;bb&amp;quot; la lectura del archivo &amp;quot;messages&amp;quot;, generando, por lo tanto, un falso alerta).    &lt;br /&gt;El archivo deber&amp;#225; quedar as&amp;#237;:    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;#!/bin/sh&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;/usr/sbin/logrotate /etc/logrotate.conf&lt;/span&gt; &lt;span style="font-weight: bold; font-family: courier new"&gt;     &lt;br /&gt;/bin/chmod 644 /var/log/messages&lt;/span&gt;&lt;span style="font-family: courier new"&gt; # Esta l&amp;#237;nea se agreg&amp;#243; para solucionar este bug.&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;EXITVALUE=$?&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;if [ $EXITVALUE != 0 ]; then&lt;/span&gt; &lt;span style="font-family: courier new"&gt;/usr/bin/logger -t logrotate &amp;quot;ALERT exited abnormally with [$EXITVALUE]&amp;quot;&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;fi&lt;/span&gt; &lt;span style="font-family: courier new"&gt;     &lt;br /&gt;exit 0&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Con estos pasos, quedar&amp;#225; implementado el servidor Big Brother.    &lt;br /&gt;    &lt;br /&gt;Para instalar el cliente del propio servidor, tendremos que seguir los siguientes pasos:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver html]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;cd /opt&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;tar xvf BBCLT-bbc1.9i-btf.tar&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;chown -R bb:bb bbc1.9i-btf&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[root@bbserver opt]# &lt;/span&gt;&lt;span style="font-family: courier new"&gt;su - bb&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver bb]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;cd /opt/bbc1.9i-btf/install&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver install]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;./bbconfig redhat&lt;/span&gt; (responder a todas las preguntas que nos hace el instalador. Generalmente el default est&amp;#225; bien).    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver install]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;cd ../src&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver src]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;make&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver src]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;make install&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Con estos pasos, queda instalado el cliente de Big Brother.    &lt;br /&gt;    &lt;br /&gt;Ahora, s&amp;#243;lo nos falta configurar un archivo tanto del lado del servidor como del cliente, que especifica cu&amp;#225;les ser&amp;#225;n los clientes a monitorear, as&amp;#237; como qu&amp;#233; opciones de monitoreo se le dar&amp;#225; a cada uno de ellos.    &lt;br /&gt;El archivo es el &amp;quot;/opt/bb1.9i-btf/etc/bb-hosts&amp;quot; del lado del servidor, y &amp;quot;/opt/bbc1.9i-btf/etc/bb-hosts&amp;quot; del lado del cliente.    &lt;br /&gt;Es importante notar que ambos archivos, as&amp;#237; como los de todos los clientes, debieran de quedar con la misma configuraci&amp;#243;n (al menos eso solicita el manual de Big Brother).    &lt;br /&gt;En dicho archivo, se deber&amp;#225;n comentar todas las entradas que est&amp;#233;n descomentadas, dejando s&amp;#243;lo las siguientes:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;group Servidores Productivos     &lt;br /&gt;192.9.200.5 bbserver.dominio.com.ar # BBPAGER BBNET BBDISPLAY&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Ahora s&amp;#237;, se podr&amp;#225; ejecutar el servidor con el comando (siempre como el usuario &amp;quot;bb&amp;quot;) &amp;quot;/opt/bb1.9i-btf/runbb.sh&amp;quot;, y el cliente con el comando &amp;quot;/opt/bbc1.9i-btf/runbb.sh&amp;quot;.    &lt;br /&gt;Accederemos a la informaci&amp;#243;n generada luego de por lo menos diez minutos, a trav&amp;#233;s del URL http://servidor.web/bb .    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold"&gt;Implementaci&amp;#243;n de un cliente Solaris 10&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Para implementar un cliente Solaris 10 tendremos que generar, tal como lo hemos hecho antes, un grupo y un usuario espec&amp;#237;ficos para Big Brother.    &lt;br /&gt;Para ello, seguimos estas secuencias de comandos:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # groupadd bb&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # useradd -g bb -d /export/home/bb -m -c &amp;quot;Big Brother&amp;quot; -s /usr/bin/bash bb&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;64 blocks&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # passwd bb&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;New Password:&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;Re-enter new Password:&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;passwd: password successfully changed for bb&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # cd /opt&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # tar xvf BBCLT-bbc1.9i-btf.tar&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # chown -R bb:bb bbc1*&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;root@solaris # su - bb&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ cd /opt/bbc1.9i-btf/src&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ vi Makefile &lt;/span&gt;(debemos hacer esto para que no tome como comando &amp;quot;make&amp;quot; otro que no sea el &amp;quot;gmake&amp;quot;, entonces cambiamos el contenido de la l&amp;#237;nea que dice &amp;quot;&lt;span style="font-family: courier new"&gt;MAKE = make&lt;/span&gt;&amp;quot;, por &amp;quot;&lt;span style="font-family: courier new"&gt;MAKE = gmake&lt;/span&gt;&amp;quot;).    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ cd ../install&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ ./bbconfig solaris&lt;/span&gt;    &lt;br /&gt;(Responder a las preguntas aceptando la licencia, el usuario &amp;quot;bb&amp;quot;, y el uso de FQDN (Fully Qualified Domain Names).    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ cd /opt/bbc1.9i-btf/src&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ make&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ make install&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ vi /opt/bbc1.9i-btf/etc/bb-hosts&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Dejemos el contenido de este archivo de la siguiente forma:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;192.9.200.5 bbserver.dominio.com.ar # BBPAGER BBNET BBDISPLAY&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;192.9.200.109 solaris.dominio.com.ar&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ cd /opt/bbc1.9i-btf&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;bb@solaris $ ./runbb.sh&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Ahora, en el sistema servidor de Big Brother, debemos agregar la siguiente entrada en &amp;quot;/opt/bb1.9i-btf/etc/bb-hosts&amp;quot;:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver bb]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;cd /opt/bb1.9i-btf/etc&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver etc]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;vi bb-hosts&lt;/span&gt;    &lt;br /&gt;Agregar la entrada:    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;192.9.200.109 solaris.dominio.com.ar&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver etc]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;cd ..&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver bb1.9i-btf]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;./runbb.sh stop&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;[bb@bbserver bb1.9i-btf]$ &lt;/span&gt;&lt;span style="font-family: courier new"&gt;./runbb.sh&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;Starting Big Brother&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;Starting Big Brother Daemon (bbd)...&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;Starting Network tests (bb-network)...&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;Starting Display process (bb-display)...&lt;/span&gt;    &lt;br /&gt;&lt;span style="font-family: courier new"&gt;Big Brother 1.9i started&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Con estos pasos, qued&amp;#243; implementado el cliente Solaris 10 de Big Brother.    &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight: bold"&gt;Instalaci&amp;#243;n de un cliente Windows NT/2000/XP/2003 de Big Brother.&lt;/span&gt;    &lt;br /&gt;    &lt;br /&gt;Antes que nada, se deber&amp;#225; descargar el archivo instalable de la misma direcci&amp;#243;n de donde hemos bajado el resto del software.    &lt;br /&gt;Luego, sencillamente se deber&amp;#225; hacer doble click en &amp;#233;l para ejecutarlo.    &lt;br /&gt;Se deber&amp;#225; seguir el esquema &amp;quot;Enter-Enter-Enter-Acepto la licencia-Enter-Instalar-etc.&amp;quot; t&amp;#237;pico en los ejecutables Windows.    &lt;br /&gt;Una vez instalado, se abrir&amp;#225; ante nosotros una pantalla con el t&amp;#237;tulo &amp;quot;Big Brother Client Configuration Editor&amp;quot;.    &lt;br /&gt;Posicion&amp;#233;monos en el campo BBDISPLAY hosts, y agreguemos al bbserver, espec&amp;#237;ficamente su direcci&amp;#243;n IP, en &amp;#233;l. Luego presionemos &amp;quot;Add&amp;quot;. En el caso de aparecer otra direcci&amp;#243;n en la secci&amp;#243;n inferior, seleccionarla del men&amp;#250; desplegable, y presionar &amp;quot;Del&amp;quot;.    &lt;br /&gt;Hacer lo mismo con el campo BBPAGER.    &lt;br /&gt;Presionar el bot&amp;#243;n &amp;quot;Save&amp;quot;, y luego el &amp;quot;Start&amp;quot;, para finalmente llegar al &amp;quot;Quit&amp;quot;.    &lt;br /&gt;Con esos pasos, queda impementado el cliente Windows NT/2000/XP/2003 de Big Brother.&lt;/p&gt;  &lt;p&gt;TROUBLESHOOTING: Bueno, en todo art&amp;#237;culo hay una secci&amp;#243;n de este estilo.&lt;/p&gt;  &lt;p&gt;Un problema que es m&amp;#225;s que t&amp;#237;pico en el sistema Big Brother es que, luego de implementar un cliente NT, algo quede mal configurado, y en particular, que eso sea ni m&amp;#225;s ni menos que el hostname del sistema Windows NT a monitorear.   &lt;br /&gt;Para solucionar este tema, y evitar as&amp;#237; el efecto &amp;quot;eternamente p&amp;#250;rpura&amp;quot;, alg&amp;#250;n alma caritativa gener&amp;#243; el comendo &amp;quot;bbrm&amp;quot;.    &lt;br /&gt;Este comando nos permitir&amp;#225; eliminar de la configuraci&amp;#243;n del servidor de Big Brother un equipo que ya no se quiere monitorear.    &lt;br /&gt;Se ejecuta, sencillamente, lo siguiente, desde el directorio de binarios de Big Brother: ./bbrm equipo    &lt;br /&gt;Veremos un mensaje que nos indica que ese servicio ha sido eliminado, y listo. En el pr&amp;#243;ximo monitoreo, habr&amp;#225; desaparecido.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-1050686817473158739?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/1050686817473158739/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=1050686817473158739' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/1050686817473158739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/1050686817473158739'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2009/02/implementacion-de-big-brother-en.html' title='Implementación de Big Brother en ambientes heterogéneos'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-5488130385345401798</id><published>2009-01-14T21:12:00.002-02:00</published><updated>2009-01-14T21:22:45.725-02:00</updated><title type='text'>Error al instalar OpenSolaris 2008.11 - Panic - Dump - Reboot</title><content type='html'>Luego de haber fracturado mi disco rígido, tuve que reinstalar todo lo que en él se encontraba.&lt;br /&gt;Por suerte el último backup era más o menos reciente, así que sólo tuve que instalar los paquetes que ya tenía, y restaurar la información.&lt;br /&gt;Algo me llamó bastante la atención, y es que al momento de instalar OpenSolaris 2008.11, desde el LiveCD original, se generaba un stack trace, un dump que terminaba con un mensaje de "panic", para finalmente rebootear mi máquina.&lt;br /&gt;Cuando digo "mi máquina", me refiero a una HP Pavilion DV5000, con un procesador dual core T2400, 1 GB de RAM, y ahora sí, un disco SATA de 320 GB.&lt;br /&gt;Aún no pude solucionar este tema al 100%, logré el workaround (no es realmente un workaround, porque no me funciona el audio), que fue agregar, en la línea del archivo /rpool/boot/grub/menu.lst, el flag "&lt;span style="font-family: courier new;"&gt;-B disable-audiohd=true&lt;/span&gt;", es decir, quedó así:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS -B disable-audiohd=true&lt;/span&gt;&lt;br /&gt;Reboteé, y por lo menos, levantó bien.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-5488130385345401798?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/5488130385345401798/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=5488130385345401798' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/5488130385345401798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/5488130385345401798'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2009/01/error-al-instalar-opensolaris-200811.html' title='Error al instalar OpenSolaris 2008.11 - Panic - Dump - Reboot'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-7085892540718944482</id><published>2008-11-22T00:38:00.011-02:00</published><updated>2009-02-28T02:11:46.158-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Actualizaste tu OpenSolaris y no te funcionan las zonas?</title><content type='html'>Resulta que si una persona realiza una serie de comandos normales en su maquinilla OpenSolaris, y resulta que de ellos se actualiza la versión a algo superior a snv_98, se encontrará con que no podrá seguir utilizando el mismo procedimiento que antes para generar una zona porque se encontrará con el error:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Error: no zonepath dataset.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ó&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Error: unable to determine global zone boot environment.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Qué hacemos entonces?&lt;br /&gt;Pues bien, el primer paso es entender que hay que generar un dataset diferente del que ahora tenemos, para entonces sí generar la zona como antes.&lt;br /&gt;Pero antes de eso, tal parece que a nueva versión de ZFS ha cambiado, por lo que habrá que actualizarla, por un lado, y generar un nuevo BE (boot environment) que contiene un UUID que permite la generación de estas nuevas versiones de zonas.&lt;br /&gt;&lt;br /&gt;Los primeros comandos, entonces, serán:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zpool upgrade -a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# beadm create -a osol2008.11&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(el primer comando actualiza a la última versión los pool's ZFS, y el segundo, genera un nuevo boot environment que contendrá la llamada al famoso UUID, llamada osol2008.11).&lt;br /&gt;&lt;br /&gt;Luego, no olvidemos instalar un paquetito, que de seguro por omisión no está instalado, que es el correspondiente a rcap (veamos que en la zona del ejemplo, estamos usando resource capping, y por eso necesitamos de este paquete):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pkg install SUNWrcap&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entonces, ejecutaremos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zfs create rpool/zones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zfs set mountpoint=/zones rpool/zones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zfs list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;NAME                           USED  AVAIL  REFER  MOUNTPOINT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool                         14.0G  16.3G  65.5K  /rpool&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool/ROOT                    8.74G  16.3G    18K  /rpool/ROOT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool/ROOT/opensolaris-6      8.74G  16.3G  7.17G  legacy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool/ROOT/opensolaris-6/opt  1.57G  16.3G  1.57G  /opt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool/export                  5.25G  16.3G    19K  /export&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool/export/home             5.25G  16.3G  5.25G  /export/home&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rpool/zones                     18K  16.3G    18K  /zones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con estos bonitos comandos lo que hice fue generar un dataset denominado "&lt;span style="font-family:courier new;"&gt;rpool/zones&lt;/span&gt;", que monté en &lt;span style="font-family:courier new;"&gt;/zones&lt;/span&gt;. Nada más que eso.&lt;br /&gt;Luego, configuraré mi zonita como lo hacía antes de este tema:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zonecfg -z osol1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;osol1: No such zone configured&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Use 'create' to begin configuring a new zone.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; create&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; set zonepath=/zones/osol1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; set autoboot=false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; add capped-memory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1:capped-memory&gt; set physical=128m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1:capped-memory&gt; set swap=256m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1:capped-memory&gt; end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; add net&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1:net&gt; set address=192.9.200.105/24&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1:net&gt; set physical=iprb0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1:net&gt; end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; commit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;zonecfg:osol1&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root@invid:~# zoneadm -z osol1 install&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;A ZFS file system has been created for this zone.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Authority: Using http://pkg.opensolaris.org:80/.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      Image: Preparing at /zones/osol1/root ... done.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      Cache: Using /var/pkg/download.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Installing: (output follows)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora bien, luego de haber creado las nuevas zonas, en algún momento querrás actualizar el sistema operativo mediante un "&lt;span style="font-family:courier new;"&gt;pkg refresh --full&lt;/span&gt;" y "&lt;span style="font-family:courier new;"&gt;pkg image-update&lt;/span&gt;".&lt;br /&gt;Cuando quise hacer esto, me encontré con que no pude, debido a que me aparecieron los mensajes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pkg: unable to create BE None&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;pkg: image-update cannot be done on live image&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entonces, destruí las zonas generadas mediante el comando "&lt;span style="font-family:courier new;"&gt;zonecfg -z osol1 delete -F&lt;/span&gt;", y "&lt;span style="font-family:courier new;"&gt;zonecfg -z osol2 delete -F&lt;/span&gt;". Sí, tenía dos zonas funcionando.&lt;br /&gt;Luego de esto, borré los nuevos datasets que generé en los pasos anteriores:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# umount -f /zones/osol1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# umount -f /zones/osol2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# rm -rf /zones/osol1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# rm -rf /zones/osol2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zfs umount -f /zones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zfs destroy -r rpool/zones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora sí, a actualizar el sistema operativo, como de costumbre:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pkg image-update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ahora todo funciona! Ya tengo el S.O. actualizado, como lo esperaba.&lt;br /&gt;Ah! olvidaba algo! Puede que en el primer intento luego de haber tenido un par de errores de booteo de la zona aparezca un error del estilo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;zone 'osol1': Error: error mounting zone root dataset.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;zone 'osol1': &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;zoneadm: zone 'osol1': call to zoneadmd failed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...y eso es porque antes de este intento de booteo, el sistema ya había montado un filesystem en particular, que es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;rpool/zones/osol1/ROOT/zbe&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;                      98518633    237113  98281520   1% /zones/osol1/root&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este caso, sencillamente lo desmontamos, y luego reintentamos el booteo, y listo!&lt;br /&gt;&lt;br /&gt;Como ven, soluciones sencillas.&lt;br /&gt;Saludos cordiales,&lt;br /&gt;&lt;br /&gt;HeCSa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-7085892540718944482?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/7085892540718944482/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=7085892540718944482' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7085892540718944482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7085892540718944482'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/11/actualizaste-tu-opensolaris-y-no-te.html' title='Actualizaste tu OpenSolaris y no te funcionan las zonas?'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-7092598854231383389</id><published>2008-05-28T21:25:00.002-03:00</published><updated>2008-05-31T01:11:02.999-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Servidor de correo con Ubuntu 8.04</title><content type='html'>&lt;p&gt;En este art&amp;#237;culo abordaremos la implementaci&amp;#243;n de un servidor de correo utilizando solamente software libre.&lt;/p&gt;  &lt;p&gt;Su sistema operativo ser&amp;#225; Ubuntu 8.04, y el MTA (Mail Transfer Agent) ser&amp;#225; Postfix. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fase I: Instalaci&amp;#243;n del sistema operativo&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Bueno, como ya se debe estar pensando, esta fase no presenta ning&amp;#250;n problema en s&amp;#237; mismo, dado que la instalaci&amp;#243;n que se seguir&amp;#225; es la del sistema operativo Ubuntu 8.04 Server por omisi&amp;#243;n.&lt;/p&gt;  &lt;p&gt;Comienza con el booteo, se selecciona el lenguaje (yo eleg&amp;#237; &amp;quot;English&amp;quot;), luego por la zona en la cual me encuentro (yo eleg&amp;#237; &amp;quot;other&amp;quot;, y luego &amp;quot;South America - Argentina&amp;quot;), luego por el teclado, donde segu&amp;#237; todas las instrucciones hasta que detect&amp;#243; que el teclado de seguro estaba configurado como &amp;quot;latam&amp;quot;. &lt;/p&gt;  &lt;p&gt;Configur&amp;#243; s&amp;#243;lo la tarjeta de red, y por un error de planificaci&amp;#243;n, levant&amp;#243; su direcci&amp;#243;n IP desde un servidor de DHCP. Eso no hace sino m&amp;#225;s interesante la tarea, dado que tambi&amp;#233;n debo explicar aqu&amp;#237; c&amp;#243;mo hacer para que se fije una direcci&amp;#243;n IP. El nombre que eleg&amp;#237; para el servidor, en un esfuerzo de imaginaci&amp;#243;n, fue &amp;quot;mailer&amp;quot;.&lt;/p&gt;  &lt;p&gt;Luego configur&amp;#243; el reloj, particion&amp;#233; el disco (en la secci&amp;#243;n &amp;quot;Partition Disks&amp;quot; eleg&amp;#237; &amp;quot;Manual&amp;quot;, luego gener&amp;#233; tres particiones, la /dev/sda1, de s&amp;#243;lo 150 MB, para /boot, la /dev/sda2, de 1.5 GB, para swap, y la /dev/sda3, del resto, para /), instal&amp;#243; todos los paquetes b&amp;#225;sicos del servidor, lo cual me llev&amp;#243; menos de 15 minutos, y me solicit&amp;#243; la creaci&amp;#243;n de un nuevo usuario, que ser&amp;#225; luego el que har&amp;#225; &amp;quot;sudo&amp;quot; cuando sea necesario. &lt;/p&gt;  &lt;p&gt;Luego de eso, le avis&amp;#233; que no estaba usando ning&amp;#250;n proxy, se realiz&amp;#243; la configuraci&amp;#243;n autom&amp;#225;tica de &amp;quot;apt&amp;quot;, me pidi&amp;#243; que seleccione qu&amp;#233; paquetes de software quer&amp;#237;a instalar, en base a la funci&amp;#243;n del equipo (DNS, LAMP, Mail, OpenSSH, PostgreSQL, Print &amp;#243; Samba server, de las cuales no seleccion&amp;#233; ninguna, dado que me ocupar&amp;#233; luego de esa instalaci&amp;#243;n de una forma m&amp;#225;s personalizada y selectiva de paquetes), comenz&amp;#243; la instalaci&amp;#243;n de software (Select and Install software), realiz&amp;#243; autom&amp;#225;ticamente la instalaci&amp;#243;n del GRUB, y finaliz&amp;#243; la instalaci&amp;#243;n, con reboot.&lt;/p&gt;  &lt;p&gt;En el primer booteo parec&amp;#237;a que el servidor estaba colgado, dado que tard&amp;#243; un poco m&amp;#225;s de lo normal para un equipo de sus caracter&amp;#237;sticas (casi 15 segundos en dar alguna se&amp;#241;al de vida), pero a continuaci&amp;#243;n levant&amp;#243; perfectamente.&lt;/p&gt;  &lt;p&gt;El nombre del equipo es, sencillamente, &amp;quot;mailer&amp;quot;.&lt;/p&gt;  &lt;p&gt;Al realizar un &amp;quot;&lt;span style="font-family: courier new"&gt;ifconfig -a&lt;/span&gt;&amp;quot; encontr&amp;#233; que la direcci&amp;#243;n IP, efectivamente, coincid&amp;#237;a con una del rango del DHCP Server que tengo conectado a la red, por lo que ahora comienza la parte donde configuramos la direcci&amp;#243;n IP final de la tarjeta de red.&lt;/p&gt;  &lt;p&gt;Ingres&amp;#233; como el usuario que hab&amp;#237;a configurado, y cambi&amp;#233; mi personalidad (no es recomendable trabajar como root siempre) haciendo &amp;quot;&lt;span style="font-family: courier new"&gt;sudo /bin/bash&lt;/span&gt;&amp;quot;. Me pidi&amp;#243; la contrase&amp;#241;a m&amp;#237;a propia, y pude obtener el tan amado prompt &amp;quot;&lt;span style="font-family: courier new"&gt;#&lt;/span&gt;&amp;quot;. Todas las siguientes tareas ser&amp;#225;n realizadas mediante la cuenta del usuario generado, y el &amp;quot;&lt;font face="Courier New"&gt;sudo /bin/bash&lt;/font&gt;&amp;quot;. &lt;/p&gt;  &lt;p&gt;Edit&amp;#233; el archivo &amp;quot;&lt;span style="font-family: courier new"&gt;/etc/network/interfaces&lt;/span&gt;&amp;quot; para que su contenido sea:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;auto lo      &lt;br /&gt;iface lo inet loopback &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;iface eth0 inet static      &lt;br /&gt;address 192.9.200.20       &lt;br /&gt;netmask 255.255.255.0       &lt;br /&gt;gateway 192.9.200.1 &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;network 192.9.200.0      &lt;br /&gt;broadcast 192.9.200.255&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;auto eth0&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;...dado que la direcci&amp;#243;n de red que le quiero dar es la 192.9.200.200, suponiendo que esa es una direcci&amp;#243;n p&amp;#250;blica v&amp;#225;lida (obviamente, quien alguna vez tuvo alg&amp;#250;n contacto con Internet desde el punto de vista serio, sabe que no lo es).&lt;/p&gt;  &lt;p&gt;Edit&amp;#233; el archivo &amp;quot;&lt;span style="font-family: courier new"&gt;/etc/resolv.conf&lt;/span&gt;&amp;quot;, agreg&amp;#225;ndole los que son mis dos servidores de DNS:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;nameserver 200.42.0.108      &lt;br /&gt;nameserver 200.42.0.109       &lt;br /&gt;domain hecsa.com.ar&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Ahora, para verificar que todo quedaba como es debido, relanc&amp;#233; los procesos de red mediante &amp;quot;&lt;span style="font-family: courier new"&gt;/etc/init.d/networking restart&lt;/span&gt;&amp;quot;&lt;/p&gt;  &lt;p&gt;El siguiente paso, dentro de lo que es el sistema operativo en s&amp;#237; mismo, consisti&amp;#243; en instalarle el paquete OpenSSH Server, lo cual hice como siempre, con &amp;quot;&lt;span style="font-family: courier new"&gt;apt-get install openssh-server&lt;/span&gt;&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fase II: Vamos por los paquetes &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ahora, lo jugoso. Se viene la instalaci&amp;#243;n del sistema de correo electr&amp;#243;nico, se viene!!!&lt;/p&gt;  &lt;p&gt;Vamos a comenzar instalando los paquetes que sean necesarios, y para eso, tambi&amp;#233;n como siempre, realizaremos las actualizaciones que correspondan.&lt;/p&gt;  &lt;p&gt;Para eso, la receta de cocina adecuada es ejecutar &amp;quot;&lt;span style="font-family: courier new"&gt;apt-get update&lt;/span&gt;&amp;quot;, y &amp;quot;&lt;span style="font-family: courier new"&gt;apt-get upgrade&lt;/span&gt;&amp;quot;, aceptando las actualizaciones que nos proponga nuestro amigo &amp;quot;mailer&amp;quot;. Se recomienda, luego de esto, realizar un nuevo reboot, s&amp;#243;lo por si las actualizaciones han sido profundas, y sus efectos, luego de un &amp;quot;&lt;span style="font-family: courier new"&gt;reboot&lt;/span&gt;&amp;quot;, son requeridos.&lt;/p&gt;  &lt;p&gt;Ahora, con los &amp;#250;ltims paquetes instalados, procedemos a instalar los que ser&amp;#225;n necesarios para nuestro servidor de correo electr&amp;#243;nico, a trav&amp;#233;s de los siguientes comandos:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: courier new"&gt;# apt-get install postfix courier-imap courier-pop mailx     &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Pocos paquetes, no? Bueno, esto nos va a dejar bajando cerca de 10 MB de paquetes, lo cual nos permite tomar alg&amp;#250;n caf&amp;#233; en el medio de la implementaci&amp;#243;n, que nunca viene mal.&lt;/p&gt;  &lt;p&gt;Cuando instalemos el paquete postfix, se nos preguntar&amp;#225; qu&amp;#233; tipo de sistema queremos, a lo cual responderemos que el mismo ser&amp;#225; un &amp;quot;Internet Site&amp;quot;. Acto seguido, nos pedir&amp;#225; que agreguemos un valor para el dominio, considerando que los mails salientes que no lo posean lo terminar&amp;#225;n teniendo como agregado. Si bien en este caso la opci&amp;#243;n por default es el hostname completo, se deber&amp;#225; colocar el nombre del dominio del cual saldr&amp;#225;n los mensajes.&lt;/p&gt;  &lt;p&gt;Cuando instalemos los paquetes courier-imap y courier-pop, veremos que se nos pregunta si queremos generar algunos directorios del tipo Maildir para algunos usuarios, a lo cual responderemos que no.&lt;/p&gt;  &lt;br /&gt;&lt;span style="font-weight: bold"&gt;Fase III: A configurar todo&lt;/span&gt;  &lt;p&gt;Por suerte, la simplicidad de estos paquetes nos llevar&amp;#225;n a no tener que configurar demasiadas cosas cuando lo que queremos es un servidor de correo para un solo dominio, por lo que en general, veremos que los pasos son pocos, y sencillos.&lt;/p&gt;  &lt;p&gt;El primer archivo que tocaremos ser&amp;#225; el &amp;quot;&lt;font face="Courier New"&gt;/etc/postfix/main.cf&lt;/font&gt;&amp;quot;. All&amp;#237; configuraremos lo siguiente:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;smtpd_banner = Cualquiera (OpenCualquiera)     &lt;br /&gt;biff = no &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;append_dot_mydomain = no &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;readme_directory = no &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem     &lt;br /&gt;smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key      &lt;br /&gt;smtpd_use_tls=yes      &lt;br /&gt;smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache      &lt;br /&gt;smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;myhostname = mailer.dominio.com.ar     &lt;br /&gt;alias_maps = hash:/etc/aliases      &lt;br /&gt;alias_database = hash:/etc/aliases      &lt;br /&gt;myorigin = /etc/mailname      &lt;br /&gt;mydestination = dominio.com.ar, mailer.dominio.com.ar, localhost.dominio.com.ar, localhost      &lt;br /&gt;relayhost =      &lt;br /&gt;mynetworks = 192.9.200.0/24, 192.168.100.0/24, 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 # Redes desde las cuales permito que se env&amp;#237;en mails.      &lt;br /&gt;mailbox_size_limit = 0      &lt;br /&gt;recipient_delimiter = +      &lt;br /&gt;inet_interfaces = all      &lt;br /&gt;inet_protocols = all      &lt;br /&gt;home_mailbox = Maildir/ # Este es el formato del mail, maildir, y en cada home directory habra un subdirectorio llamado Maildir, que contendra cur, tmp y new.      &lt;br /&gt;mailbox_command =&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Por ahora, no tengo que tocar nada m&amp;#225;s, ya que el mismo courier-imap y courier-pop se han ocupado de configurarse como es debido.&lt;/p&gt;  &lt;br /&gt;  &lt;p style="font-weight: bold"&gt;Fase IV: Seguridad&lt;/p&gt;  &lt;p&gt;Ahora bien, con la configuraci&amp;#243;n anterior, tendremos un excelente servidor de correo, pero ser&amp;#225; un blanco perfecto para cuanto spammer haya dando vueltas, por lo que se recomienda seguir estos pasos para asegurar que no terminaremos en una blacklist de spam.&lt;/p&gt;  &lt;p style="font-weight: bold"&gt;Fase IV-A: Shorewall&lt;/p&gt;  &lt;p&gt;Como este servidor tiene m&amp;#225;s de una tarjeta de red (v&amp;#233;ase que hay dos en la declaraci&amp;#243;n de mail.cf, una con IP 192.9.200.x y la otra con 192.168.100.x), se ha configurado la misma desde el archivo &amp;quot;/etc/network/interfaces&amp;quot;:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;auto lo     &lt;br /&gt;iface lo inet loopback &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;auto eth0     &lt;br /&gt;iface eth0 inet static      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; address 192.9.200.20      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; netmask 255.255.255.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; network 192.9.200.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; broadcast 192.9.200.255      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; gateway 192.9.200.1      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dns-nameservers 200.42.0.108 200.42.0.109      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dns-search dominio.com.ar &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;auto eth1     &lt;br /&gt;iface eth1 inet static      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; address 192.168.100.250      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; netmask 255.255.255.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; network 192.168.100.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; broadcast 192.168.100.255&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Ahora, comenzaremos a realizar la configuraci&amp;#243;n del paquete shorewall. Primero, lo instalamos con el comando &amp;quot;apt-get install shorewall shorewall-doc&amp;quot;.&lt;/p&gt;  &lt;p&gt;Una vez que tengamos estos dos paquetes instalados, procederemos a configurar sus archivos, de la siguiente manera:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;cp /usr/share/doc/shorewall-common/default-config/interfaces /etc/shorewall/ vi /etc/shorewall/interfaces&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;En este archivo agregaremos las definiciones de nuestras dos tarjetas de red:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;net eth0 detect dhcp,tcpflags,logmartians,nosmurfs&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;net eth1 detect dhcp,tcpflags,logmartians,nosmurfs&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Luego:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;cp /usr/share/doc/shorewall-common/default-config/zones /etc/shorewall/ vi /etc/shorewall/zones&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Aqu&amp;#237; configuraremos las dos zonas que estaremos utilizando, es decir, la de la red, y la del firewall en s&amp;#237; mismo:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;net ipv4&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Luego:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;cp /usr/share/doc/shorewall-common/default-config/hosts /etc/shorewall/&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Luego:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;cp /usr/share/doc/shorewall-common/default-config/policy /etc/shorewall/ vi /etc/shorewall/policy&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Aqu&amp;#237; agregaremos las pol&amp;#237;ticas que deseamos:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;$FW net ACCEPT &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;net $FW DROP info &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;net all DROP info &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;# Esta politica debe estar al final &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;all all REJECT info&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Luego:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;cp /usr/share/doc/shorewall-common/default-config/routestopped /etc/shorewall/ vi /etc/shorewall/routestopped&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Y agregamos:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;eth0 0.0.0.0 routeback&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;eth1 0.0.0.0 routeback&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Luego:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;cp /usr/share/doc/shorewall-common/default-config/rules /etc/shorewall/ vi /etc/shorewall/rules&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Y agregamos:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;SSH/ACCEPT net $FW&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;Ping/ACCEPT net $FW &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;# Permit all ICMP traffic FROM the firewall TO the net zone &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;ACCEPT $FW net icmp &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;# mail lines &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;SMTP/ACCEPT net $FW &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;SMTPS/ACCEPT net $FW &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;Submission/ACCEPT net $FW &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;IMAP/ACCEPT net $FW &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;IMAPS/ACCEPT net $FW &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;POP3/ACCEPT net $FW&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;#web &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;Web/ACCEPT net $FW&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Chequearemos que todo est&amp;#233; correctamente configurado mediante:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;shorewall check&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Editamos &amp;quot;&lt;code&gt;vi /etc/default/shorewall&lt;/code&gt;&amp;quot; y modificamos el valor de &amp;quot;&lt;font face="Courier New"&gt;startup&lt;/font&gt;&amp;quot; para que est&amp;#233; en 1:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;startup=1&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Ahora, si queremos, podemos realizar un reboot y ver c&amp;#243;mo levantan todos los servicios implementados, inclusive los del firewall (shorewall - realmente iptables)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fase IV-B: Fail2ban&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si bien en este mismo blog habr&amp;#225;n visto algunos detalles sobre c&amp;#243;mo implementar estar herramienta, les cuento que la misma ha cambiado desde la publicaci&amp;#243;n de este art&amp;#237;culo, por lo que ahora veremos la versi&amp;#243;n que se puede implementar desde un servidor Ubuntu 8.04 (fail2ban 0.8.2-2).&lt;/p&gt;  &lt;p&gt;Comenzamos instalando un paquete como lo hacemos siempre, mediante la ejecuci&amp;#243;n de &amp;quot;&lt;font face="Courier New"&gt;apt-get install fail2ban&lt;/font&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;Una vez instalado, s&amp;#243;lo les recomiendo que modifiquen el archivo &amp;quot;&lt;font face="Courier New"&gt;/etc/fail2ban/jail.conf&lt;/font&gt;&amp;quot; de la siguiente forma:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;destemail = yo@dominio2.com.ar&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;De esa manera, cada vez que alg&amp;#250;n caco de la informaci&amp;#243;n y el ancho de banda quiera ingresar y falle por m&amp;#225;s de cierta cantidad de veces, le llegar&amp;#225; un mail a esta direcci&amp;#243;n, aparte de deshabilitar a la direcci&amp;#243;n IP de origen.&lt;/p&gt;  &lt;p&gt;Recordemos que siempre luego de hacer cualquier modificaci&amp;#243;n a los archivos del fail2ban, tendremos que relanzar sus procesos mediante &amp;quot;&lt;font face="Courier New"&gt;/etc/init.d/fail2ban stop&lt;/font&gt;&amp;quot; y &amp;quot;&lt;font face="Courier New"&gt;/etc/init.d/fail2ban start&lt;/font&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fase IV-C: Postgrey&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ahora, uno de los platos fuertes de esta noche, aparte de todo lo que vimos antes. Vamos a implementar el sistema postgrey, que no es ni m&amp;#225;s ni menos que un greylisting para el servidor de correos Postfix.&lt;/p&gt;  &lt;p&gt;El principio del proceso es el mismo de siempre, debemos instalarlo con el comando &amp;quot;&lt;font face="Courier New"&gt;apt-get install postgrey&lt;/font&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;Luego, tendremos que modificar el archivo &amp;quot;&lt;font face="Courier New"&gt;/etc/postfix/main.cf&lt;/font&gt;&amp;quot; para que comience a utilizar este sistema. Le agregaremos las siguientes l&amp;#237;neas:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;smtpd_recipient_restrictions =     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; permit_mynetworks,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; permit_sasl_authenticated,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; reject_unauth_destination,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; check_policy_service inet:127.0.0.1:60000&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Y finalmente relanzamos los procesos del postfix para que se tomen los cambios (&amp;quot;&lt;font face="Courier New"&gt;/etc/init.d/postfix stop&lt;/font&gt;&amp;quot; y &amp;quot;&lt;font face="Courier New"&gt;/etc/init.d/postfix start&lt;/font&gt;&amp;quot;).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-7092598854231383389?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/7092598854231383389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=7092598854231383389' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7092598854231383389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7092598854231383389'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/05/servidor-de-correo-con-ubuntu-804.html' title='Servidor de correo con Ubuntu 8.04'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-400700106974013059</id><published>2008-05-25T00:44:00.002-03:00</published><updated>2008-06-15T13:51:28.946-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Servidor Hogareño - Versión GNU/Linux</title><content type='html'>&lt;p&gt;Este artículo tendrá por objeto dar las explicaciones necesarias para poder montar un servidor hogareño basado en GNU/Linux. Los servicios que se pretenden brindar son: DHCP, PDC, FileServer, Proxy, y Filtrado de Páginas. Si hay tiempo, un servidor del tipo Portal estaría también muy bueno.&lt;/p&gt;  &lt;p&gt;La versión de GNU/Linux elegida, en este momento, es la Ubuntu 8.04, que si bien ha demostrado que no es la más rápida, por lo menos está basada en paquetes .deb, verifica de una forma medianamente coherente dependencias, y permite su actualización con un grado bastante sencillo de tareas.&lt;/p&gt;  &lt;p&gt;El primer punto ha sido instalar la distribución por default, generando una partición de 8 GBpara el swap, y de 130 GB para /.&lt;/p&gt;  &lt;p&gt;Lo ideal no es dejar todo el contenido del primer disco sin dividir filesystems, pero en este caso, como el servidor tendrá características hogareñas, no hace falta más.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Cayendo sin red&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Mi motherboard es un ASUS P5GC-MX/1333, que tiene una tarjeta de red Attansic L2, por supuesto, como me gustan los desafíos, no soportada directamente por Ubuntu 8.04. Y digo no soportada directamente, porque si bien el driver aparece dentro de los existentes en esta versión, sencillamente no funcionan con este motherboard. Los módulos de esta tarjeta de red aparecen como cargados al ejecutar un "lspci", pero no funcionan, lo cual nos lleva, ante todo, a tener que buscar un nuevo driver, que deberá funcionar mejor que éste.&lt;/p&gt;  &lt;p&gt;Efectivamente, con el motherboard me llegó un CD con drivers. Entre ellos, encontré que aparecía un directorio llamado "LinuxDrivers". Excelente, me dije, y sin pensarlo, seguí el procedimiento necesario para compilarlos. Nada más inútil, porque llegué a un mensaje de error que me decía que no tenía el directorio /usr/src/linux-headers-2.6.24-16-generic. No hay problema, utilicé el ingenio, y saqué de internet, en otra máquina, desde el sitio packages.ubuntu.com, esos paquetes y sus dependencias. Los grabé en un memory stick, y los instalé en el equipo.&lt;/p&gt;  &lt;p&gt;Para poder compilar lo que necesitaba, sin saber si era o no necesario, pero sabiendo que en algún momento lo sería, instalé, desde el CD de Ubuntu, el paquete build-essential.&lt;/p&gt;  &lt;p&gt;Pero tampoco funcionó, dado que me apareció, al ejecutar "make", un mensaje haciendo referencias a problemas de CFLAGS, requiriendo que se modifiquen los parámetros para que se utilicen EXTRA_CFLAGS. Cuando estaba a punto de darme por vencido, y comenzar con alguna otra distro, que me diera más y mejores drivers (según tengo entendido, ya hay varias que así lo hacen), encontré un código fuente dedicado a esta tarjeta, que se encuentra en &lt;a title="http://people.redhat.com/csnook/atl2/atl2-2.0.4.tar.bz2" href="http://people.redhat.com/csnook/atl2/atl2-2.0.4.tar.bz2"&gt;http://people.redhat.com/csnook/atl2/atl2-2.0.4.tar.bz2&lt;/a&gt; . Lo bajé, lo compilé, y el módulo atl2.ko resultante, lo copié a /lib/modules/2.6.24-16-generic/ubuntu/net/atl2/atl2.ko.&lt;/p&gt;  &lt;p&gt;Rebooteé el equipo, y la configuración de red comenzó a funcionar. La familia, contenta. Ahora puedo hacer un "apt-get update", y que funcione. Lo sé, no me olvidé de comentar las entradas del CD de Ubuntu en "/etc/apt/sources.list".&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Conexión vía terminal y VNC&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Una de las primeras cosas que necesité, fue el servidor OpenSSH, dado que me resultaría más cómodo trabajar con el servidor de esta manera, en forma remota. Para ello, instalé el paquete openssh-server con el comando "apt-get install openssh-server". El sistema bajó también el "libssl0.9.8.0.9.8g-4ubuntu", el "openssh-client", y el "openssh-blacklist". Luego de la instalación, y sólo para ver si todo levantaba correctamente desde el principio, rebotee el sistema. &lt;/p&gt;  &lt;p&gt;Una cosa que me encantó de este motherboard es que un reboot dura menos de 30 segundos. Increíble.&lt;/p&gt;  &lt;p&gt;Inmediatamente después, me pude conectar desde otros equipos sin problemas:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;login as: hecsa     &lt;br /&gt;hecsa@192.9.200.2's password:      &lt;br /&gt;Linux dshecsa01 2.6.24-16-generic #1 SMP Thu Apr 10 13:23:42 UTC 2008 i686 &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;The programs included with the Ubuntu system are free software;     &lt;br /&gt;the exact distribution terms for each program are described in the      &lt;br /&gt;individual files in /usr/share/doc/*/copyright. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by     &lt;br /&gt;applicable law. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;To access official Ubuntu documentation, please visit:     &lt;br /&gt;&lt;/span&gt;&lt;a href="http://help.ubuntu.com/"&gt;&lt;span style="font-family:Courier New;"&gt;http://help.ubuntu.com/&lt;/span&gt;&lt;/a&gt;    &lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;hecsa@dshecsa01:~$&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Excelente, el primer paso estaba dado!&lt;/p&gt;  &lt;p&gt;Ahora, vamos por la conexión vía VNC. Como es sabido, el paquete a instalar es el vncserver. &lt;/p&gt;  &lt;p&gt;Al hacer un "apt-cache search vncserver", encontré que uno de los listados era el "vnc4server". Lo instalé con el comando "apt-get install vnc4server", y posteriormente lo inicié con el comando "vncserver". Así de sencillo.&lt;/p&gt;  &lt;p&gt;Ahora bien, la primera imágen es que el entorno en sí se veía bastante básico, por lo que descomenté las siguientes dos líneas en el archivo $HOME/.vnc/xstartup, para que levante por VNC un entorno más completo, como el que tengo en la consola del equipo:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;unset SESSION_MANAGER     &lt;br /&gt;exec /etc/X11/xinit/xinitrc&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Claro que lo que el sistema quiere es levantar el TWM, que no tenía instalado, por lo cual ejecuté "apt-get install twm". Reinicé el servidor con los comandos "vncserver -kill :1", y "vncserver", y todo quedó de maravillas.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Compartiendo los archivos&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Por supuesto, lo que debía hacer ahora era instalar el servidor Samba, y configurarlo para que pueda funcionar como un PDC.&lt;/p&gt;  &lt;p&gt;Primer paso, instalar el paquete samba: "apt-get install samba".&lt;/p&gt;  &lt;p&gt;El paquete aparentemente, se instaló correctamente, pero arrojó unos mensajes extraños, que luego analizaré (Veremos el resultado de este análisis en el apéndice dedicado a tales fines):&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;tdbsam_open: Converting version 0 database to version 3.     &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 1 (min password length), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 2 (password history), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 3 (user must logon to change password), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 4 (maximum password age), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 5 (minimum password age), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 6 (lockout duration), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 7 (reset count minutes), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 8 (bad lockout attempt), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 9 (disconnect time), returning 0      &lt;br /&gt;account_policy_get: tdb_fetch_uint32 failed for field 10 (refuse machine password change), returning 0&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Ahora, pasaremos a la configuración, que calculo que no será una tarea menor. Veamos cómo transformamos este servidor en un Samba PDC.&lt;/p&gt;  &lt;p&gt;Para eso, lo primero que hago es generar un archivo "/etc/samba/smb.conf" como el siguiente:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;[global]     &lt;br /&gt;    workgroup = GRUPETE      &lt;br /&gt;    netbios name = SERVER1      &lt;br /&gt;    server string = %h server      &lt;br /&gt;    obey pam restrictions = Yes      &lt;br /&gt;    passdb backend = tdbsam      &lt;br /&gt;    passwd program = /usr/bin/passwd %u      &lt;br /&gt;    passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .      &lt;br /&gt;    log level = 2      &lt;br /&gt;    log file = /var/log/samba/log.%m      &lt;br /&gt;    max log size = 1000      &lt;br /&gt;    socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192      &lt;br /&gt;    add user script = /usr/sbin/useradd -m %u      &lt;br /&gt;    delete user script = /usr/sbin/userdel -r %u      &lt;br /&gt;    add group script = /usr/sbin/groupadd %g      &lt;br /&gt;    delete group script = /usr/sbin/groupdel %g      &lt;br /&gt;    add user to group script = /usr/sbin/usermod -G %g %u      &lt;br /&gt;    add machine script = /usr/sbin/useradd -d /var/lib/nobody -s /bin/false -M %u      &lt;br /&gt;    logon script = %U.cmd      &lt;br /&gt;    domain logons = Yes      &lt;br /&gt;    os level = 65      &lt;br /&gt;    domain master = Yes      &lt;br /&gt;    dns proxy = No      &lt;br /&gt;    wins support = Yes      &lt;br /&gt;    ldap ssl = no      &lt;br /&gt;    panic action = /usr/share/samba/panic-action %d      &lt;br /&gt;    invalid users = bin, daemon, sys, man, postfix, mail, ftp      &lt;br /&gt;    admin users = @wheel &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;[homes]     &lt;br /&gt;    comment = Home Directories      &lt;br /&gt;    valid users = %S      &lt;br /&gt;    read only = No      &lt;br /&gt;    create mask = 0700      &lt;br /&gt;    directory mask = 0700      &lt;br /&gt;    browseable = No      &lt;br /&gt;    dont descend = profile &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;[netlogon]     &lt;br /&gt;    comment = Network Logon Service      &lt;br /&gt;    path = /home/samba/netlogon      &lt;br /&gt;    share modes = No &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;[printers]     &lt;br /&gt;    comment = All Printers      &lt;br /&gt;    path = /tmp      &lt;br /&gt;    create mask = 0700      &lt;br /&gt;    printable = Yes      &lt;br /&gt;    browseable = No &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;[print$]     &lt;br /&gt;    comment = Printer Drivers      &lt;br /&gt;    path = /var/lib/samba/printers &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;[archive]     &lt;br /&gt;    comment = Directorio Archivos &lt;br /&gt;    path = /archivos      &lt;br /&gt;    valid users = @interno, root      &lt;br /&gt;    read only = No      &lt;br /&gt;    create mask = 0770      &lt;br /&gt;    directory mask = 0770      &lt;br /&gt;    browseable = No&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Ahora, a generar los usuarios. Comienzo por el mío, así que como sé que está generado en el sistema GNU/Linux, ejecuto "smbpasswd -a hecsa".&lt;/p&gt;  &lt;p&gt;Inmediatamente, o mejor dicho, luego de esperar unos minutos, pude levantar desde una máquina separada los directorios compartidos mediante el protocolo de Samba. Otro éxito, y ya van varios!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Dame una dirección, por favor&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ahora, le llegaba el turno al servidor DHCP, que tantas alegrías nos da siempre.&lt;/p&gt;  &lt;p&gt;Lo primer, es instalar el paquete que nos dará este servicio. Al hacer un "apt-cache search dhcpd" encontré a mi viejo amigo y aliado "dhcp3-server", que como siempre, instalé con el comando "apt-get install dhcp3-server".&lt;/p&gt;  &lt;p&gt;Lo interesante es que luego de instalarlo, aparecen estos mensajes:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt; * Starting DHCP server dhcpd3                                           [fail]    &lt;br /&gt;invoke-rc.d: initscript dhcp3-server, action "start" failed.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Pero al mirar archivos como el "/var/log/messages", o el "/var/log/daemon.log", no encontramos más que mensajes de subida el dhcpd, lo cual desconcierta bastante.&lt;/p&gt;  &lt;p&gt;Para evitar seguir hurgando en detalles extravagantes, sencillamente dejé el archivo "/etc/dhcp3/dhcpd.conf" de la siguiente forma:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;option domain-name "hecsa.com.ar";    &lt;br /&gt;option domain-name-servers 200.42.0.108, 200.42.0.109; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;default-lease-time 600;    &lt;br /&gt;max-lease-time 7200; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;subnet 192.9.200.0 netmask 255.255.255.0 {    &lt;br /&gt;  range 192.9.200.220 192.9.200.230;     &lt;br /&gt;  option routers 192.9.200.1;     &lt;br /&gt;  option domain-name-servers 200.42.0.108, 200.42.0.109;     &lt;br /&gt;  authoritative;     &lt;br /&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;host hecsadv {    &lt;br /&gt;    hardware ethernet 00:13:02:61:23:C4;     &lt;br /&gt;    fixed-address 192.9.200.142;     &lt;br /&gt;}&lt;/span&gt; &lt;/p&gt;  &lt;p&gt;A que no se imaginan qué pasó cuando levantó de nuevo el servicio dhcpd, con los comandos "/etc/init.d/dhcp3-server stop" y "/etc/init.d/dhcp3-server start"? Mírenlo ustedes mismos:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier New;"&gt;root@dshecsa01:/etc# /etc/init.d/dhcp3-server stop    &lt;br /&gt;* Stopping DHCP server dhcpd3                                           [fail]     &lt;br /&gt;root@dshecsa01:/etc# /etc/init.d/dhcp3-server start     &lt;br /&gt;* Starting DHCP server dhcpd3                                           [ OK ]&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Sí, así es...quedó funcionando. Ya tenemos servidor de direcciones, y hasta una dirección fijada para una de las máquinas de la red. Qué tal, eh?&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Servidor Proxy&lt;/p&gt;&lt;p&gt;Nada más sencillo que instalar un servidor proxy en GNU/Linux, y ni que hablar sobre Ubuntu.&lt;br /&gt;Lo único que tendremos que hacer es ejecutar "&lt;span style="font-family: courier new;"&gt;apt-get install squid&lt;/span&gt;".&lt;br /&gt;Ahora viene la parte de la configuración, que si bien tampoco es complicada, merece que se explique de forma adecuada para evitar problemas.&lt;br /&gt;Lo primero que tendremos que hacer es ingresar al directorio &lt;span style="font-family: courier new;"&gt;/etc/squid&lt;/span&gt;, y copiar el archivo instalado por omisión, &lt;span style="font-family: courier new;"&gt;squid.conf&lt;/span&gt;, como &lt;span style="font-family: courier new;"&gt;squid.conf.original&lt;/span&gt;, o lo que querramos que sea.&lt;br /&gt;Ahora, lo editaremos, y le cambiaremos las siguientes líneas:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: courier new;"&gt;visible_hostname dshecsa01&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;acl mi_red src 192.9.200.0/24&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;http_access allow mi_red&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ahora, bajamos y subimos el squid con el set de comandos "&lt;span style="font-family: courier new;"&gt;/etc/init.d/squid stop&lt;/span&gt;" y "&lt;span style="font-family: courier new;"&gt;/etc/init.d/squid start&lt;/span&gt;", y todo queda funcionando.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Apéndices&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solución de backup&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para realizar backups, y dado que remarco la característica de "hogareño" de este servidor, nada como un buen DVD-RW.&lt;/p&gt;  &lt;p&gt;Para poder usarlo con GNU/Linux, nada como implementar el excelente programa K3B, realmente una versión mejorada de cualquier programa de grabación de CD/DVD que haya visto.&lt;/p&gt;  &lt;p&gt;Como siempre, lo instalo con el comando "&lt;span style="font-family: courier new;"&gt;apt-get install k3b&lt;/span&gt;". Pero como el K3B requiere de otros programas para funcionar perfectamente, ejecuto también "&lt;span style="font-family: courier new;"&gt;apt-get install normalize-audio&lt;/span&gt;", "&lt;span style="font-family: courier new;"&gt;apt-get install sox&lt;/span&gt;", "&lt;span style="font-family: courier new;"&gt;apt-get install transcode&lt;/span&gt;", "&lt;span style="font-family: courier new;"&gt;apt-get install vcdimager&lt;/span&gt;", y me faltaría algo que levante el eMovix, pero por ahora no lo encuentro. Con lo que tengo, ya podré realizar la mayor parte de todas las cosas que generalmente hago con un programa como el K3B.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-400700106974013059?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/400700106974013059/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=400700106974013059' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/400700106974013059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/400700106974013059'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/05/servidor-hogareo-versin-gnulinux.html' title='Servidor Hogareño - Versión GNU/Linux'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-880931877142429375</id><published>2008-05-09T01:15:00.022-03:00</published><updated>2009-02-25T21:16:23.409-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Diario íntimo de mis experiencias con OpenSolaris en una HP DV5000</title><content type='html'>&lt;p&gt;Prefacio &lt;br /&gt;Veremos que la primer instalación de OpenSolaris corresponderá a la 2008.05, que es la que me ha llegado a mis manos en este momento. A medida que vaya actualizando el sistema operativo, encontraremos en el futuro modificaciones a este blog basándonos en estas novedades.  &lt;br /&gt;Bueno, gracias a la llegada a mis manos del tan esperado Indiana, decidí instalarlo en mi notebook HP DV5000, desde la cual estoy escribiendo este artículo (eso quiere decir que instalarlo pude, y fue bien sencillo).  &lt;br /&gt;Símplemente, reventé mis particiones de GNU/Linux (no lloren, tengo otra de mis máquinas que tiene instalada la versión que hasta ahora veo con mayor performance del mercado, que es Arch Linux), y decidí comenzar con el proceso de booteo desde el LiveCD, para luego darle un click en el ícono de "Install OpenSolaris".  &lt;br /&gt;Todo se instaló perfectamente. Pude setear los locales en español, que en este momento ya me parece una rareza para lo que venía siendo OpenSolaris (o mejor dicho, antes de OSOL 2008.05, lo que era el SXDE y el SXCE), y tengo un bonito escritorio con el Compiz instalado, gracias a haber habilitado los efectos de escritorio. Para esto, sólo hice un click derecho sobre el escritorio, y cuando abrí el selector de fondos de escritorio, elegí habilitar los efectos. Nada más, y absolutamente igual a cualquier escritorio que haya instalado en esta misma máquina.  &lt;br /&gt;Lo que vengo probando de funciones de Internet realmente funcionan muy bien, está bastante aceitado, y es hasta más rápido que en el entorno Ubuntu que tenía antes (eso no es raro, Ubuntu ya hace tiempo que tardaba en bootear hasta más que Windoze eXtraPollution SystemPanic 2, que no es poco).  &lt;br /&gt;Ahora bien, comienzo este blog para registrar las vueltas que tendré que dar hasta tanto tenga configurado todo de la forma que debiera.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sonamos&lt;/span&gt;  &lt;br /&gt;Comienzo por el sonido, que por lo visto, es parte de las figuritas difíciles de OpenSolaris.  &lt;br /&gt;Mi tarjeta de sonido, según la salida del comando &lt;span style="font-family:Courier New;"&gt;/usr/X11/bin/scanpci&lt;/span&gt; es:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# ./scanpci | grep -i audio   &lt;br /&gt;Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller&lt;/span&gt;&lt;/p&gt; &lt;span style="font-family:Courier New;"&gt;   &lt;p&gt;  &lt;br /&gt;&lt;/p&gt;   &lt;span style="font-family:Trebuchet MS;"&gt;Los primeros indicios que encontré en la red son poco alentadores, así que me tendré que poner a ver cómo hago que esta belleza me entregue el primer mp3 como la gente.   &lt;br /&gt;&lt;br /&gt;Así es que me bajé de la página del proyecto OSS el paquetito famoso, y lo instalé:&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# pkgadd -d oss-solaris-v4.0-1015-i386.pkg   &lt;br /&gt;&lt;br /&gt;The following packages are available:    &lt;br /&gt;1 oss Open Sound System    &lt;br /&gt;(i386) v4.0-1015    &lt;br /&gt;&lt;br /&gt;Select package(s) you wish to process (or 'all' to process    &lt;br /&gt;all packages). (default: all) [?,??,q]:    &lt;br /&gt;&lt;br /&gt;Processing package instance &lt;oss&gt;from &lt;/oss&gt;   &lt;br /&gt;...    &lt;br /&gt;Using as the package base directory.    &lt;br /&gt;## Processing package information.    &lt;br /&gt;## Processing system information.    &lt;br /&gt;## Verifying disk space requirements.    &lt;br /&gt;## Checking for conflicts with packages already installed.    &lt;br /&gt;## Checking for setuid/setgid programs.    &lt;br /&gt;&lt;br /&gt;This package contains scripts which will be executed with super-user    &lt;br /&gt;permission during the process of installing this package.    &lt;br /&gt;&lt;br /&gt;Do you want to continue with the installation of &lt;oss&gt;[y,n,?] y    &lt;br /&gt;&lt;br /&gt;Installing Open Sound System as &lt;oss&gt;   &lt;br /&gt;&lt;br /&gt;## Installing part 1 of 1.    &lt;br /&gt;...    &lt;br /&gt;[ verifying class &lt;none&gt;]    &lt;br /&gt;[ verifying class &lt;drvcfg&gt;]    &lt;br /&gt;## Executing postinstall script.    &lt;br /&gt;Setting up Open Sound System....please wait    &lt;br /&gt;add_drv -m '* 0666 root sys' osscore    &lt;br /&gt;add_drv -m '* 0666 root sys' -i '"pci8086,27d8"' hdaudio    &lt;br /&gt;add_drv -m '* 0666 root sys' -i '"usbif,class1"' ossusb    &lt;br /&gt;add_drv -m '* 0666 root sys' vmix    &lt;br /&gt;add_drv -m '* 0666 root sys' sadasupport    &lt;br /&gt;&lt;br /&gt;Open Sound System installation complete    &lt;br /&gt;&lt;br /&gt;You can use the osstest command to test audio playback in your system.    &lt;br /&gt;&lt;br /&gt;It may be necessary to reboot the system before all devices get properly    &lt;br /&gt;detected by the system.    &lt;br /&gt;&lt;br /&gt;Installation of &lt;oss&gt;was successful.    &lt;br /&gt;&lt;/oss&gt;&lt;/drvcfg&gt;&lt;/none&gt;&lt;/oss&gt;&lt;/oss&gt;&lt;/span&gt;Rebooteé, ejecuté "osstest", saqué los pedazos de parlante que quedaron pegados en las paredes, y seguí adelante con mi linda máquinita.  &lt;br /&gt;Ni hablar de la forma en la que mejoró el sonido cuando levanté el programa gráfico "ossxmix", y cambié, en el jack, la entrada de "mix" por "pcm1". Créanme, suena mejor, por lejos!!!  &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:tr;"&gt;&lt;span style="font-weight: bold;"&gt;Samba de mi esperanza&lt;/span&gt;  &lt;br /&gt;Otra de las cosas que yo, exótico del arte informático quise hacer es montar un espacio compartido de un servidor Samba que tengo en mi casa. Claro, lo que pasa es que yo soy un extraño vicioso, y quiero cosas estrafalarias en mi máquina. Por eso no me funcionó de entrada. Acá les copio la salida inmoral al intentar montar el filesystem famoso:&lt;/span&gt;   &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# mount -F smbfs -o username=hecsa,password=QueTeImportaPibe //192.9.200.2/hecsarchive /media/samba   &lt;br /&gt;mount_smbfs: service "svc:/network/smb/client:default" not enabled.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;Divino, no? Claro, montar un filesystem Samba es algo que no es común que la gente haga, así que es muy lógico tener que habilitar un servicio, mandar un cohete a la luna y pensar en la fusión en frío para poder volver a hacer uso de este extraño feature.  &lt;br /&gt;Así que me cargué de paciencia, y ejecuté este comando:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# svcadm enable -r smb/client   &lt;br /&gt;Luego de un mensaje que me decía que dependía de varios rezos para que funcione, pude montar mi filesystem, pero con otros flags, como podrán ver aquí:    &lt;br /&gt;-bash-3.2# mount -F smbfs //hecsa@192.9.200.2/hecsarchive /media/samba    &lt;br /&gt;Password:    &lt;br /&gt;-bash-3.2# df -k /media/samba    &lt;br /&gt;Filesystem kbytes used avail capacity Mounted on    &lt;br /&gt;//hecsa@192.9.200.2/hecsarchive    &lt;br /&gt;240362656 170983848 69378808 72% /media/samba&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;Bien! Primer prueba superada! Ya tengo mi filesystem Samba montado en mi máquina! Juro que mi emoción es sublime. Y casi no tuve que hacer nada.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No me gustaban los horarios de oficina&lt;/span&gt;  &lt;br /&gt;Bueno, ahora me digo: quiero editar un archivo de "oficina". Oh, sorpresa, en el menú de Oficina sólo tengo el Evince. Parece que en una oficina la gente sólo mira PDF's, por ejemplo.  &lt;br /&gt;Vamos, nomás. Instalemos el openoffice, a ver si podemos llegar a la victoria, y tener un sistema de escritorio funcionando como se debe.  &lt;br /&gt;Ejecuto los siguientes comandos:  &lt;br /&gt;(Para ver qué paquete instalar)&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# pkg search -s pkg.opensolaris.org openoffice   &lt;br /&gt;INDEX ACTION VALUE PACKAGE    &lt;br /&gt;basename dir opt/openoffice.org2.4/share/registry/modules/org/openoffice pkg:/openoffice@2.4.0-0.86    &lt;br /&gt;basename dir opt/openoffice.org2.4/share/registry/modules/org/openoffice pkg:/openoffice@2.4.0-0.86    &lt;br /&gt;basename dir opt/openoffice.org/share/registry/modules/org/openoffice pkg:/openoffice@0.5.11-0.79&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;(Y para instalarlo)&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# pkg install openoffice   &lt;br /&gt;DOWNLOAD PKGS FILES XFER (MB)    &lt;br /&gt;Completed 1/1 4220/4220 420.64/420.64    &lt;br /&gt;&lt;br /&gt;PHASE ACTIONS    &lt;br /&gt;Install Phase 4798/4798    &lt;br /&gt;&lt;/span&gt; &lt;br /&gt;Luego de un minuto, me aparecieron en el menú los íconos tan gloriosos de todos los productos incluídos en el OpenOffice, y la familia oficinista, contenta...  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El compilado de este verano&lt;/span&gt;  &lt;br /&gt;Ahora bien, como de seguro voy a tener que usar el compilador C para poder hacer uso de cualquier driver que haya que compilar, me decido a buscarlo, simplemente con "which gcc". No está en el path, o directamente no está instalado.   &lt;br /&gt;Vamos:  &lt;br /&gt;(Para buscar el paquetito)  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# pkg search -s pkg.opensolaris.org gcc   &lt;br /&gt;INDEX ACTION VALUE PACKAGE    &lt;br /&gt;basename link usr/bin/gcc pkg:/SUNWgcc@3.4.3-0.86    &lt;br /&gt;basename link usr/bin/gcc pkg:/SUNWgcc@3.4.3-0.79    &lt;br /&gt;basename link usr/bin/gcc pkg:/SUNWgcc@3.4.3-0.75    &lt;br /&gt;basename link usr/bin/gcc pkg:/SUNWgcc@3.4.3-0.86    &lt;br /&gt;(Y para instalar el bendito paquete)    &lt;br /&gt;(Me baja el SUNWgcc, SUNWbinutils, SUNWarc, y el SUNWhea)    &lt;br /&gt;-bash-3.2# pkg install SUNWgcc    &lt;br /&gt;DOWNLOAD PKGS FILES XFER (MB)    &lt;br /&gt;Completed 4/4 2035/2035 88.13/88.13    &lt;br /&gt;&lt;br /&gt;PHASE ACTIONS    &lt;br /&gt;Install Phase 2457/2457&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;Bien, ahora ya puedo hacer mi "Hola, mundo" sin problemas...bueno, casi...  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Permiso, por favor!&lt;/span&gt;  &lt;br /&gt;Lo cierto es que para poder hacer muchas de las cosas que quiero hacer, necesitaría algo parecido al gtksu, lo cual no pido, por lo que ejecuto:  &lt;br /&gt;-bash-3.2# usermod -R root hecsa  &lt;br /&gt;UX: usermod: hecsa is currently logged in, some changes may not take effect until next login.  &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[ACTUALIZACIÓN]&lt;/span&gt; Luego de algunas actualizaciones, este efecto ya no aparece. El entorno se ha vuelto bastante dinámico. Creo que estoy viviendo el proceso de construcción de un S.O., pero esta vez, en serio.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mi primera vez&lt;/span&gt;  &lt;br /&gt;Sin duda, tiene que tener un apartado especial el dedicado a la primera actualización. Lo intenté realizar desde la interface gráfica, y al menos al primer intento, no pude. La razón? No sé, la veremos luego.  &lt;br /&gt;Un delirio que cuando me fijo en el tamaño de lo que tenía que bajar de internet era ni más ni menos que 1900 MB!!!  &lt;br /&gt;Encima de eso, la interface sistemáticamente se colgó cuando llegaba a los 1000 MB, por lo que tuve que cerrar la interface gráfica, y volver a abrirla.  &lt;br /&gt;No sé qué problema tiene, pero cuatro pulgares para abajo al gestor de paquetes, justamente por haber hecho que baje ni más ni menos que 1 GB de información que luego no sirvió para nada.  &lt;br /&gt;Aparte, las descripciones de los upgrades son un chiste.  &lt;br /&gt;Me aparecieron sólo cuatro paquetes que actualizar, y con sus dependencias llegamos a ese tamaño abominable.  &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[ACTUALIZACIÓN]&lt;/span&gt; - Luego de determinados updates, las imágenes son más chicas, y el gestor de paquetes ha sido mejorado notablemente. Ahora puedo instalar paquetes desde allí, si bien mi naturaleza de antaño me hace usar CLI. Bien por los desarrolladores, que están haciendo las cosas como se debe!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The (wired) network is the computer&lt;/span&gt;  &lt;br /&gt;Bueno, le llegó la hora a la tarjeta de red WiFi.  &lt;br /&gt;La cuestión es sencilla: en esta maquinita, he instalado los sistemas operativos más estrafalarios que una mente enferma pueda concebir. Y no me refiero sólo a los compatibles con M$ o Linux.  &lt;br /&gt;Pero al intentar levantar la tarjeta de red WiFi, oh, sorpresa, ni siquiera se digna a encender su luz.  &lt;br /&gt;Al ejecutar un scanpci, como lo hice antes, encontré que la tarjeta es una:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;pci bus 0x0006 cardnum 0x00 function 0x00: vendor 0x8086 device 0x4222   &lt;br /&gt;Intel Corporation PRO/Wireless 3945ABG Network Connection&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;Cómo hacemos para que esta verdadera belleza funcione?  &lt;br /&gt;Buscando en foros del más allá, encontré uno que mencionaba que era necesario instalar el driver wpi, y por eso ejecuté:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# pkg search wpi   &lt;br /&gt;INDEX ACTION VALUE PACKAGE    &lt;br /&gt;basename file kernel/drv/wpi pkg:/SUNWwpi@0.5.11-0.86    &lt;br /&gt;driver_name driver wpi pkg:/SUNWwpi@0.5.11-0.86&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;...quería ver si había algo de ese estilo dando vueltas por ahí.  &lt;br /&gt;Pero la sorpresa la tuve cuando quise instalarlo, y me encontré con que ya estaba en el sistema:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;-bash-3.2# pkg install SUNWwpi   &lt;br /&gt;Nothing to install in this image (is this package already installed?)&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;Entonces...qué le pasa a la niña?  &lt;br /&gt;Bueno, el primer lugar para buscar es en /var/log/messages. Lo que ahí encontré fue esto:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;May 10 01:38:38 invid wpi: [ID 133862 kern.warning] WARNING: wpi_init(): timeout waiting for firmware init&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;Entonces, usamos la munición gruesa:  &lt;br /&gt;La salida del comando &lt;span style="font-family:Courier New;"&gt;scanpci -v&lt;/span&gt; nos entrega:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;pci bus 0x0006 cardnum 0x00 function 0x00: vendor 0x8086 device 0x4222   &lt;br /&gt;Intel Corporation PRO/Wireless 3945ABG Network Connection    &lt;br /&gt;CardVendor 0x103c card 0x135b (Hewlett-Packard Company, Card unknown)    &lt;br /&gt;STATUS 0x0010 COMMAND 0x0046    &lt;br /&gt;CLASS 0x02 0x80 0x00 REVISION 0x02    &lt;br /&gt;BIST 0x00 HEADER 0x00 LATENCY 0x00 CACHE 0x10    &lt;br /&gt;BASE0 0xd2100000 addr 0xd2100000 MEM    &lt;br /&gt;MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x03&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;...y el comando prtconf -pv nos entrega:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;Node 0x000017   &lt;br /&gt;assigned-addresses: 82060010.00000000.d2100000.00000000.00001000    &lt;br /&gt;reg: 00060000.00000000.00000000.00000000.00000000.02060010.00000000.00000000.00000000.00001000    &lt;br /&gt;compatible: 'pciex8086,4222.103c.135b.2' + 'pciex8086,4222.103c.135b' + 'pciex8086,4222.2' + 'pciex8086,4222' + 'pciexclass,028000' + 'pciexclass,0280' + 'pci8086,4222    &lt;br /&gt;.103c.135b.2' + 'pci8086,4222.103c.135b' + 'pci103c,135b' + 'pci8086,4222.2' + 'pci8086,4222' + 'pciclass,028000' + 'pciclass,0280'    &lt;br /&gt;model: 'Network controller'    &lt;br /&gt;power-consumption: 00000001.00000001    &lt;br /&gt;devsel-speed: 00000000    &lt;br /&gt;interrupts: 00000001    &lt;br /&gt;subsystem-vendor-id: 0000103c    &lt;br /&gt;subsystem-id: 0000135b    &lt;br /&gt;unit-address: '0'    &lt;br /&gt;class-code: 00028000    &lt;br /&gt;revision-id: 00000002    &lt;br /&gt;vendor-id: 00008086    &lt;br /&gt;device-id: 00004222    &lt;br /&gt;pcie-capid-pointer: 000000e0    &lt;br /&gt;pcie-capid-reg: 00000011    &lt;br /&gt;name: 'pci103c,135b'&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;Cómo sé que se trata de la tarjeta en cuestión, y no de la ethernet? Sencillo, porque en "model" no dice nada de ethernet.  &lt;br /&gt;Intenté, entonces, removiendo el driver con el comando "rem_drv wpi", y luego agregándolo de nuevo con "add_drv -i "pci8086,4222" wpi", pero no pasó nada...snif...  &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[ACTUALIZACIÓN]&lt;/span&gt; - Luego de pasar la versión snv_95, todo funciona perfectamente. Me conecto a redes WiFi como con cualquier otro S.O. Brillante!!! Luego de la snv_101a, hasta me aparece un bonito mensaje avisándome de cuanto elemento necesito para saber el estado de la red. Brillante x 2!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ambiente de desarrollo en pleno desarrollo&lt;/span&gt;  &lt;br /&gt;Bueno, otra de las cosas que deseo de mi escritorio es que me sirva como ambiente de desarrollo.  &lt;br /&gt;Para eso, necesito tener instalado por lo menos el Netbeans 6.1, y el Glassfish v2.  &lt;br /&gt;El Netbeans 6.1 no está en el repositorio, pero por suerte sí el 6.0.1, que dado mi nivel de desarrollo es más que suficiente para lo que necesito hacer.  &lt;br /&gt;El tema viene con el Glassfish, que no está disponible desde el momento en el cual se instala el sistema operativo, como pasó con el OpenOffice.org.  &lt;br /&gt;Al final, descubrí la trampita. Hay que hacer un "&lt;span style="font-family:Courier New;"&gt;pkg install glassfishv2&lt;/span&gt;", lo cual me muestra un par de cuestiones interesantes.  &lt;br /&gt;La primera, que es medio complicado tener que hacer una búsqueda por palabras para saber qué paquete instalar, y la segunda (que es peor que la primera) es que no hay un metapaquete que permita, en el futuro, pasar automáticamente de una versión a la siguiente, si uno lo desea.  &lt;br /&gt;Atención, que se entienda bien este punto, no me parece mal que haya un paquete específico para el Glassfish V2, ya que si queremos mantener una versión, y probar con la siguiente, podríamos hacer, en el futuro, "&lt;span style="font-family:Courier New;"&gt;pkg install glassfishv3&lt;/span&gt;", por ejemplo; el problema está en los que, como yo, quieren tener metapaquetes para este tipo de programas.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[ACTUALIZACIÓN]&lt;/span&gt; - Actualicé a la versión &lt;span style="font-weight: bold;"&gt;snv_101b&lt;/span&gt;, y para mi sorpresa, toda la paquetería de Netbeans quedó en versión 6.5, que es la última y flamante. Realmente, un caño. Mis viejos proyectos siguien siendo reconocidos por la nueva IDE, y cuando los ejecuto, aún funcionan. Mis miedos, por ahora, quedan guardados.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ojo con las actualizaciones&lt;/strong&gt;  &lt;br /&gt;Atención, y mucho cuidado con las actualizaciones, dado que hay ciertas cosas que nos pueden poner los pelos de punta, sobre todo si nuestra máquina no tiene un dual boot (o aún teniéndolo), o si se hizo la instalación por default, como ocurre en el 100% de los casos que conozco (y eso incluye el uso de ZFS como filesystem por default).  &lt;br /&gt;El tema viene cuando al ejecutar "&lt;span style="font-family:Courier New;"&gt;pkg refresh&lt;/span&gt;", y luego "&lt;span style="font-family:Courier New;"&gt;pkg image-update&lt;/span&gt;", y si por algún motivo se genera un error en la actualización del sistema operativo, ya que quedará un ambiente de booteo absolutamente inutilizable, que sólo rebooteará nuestra máquina, sin ningún sistema operativo.&lt;br /&gt;Ante eso, lo primero que nos vendrá a la mente es hacer un "&lt;span style="font-family:Courier New;"&gt;beadm destroy nombre_del_ambiente&lt;/span&gt;". Bueno, dado uno de esos bonitos bugs, ocurrirá que el GRUB quedará completamente vacío, motivo por el cual habrá que encontrar formas bastantes extravagantes de recuperar todo nuestro trabajo sobre el entorno OpenSolaris.  &lt;br /&gt;Dado lo anterior, el nivel de recuperabilidad del sistema operativo, en caso de problemas (incluso generados por las mismas "características" del mismo), se puede considerar como prácticamente nulo (al menos en la versión que estoy probando).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[ACTUALIZACIÓN]&lt;/span&gt; - Luego de algunas actualizaciones, este problema desapareció por completo, y ahora todo me funciona perfectamente en lo que respecta a boot environments. Cool!&lt;br /&gt;Sumado a lo anterior, encontré algunas cosas interesantes respecto de las actualizaciones, como por ejemplo: &lt;br /&gt;- La actualización a &lt;strong&gt;snv_94&lt;/strong&gt; nunca funcionó. Sencillamente, el sistema operativo rebooteaba sin parar, por lo que tuve que eliminar el boot environment a mano, con el comando beadm destroy. &lt;br /&gt;- La actualización a &lt;strong&gt;snv_95&lt;/strong&gt; sí funcionó, pero no me dejó arrancar el Sun xVM (VirtualBox) a menos que antes le configure una variable de ambiente (mensaje: Failed to create COM object), específicamente la LD_NODIRECT=1. Esta solución me ha llevado un buen rato para encontrarla. Espero que no se repita la experiencia. De todas formas, intenté instalar un RH4.5, y luego de todo el proceso de instalación, se queda colgado en "booting the kernel". A seguir remando, que hay agua para rato.&lt;br /&gt;- La actualización a &lt;span style="font-weight: bold;"&gt;snv_101b&lt;/span&gt; fue buenísima, no sólo me instaló las últimas versiones de Netbeans, OpenOffice, etc., sino que aparte cambió mucho de lo que antes no me funcionaba. Se puede decir que ahora me anda todo, inclusive la tarjeta WiFi en forma nativa, cosa que verifiqué hoy mismo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resumen general, mi general - Just the facts&lt;/span&gt;  &lt;br /&gt;Como resumen, sólo se puede pensar en que el OpenSolaris es un buen sistema operativo, sus funciones de virtualización están perfectamente armadas, como pasa con el SXDE y SXCE.  &lt;br /&gt;Un aspecto interesante es que automáticamente detectó mi tarjeta gráfica, y la puso a trabajar, inclusive activando el entorno Compiz.  &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-880931877142429375?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/880931877142429375/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=880931877142429375' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/880931877142429375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/880931877142429375'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/05/diario-ntimo-de-mis-experiencias-con.html' title='Diario íntimo de mis experiencias con OpenSolaris en una HP DV5000'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-6047247095675620759</id><published>2008-03-05T23:41:00.001-02:00</published><updated>2008-03-05T23:41:13.677-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Conversión de smbpaswd a tdbsam</title><content type='html'>&lt;p&gt;En este art&amp;#237;culo veremos la forma de modificar la configuraci&amp;#243;n de un servidor Samba para que las cuentas de los usuarios pasen de almacenarse en el formato smbpasswd (espec&amp;#237;ficamente en el archivo /etc/samba/smbpasswd, por ejemplo), al formato tdbsam.&lt;/p&gt;  &lt;p&gt;Esta nota nace como respuesta a algunas necesidades planteadas por usuarios de Samba 3 que, luego de haber estado trabajando un buen tiempo con este producto, descubrieron que un error en la configuraci&amp;#243;n del archivo smb.conf implic&amp;#243; que las cuentas de los usuarios se almacenen en el archivo smbpasswd, en lugar de en la base de datos tdbsam, como es conveniente.&lt;/p&gt;  &lt;p&gt;En uno de los casos particulares, se produjo el error de, en lugar de agregar, en el archivo de configuraci&amp;#243;n smb.conf la entrada &amp;quot;passdb backend = tdbsam&amp;quot;, se hab&amp;#237;a agregado la entrada &amp;quot;passwd backend = tdbsam&amp;quot;, con lo cual, al ejecutar el comando smbstatus, aparec&amp;#237;a el mensaje:&lt;/p&gt;  &lt;p&gt;Unknown parameter encountered: &amp;quot;passwd backend&amp;quot;    &lt;br /&gt;Ignoring unknown parameter &amp;quot;passwd backend&amp;quot;&lt;/p&gt;  &lt;p&gt;Como no se hab&amp;#237;a advertido dicho error, se agregaron usuarios, los que fueron depositados en el archivo smbpasswd, en lugar de en la base tdbsam, como se deseaba.&lt;/p&gt;  &lt;p&gt;El error lo pude reproducir, y encontr&amp;#233; que mi usuario, en la base smbpasswd, aparec&amp;#237;a de la siguiente forma:&lt;/p&gt;  &lt;p&gt;hecsa:&lt;strong&gt;1002&lt;/strong&gt;:ABBF1A51422B62ABB14FD58A657A9CA6:D4356FE201D376F0FEE4B2A355BA1FB1:[U     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ]:LCT-47CF4463:&lt;/p&gt;  &lt;p&gt; Como dato anecd&amp;#243;tico, veamos que el UID que aparece en este archivo es el mismo que aparece en /etc/passwd para este usuario:&lt;/p&gt;  &lt;p&gt;hecsa:x:&lt;strong&gt;1002&lt;/strong&gt;:1002::/home/hecsa:/bin/sh&lt;/p&gt;  &lt;p&gt;Ahora bien, manos a la obra! Lo que tenemos que hacer es usar el comando pdbedit, con las opciones de exportaci&amp;#243;n e importaci&amp;#243;n de contenidos, de manera que el usuario &amp;quot;hecsa&amp;quot; aparezca en la base de datos tdbsam.&lt;/p&gt;  &lt;p&gt;Cambiaremos la entrada en el archivo /etc/samba/smb.conf, pasando de ser &amp;quot;passwd backend = tdbsam&amp;quot; a ser &amp;quot;passdb backend = tdbsam&amp;quot;, bajaremos y subiremos el servicio de samba con el comando &amp;quot;/etc/init.d/samba stop; /etc/init.d/samba start&amp;quot;.&lt;/p&gt;  &lt;p&gt;Entonces ejecutaremos:&lt;/p&gt;  &lt;p&gt;servidor:/etc/samba# pdbedit -i smbpasswd -e tdbsam   &lt;br /&gt;Importing accout for hecsa...ok&lt;/p&gt;  &lt;p&gt;...y listo!&lt;/p&gt;  &lt;p&gt;Ya podemos verificar a nuestro usuario, que ahora se encuentra en la base de datos tdbsam.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-6047247095675620759?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/6047247095675620759/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=6047247095675620759' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/6047247095675620759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/6047247095675620759'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/03/conversin-de-smbpaswd-tdbsam.html' title='Conversión de smbpaswd a tdbsam'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-8888459522105992236</id><published>2008-01-27T18:00:00.000-02:00</published><updated>2008-01-29T01:14:57.647-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vhcs2'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='seguridad'/><title type='text'>Segurización de un servidor VHCS2 sobre Ubuntu Server 6.06 - Apache 2 / PHP / Postfix / FTP / iptables</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Segurización de PHP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una de las primeras cosas que hacemos para segurizar el servidor, es cambiar el php.ini, que en el caso de esta versión de sistema operativo, se encuentra ubicado en &lt;span style="font-family:courier new;"&gt;/etc/php4/apache2/php.ini&lt;/span&gt;.&lt;br /&gt;Se le agregarán las siguientes entradas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;disable_functions = system, exec, shell_exec, passthru, pcntl_exec, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, popen, pclose, ini_alter, virtual, openlog, escapeshellcmd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;allow_url_fopen = Off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;register_globals = Off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se debió quitar de la lista una serie de valores que originalmente estaban, como ser:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;putenv&lt;/span&gt;: Con este valor, no funciona el Squirrelmail.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;set_time_limit&lt;/span&gt;: Con este valor, no funciona el Webmail OverLook3.&lt;br /&gt;&lt;br /&gt;Finalmente, deberemos reiniciar el servidor web para efectivizar los cambios realizados. Eso, como veremos en general en todos los casos, lo hacemos con &lt;span style="font-family:courier new;"&gt;/etc/init.d/apache2 stop&lt;/span&gt; y &lt;span style="font-family:courier new;"&gt;/etc/init.d/apache2 start&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segurización de Apache 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se cambió el shell por omisión del usuario dueño de la ejecución de apache 2 (en mi caso es el &lt;span style="font-family:courier new;"&gt;www-data&lt;/span&gt;). El shell era &lt;span style="font-family:courier new;"&gt;/bin/sh&lt;/span&gt;, y ahora se configuró el &lt;span style="font-family:courier new;"&gt;/usr/sbin/nologin&lt;/span&gt;.&lt;br /&gt;Al mismo tiempo, se cambió el directorio del usuario del apache, que por mosión era el &lt;span style="font-family:courier new;"&gt;/home/www-data&lt;/span&gt;, por el &lt;span style="font-family:courier new;"&gt;/dev/null&lt;/span&gt;.&lt;br /&gt;Esos dos cambios se realizaron editando directamente el archivo &lt;span style="font-family:courier new;"&gt;/etc/passwd&lt;/span&gt;, localizando la entrada del usuario &lt;span style="font-family:courier new;"&gt;www-data&lt;/span&gt;, y cambiando sus campos para que queden así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;www-data:x:33:33:www-data:/dev/null:/usr/sbin/nologin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego se bajó y subió el servidor apache con el comando &lt;span style="font-family:courier new;"&gt;/etc/init.d/apache2 stop&lt;/span&gt; y &lt;span style="font-family:courier new;"&gt;/etc/init.d/apache2 start&lt;/span&gt;.&lt;br /&gt;Se verificó que las páginas existentes funcionen bien, y con eso tenemos el primero de nuestros procesos de segurización de apache 2 finalizado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segurización de SSH - Uso de fail2ban&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El sistema fail2ban es famoso por reaccionar ante muchos intentos de login fallidos por parte de una direccion IP en particular, impidiendo que se le proporcione el mismísimo promt del ssh.&lt;br /&gt;Este comando reacciona incorporando reglas de iptables en forma automática.&lt;br /&gt;Para implementarlo en Ubuntu 6.06 (viejo al día de la fecha, pero muy buen servidor), se deberá instalar con el típico comando de la suite apt:&lt;br /&gt;&lt;br /&gt;# apt-get install fail2ban&lt;br /&gt;&lt;br /&gt;Una vez instalado, se podrá recorrer su configuración verificando el archivo /etc/fail2ban.conf, que entre otras cosas, deberá tener:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DEFAULT]&lt;/span&gt;     (esta sección tendrá los valores mínimos necesarios para que fail2ban funcione correctamente)&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;logtargets = /var/log/fail2ban.log&lt;/span&gt;  (archivo donde se logueará el comportamiento de fail2ban)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;maxfailures = 5&lt;/span&gt;     (cantidad de intentos de login antes de estar baneado)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;bantime = 600&lt;/span&gt;     (tiempo que el servidor no permitirá conexiones desde esa dirección IP)&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[MAIL]&lt;/span&gt;     (esta sección indicará las configuraciones destinadas a enviar un mail cada vez que se banee una dirección IP)&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;enabled = true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;host = mail.firulete.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;port = 25&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;user = webmaster@firulete&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;password = firulete01&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;from = fail2ban@firulete.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;to = webmaster@serverremoto.com&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Luego de estas configuraciones, sólo tendremos que reinicializar el servicio fail2ban con los comandos &lt;span style="font-family:courier new;"&gt;/etc/init.d/fail2ban stop&lt;/span&gt; y &lt;span style="font-family:courier new;"&gt;/etc/init.d/fail2ban start&lt;/span&gt;.&lt;br /&gt;Podremos verificar que el programa está en ejecución mediante un "&lt;span style="font-family:courier new;"&gt;ps aux | grep fail2ban&lt;/span&gt;", que nos entregará algo del estilo "&lt;span style="font-family:courier new;"&gt;/usr/bin/python /usr/bin/fail2ban&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En breve estaré agregando las secciones correspondientes a la forma de segurizar el servidor de correo, Postfix, el FTP server, y la forma cómo configurar el sistema iptables2 para que tengamos, aparte de todo, un excelente firewall en nuestro servidor VHCS2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-8888459522105992236?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/8888459522105992236/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=8888459522105992236' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8888459522105992236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/8888459522105992236'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/01/segurizacin-de-un-servidor-vhcs2-sobre.html' title='Segurización de un servidor VHCS2 sobre Ubuntu Server 6.06 - Apache 2 / PHP / Postfix / FTP / iptables'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-7666144126863403397</id><published>2008-01-27T14:27:00.000-02:00</published><updated>2008-02-03T17:31:04.186-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Instalacion de Windows XP, Linux Ubuntu 7.10 y Solaris Express Developer Edition snv_70b en una Dell D630</title><content type='html'>Ante todo, como el disco de esta máquina tiene ni más ni menos que 120 GB, lo dividimos en particiones.&lt;br /&gt;Generamos una de 60 GB para Windows, una de 4 GB para el swap de Linux, una de 26 GB para el / de Linux, y una de 30 GB para Solaris Express Developer Edition snv_70b (OpenSolaris, para los amigos).&lt;br /&gt;Para realizar esta instalación, ante todo, implementamos Windows, que es el que mas problemas puede traernos a la hora de pensar en que su boot loader, de instalarse al final, borraría todas las demas opciones de sistemas operativo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalacion de Ubuntu 7.10&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego, implementamos Ubuntu, y para ello sólo tendremos que utilizar las dos particiones que comenté más arriba.&lt;br /&gt;Por un lado, creamos una partición de swap (en mi caso será la segunda partición del disco) de 4 GB, dado que la Dell D630 tiene 2 GB de RAM; y por el otro, generamos una partición de / de 26 GB.&lt;br /&gt;La instalación luego de estas sencillas consideraciones deberá continuar como es común, dado que el instalador de Ubuntu detectará nuestra tarjeta gráfica, que si bien no está completamente soportada, por lo menos nos permitirá disfrutar de una definición de 1440x900.&lt;br /&gt;No debemos olvidar, dado que luego lo necesitaremos, copiar FUERA DE ESTA MÁQUINA el archivo &lt;span style="font-family:courier new;"&gt;/boot/grub/menu.lst&lt;/span&gt;. Es importantísimo que este copiado, y que sea fuera de esta máquina. Si aún usas papel, es una excelente idea copiarlo a mano, no es tanto!&lt;br /&gt;Dado que SXDE detectará la partición de swap como si fuera una mas de SXDE, deberemos desactivarla, y cambiarle el flag de partición, de &lt;span style="font-weight: bold;"&gt;linux-swap&lt;/span&gt;, a algo del estilo &lt;span style="font-weight: bold;"&gt;ext2,&lt;/span&gt; por ejemplo.&lt;br /&gt;Para hacer eso, hay dos caminos, ambos sencillos.&lt;br /&gt;Uno es utilizar el comando &lt;span style="font-family:courier new;"&gt;fdisk&lt;/span&gt;, con el cual podremos seleccionar la opcion "t", para hacer un toggle del flag de la partición, y otro, que es que yo estuve usando, es la instalación de la utilidad "&lt;span style="font-family:courier new;"&gt;gparted&lt;/span&gt;".&lt;br /&gt;Al abrirlo, podremos ver esa partición, que en mi caso es la segunda del disco, desactivarla, y luego cambiarle su flag por el de ext2. No olvides presionar el botón "&lt;span style="font-weight: bold;"&gt;Apply&lt;/span&gt;" del "&lt;span style="font-family:courier new;"&gt;gparted&lt;/span&gt;" luego de hacer los cambios!&lt;br /&gt;Luego de ejecutar la instalación por omisión, hay ciertas cosas que no quedaron funcionando del todo.&lt;br /&gt;Una de ellas es el sonido. Lo que hice para que funcione fue lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# more /proc/asound/devices&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  2:        : timer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  3:        : sequencer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instalé el paquete &lt;span style="font-family:courier new;"&gt;linux-backports-modules&lt;/span&gt;, y agregué las siguientes líneas en el archivo &lt;span style="font-family:courier new;"&gt;/etc/modprobe.d/alsa-base&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;options snd-hda-intel model=dell-m42&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al rebootear, las cosas han cambiado un poco. Al hacer un "&lt;span style="font-family:courier new;"&gt;more /proc/asound/devices&lt;/span&gt;", aparece lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  2:        : timer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  3:        : sequencer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  4: [ 0- 1]: digital audio playback&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  5: [ 0- 0]: digital audio playback&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  6: [ 0- 0]: digital audio capture&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  7: [ 0- 1]: hardware dependent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  8: [ 0- 0]: hardware dependent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  9: [ 0]   : control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Inmediatamente instalé el paquete &lt;span style="font-family:courier new;"&gt;alsamixergui&lt;/span&gt;, para poder hacer el ajuste fino del volumen. Levanté un poco el volumen, y con el xmms, pude escuchar mis mp3 sin ningún problema.&lt;br /&gt;&lt;br /&gt;Otra cosa que no funcionó bien desde el principio fueron los efectos de pantalla. Para ello, lo que hice fue agregar en el archivo /etc/xdg/compiz/compiz-manager la siguiente línea:&lt;br /&gt;&lt;br /&gt;SKIP_CHECKS=yes&lt;br /&gt;&lt;br /&gt;Nuevamente rebooteé, y probé los efectos. Funcionaron, pero debo cuidarme de no enloquecer con algunos, porque pueden "colgarme" la interface gráfica.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalación de SXDE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En la lista de instalaciones, finalmente llegamos al SXDE.&lt;br /&gt;Para instalarlo no hay mucha ciencia, dado que con sólo presionar "F12" en nuestra máquina cuando está arrancando, y luego, en el menú de booteo, seleccionar la entrada de CD/DVD, el SXDE comenzará su proceso de instalación.&lt;br /&gt;La "falta de ciencia" se debe a que, en esta versión de Osol, no podremos especificarle el tamaño de las particiones, por lo que sólo le diremos que utilice el espacio que queda, que será de 30 GB.&lt;br /&gt;Cuando termina de instalarse (aproximadamente una hora, en la Dell D630), rebootearemos el sistema, y veremos con alegría la ventana de login. Pero esto recién empieza!&lt;br /&gt;Tocamos el archivo &lt;span style="font-family:courier new;"&gt;/boot/grub/menu.lst&lt;/span&gt;, para agregarle las entradas de Linux, dado que el boot loader por omisión, ahora, es el implementado por SXDE.&lt;br /&gt;Se le agregan las siguientes entradas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;title        Ubuntu 7.12, kernel-2.6.22-14-generic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root        (hd0,2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;kernel      /boot/vmlinuz-2.6.22-14-generic root=UUID=1ddc3c8e-168b-4f68-ab82-36203ed5dd1b ro quiet splash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;initrd    /boot/initrd.img-2.6.22-14-generic&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Estas entradas, que parecen tan crípticas, son un extracto del /boot/grub/menu.lst de la partición de Linux, que habiamos copiado antes.&lt;br /&gt;&lt;br /&gt;Una vez que hayamos salvado esta porción del archivo, y hayamos rebooteado con Linux Ubuntu, no olvidemos volver a configurar el espacio de swap, es decir, dejarlo como estaba antes. Para eso, volvemos a ejecutar el "gparted", tal como lo hicimos en la sección anterior.&lt;br /&gt;&lt;br /&gt;Luego de rebootear para ver que todo funciona bien, tendremos un gran problema, y es ver que nuestra tarjeta de red, una Broadcom NetXtreme, basada en el chipset 5755M, no levanta para nada.&lt;br /&gt;Luchando contra el hardware, encontre un link que apuntaba a poder bajar un driver del sitio &lt;a href="http://www.opendrivers.com"&gt;"opendrivers".&lt;/a&gt;&lt;br /&gt;Luego de bajarlo, lo instale con:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# pkgadd -d ./BRCMbcme.pkg&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;...y la tarjeta de red, luego de un&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# ifconfig bcme0 plumb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# ifconfig bcme0 192.9.200.3 netmask 255.255.255.0 up&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;...quedó funcionando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-7666144126863403397?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/7666144126863403397/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=7666144126863403397' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7666144126863403397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/7666144126863403397'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/01/instalacion-de-windows-xp-linux-ubuntu.html' title='Instalacion de Windows XP, Linux Ubuntu 7.10 y Solaris Express Developer Edition snv_70b en una Dell D630'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4459575960491643708.post-2237767654331624904</id><published>2008-01-20T15:41:00.011-02:00</published><updated>2008-05-31T15:55:39.105-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><title type='text'>Virtualización de linux 2.4 y 2.6 con Brandz en OpenSolaris</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Procedimiento rápido para la generación de una Brand Linux 2.4 y 2.6 con OpenSolaris (SXDE, SXCE y OpenSolaris)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Éste es un procedimiento para generar una zona de linux 2.4 ó 2.6, usando el esquema de virtualización BrandZ de OpenSolaris.&lt;br /&gt;Como habrán podido notar, no se soporta aún la implementación de una Brand desde el CD de instalación de la misma distro de GNU/Linux, por lo que se deberá generar, previamente, usando un sistema operativo ya instalado, mediante los comandos:&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# cd /&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# tar jcf distro24.tar.bz --exclude distro24.tar.bz --exclude dev --exclude proc --exclude sys --exclude boot *&lt;/span&gt;&lt;br /&gt;Sencillamente, para generar una brand de linux 2.4, que por omisión posee sus archivos xml de configuración en el sistema operativo inmediatamente después de haber sido implementado, se deberán seguir estos pasos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# mkdir /zones&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; (éste será el directorio donde se depositarán los archivos correspondientes a la zona que vamos a crear)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# zonecfg -z linux24&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; (éste será el nombre que le daremos a esta zona)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;linux24: No such zone configured (lógicamente, como aún no existe, aparecerá este mensaje)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Use 'create' to begin configuring a new zone.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; create -t SUNWlx&lt;/span&gt; (aquí creamos la nueva zona, basándonos en el template SUNWlx)&lt;br /&gt;&lt;br /&gt;Si el brand a generar fuera del tipo de kernel 2.6, habría que ejecutar, en lugar del anterior, el siguiente comando:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; create -t SUNWlx26&lt;/span&gt; (aquí creamos la nueva zona, basándonos en el template SUNWlx26, similar al anterior)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; set zonepath=/zones/linux24&lt;/span&gt; (aquí anunciamos cuál será el path donde se ubicarán los archivos de esta zona)&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&amp;gt; set autoboot=true&lt;/span&gt; (esto sólo lo agregamos si queremos que cuando bootee el equipo, es decir, la zona global, también bootee la zona linux24)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; add capped-memory&lt;/span&gt; (al principio no hacía esto, pero luego de ver cómo una zona podía comerse toda mi RAM, lo tomé como buena práctica)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:capped-memory&amp;gt; set physical=128m&lt;/span&gt; (sólo le doy 128 Mbytes. Soy tacaño)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:capped-memory&amp;gt; set swap=256m&lt;/span&gt; (el doble de RAM para el swap, también limitado, y también una buena práctica para evitar que los recursos sean comidos por esta zona)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:capped-memory&amp;gt; end&lt;/span&gt; (finalización de la configuración de la memoria limitada)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; add net&lt;/span&gt; (aquí agregamos una interface de red a la zona)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:net&amp;gt; set address=192.9.200.105/24&lt;/span&gt; (aquí configuramos la dirección de red de esta interface de red, nótese cómo el prompt cambió, y ahora tiene como último elemento la palabra "net")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:net&amp;gt; set physical=bge0&lt;/span&gt; (le decimos que la tarjeta de red por la cual se deberá salir es la bge0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:net&amp;gt; end&lt;/span&gt; (finalizamos la configuración de la tarjeta de red)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;zonecfg:linux24&amp;gt; add attr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24:attr&amp;gt; set name="audio"&lt;/span&gt; (agregamos un atributo, que será la utilización de una interface de audio)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;zonecfg:linux24:attr&amp;gt; set type=boolean&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;zonecfg:linux24:attr&amp;gt; set value=true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;zonecfg:linux24:attr&amp;gt; end&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; commit&lt;/span&gt; (hacemos efectivos los cambios)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;zonecfg:linux24&amp;gt; exit&lt;/span&gt; (salimos de la configuración de la zona linux24)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# zoneadm -z linux24 install -d /Documents/distro24.tar.bz2&lt;/span&gt; (atención, antes de poder instalar la zona, debemos poseer un archivo con el árbol de archivos de una distro basada en el kernel 2.4, tareada y bzipeada)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Aquí veremos aparecer mensajes como éstos:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Installing zone 'linux24' at root directory '/zones/linux24'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;from archive '/Documents/centos_fs_image.tar.bz2'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This process may take several minutes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Setting up the initial lx brand environment.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;System configuration modifications complete.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Setting up the initial lx brand environment.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;System configuration modifications complete.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Installation of zone 'linux24' completed successfully.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Details saved to log file:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;"/zones/linux24/root/var/log/linux24.install.2453.log"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# zoneadm -z linux24 boot&lt;/span&gt; (booteamos la zona linux24)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# zlogin -C linux24&lt;/span&gt; (le decimos -C para que arranque la consola, y podamos ejecutar los pasos de configuración que faltan)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Aquí finalizará la instalación de la zona linux. Salir de la&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;consola con ~.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# zlogin linux24&lt;/span&gt; (ahora sí, con el sentimiento del deber cumplido, nos logueamos a esta zona)&lt;br /&gt;&lt;br /&gt;Luego, algo importante a realizar, si es que vas a realizar instalaciones de productos que tienen grandes dependencias con los nombres de los servidores, es cambiar el archivo &lt;span style="font-weight: bold;font-family:courier new;" &gt;/etc/hosts&lt;/span&gt; de forma tal que contenga entradas como las siguientes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;127.0.0.1 localhost.localdomain localhost&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;192.9.200.105 linux24.hecsa.com.ar linux24&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora bien, para bajar esta zona linux 2.4, sólo tendremos que ejecutar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# zoneadm -z linux24 halt&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Nada más para una zona linux con kernel 2.4 (medio viejo al día de la fecha, pero sirve para unas cuantas cosas, como en mi caso, que pruebo si me funcionan viejos programas).&lt;br /&gt;&lt;br /&gt;Esto que has visto en las notas de más arriba, lo reproduje bajándome el archivo SUNWlx26.xml, e instalando un CentOS 4 update 5, es decir, una distro basada en RPM's, y con kernel 2.6.x, y me anduvo perfectamente.&lt;br /&gt;&lt;br /&gt;UN DETALLE INTERESANTE es que hay diferencias notables de espacio cuando la máquina virtualizada está en funcionamiento, y cuando se baja:&lt;br /&gt;&lt;br /&gt;a) Funcionando:&lt;br /&gt;&lt;br /&gt;-&lt;span style="font-family:courier new;"&gt;bash-3.2# du -ks ./*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;5817    ./bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./boot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3    ./dev&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;42021    ./etc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;12    ./home&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./initrd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;86294    ./lib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./lost+found&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4    ./media&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./misc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./mnt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;3128241    ./native&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./opt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;21    ./proc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;289    ./root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;17527    ./sbin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./selinux&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./srv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;28    ./tftpboot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;44    ./tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1759444    ./usr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;47876    ./var&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;b) Sin funcionar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;-bash-3.2# du -ks ./*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;5817    ./bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./boot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./dev&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;42021    ./etc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;12    ./home&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./initrd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;86294    ./lib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./lost+found&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4    ./media&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./misc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./mnt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;21    ./native&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./opt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./proc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;290    ./root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;17527    ./sbin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./selinux&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    ./srv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;28    ./tftpboot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;43    ./tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1759444    ./usr&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;47876    ./var&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dónde es que está la diferencia? Fíjense en el directorio /native. Ahí tienen unos 3 GB.&lt;br /&gt;Eso se debe a que cuando no está funcionando todos sus directorios, que son dev, etc, lib, proc, tmp, usr y var, están vacíos, pero cuando arranca la máquina virtualizada, se llena con contenidos típicos del GNU/Linux que está en ejecución.&lt;br /&gt;&lt;br /&gt;Ahora bien, si la prueba salió bien, y queremos eliminar esa zona, qué comandos utilizaríamos? Eso es bien sencillo, sólo hay que ejecutar dos comandos (atención, no hay undo de estos comandos, así que a ejecutarlos con bastante cuidado!):&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:courier new;"&gt;# zoneadm -z linux24 uninstall&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# zonecfg -z linux24 delete&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Así de sencillo!&lt;br /&gt;&lt;br /&gt;Apéndice: Diferencias entre el archivo SUNWlx.xml y el SUNWlx26.xml&lt;br /&gt;&lt;br /&gt;A simple vista (con perdón de la palabra), las diferencias que existen entre el archivo SUNWlx.xml y el SUNWlx26.xml es sólo la línea, por lo que la sección que la contiene quedaría:&lt;br /&gt;&lt;br /&gt;&lt;textarea style="width: 100%;"&gt;&lt;zone name="default" zonepath="" autoboot="false" brand="lx"&gt;&lt;attr name="kernel-version" type="string" value="2.6"/&gt;&lt;/zone&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;Eso es todo, y con esta línea extra se podrá generar el archivo en cuestión.&lt;br /&gt;&lt;br /&gt;&lt;zone name="default" zonepath="" autoboot="false" brand="lx"&gt;Suerte con las pruebas!!!&lt;/zone&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;HeCSa.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4459575960491643708-2237767654331624904?l=hsaltiel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hsaltiel.blogspot.com/feeds/2237767654331624904/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4459575960491643708&amp;postID=2237767654331624904' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/2237767654331624904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4459575960491643708/posts/default/2237767654331624904'/><link rel='alternate' type='text/html' href='http://hsaltiel.blogspot.com/2008/01/virtualizacin-con-brandz-en-opensolaris.html' title='Virtualización de linux 2.4 y 2.6 con Brandz en OpenSolaris'/><author><name>Hernan Saltiel</name><uri>https://profiles.google.com/107106864275809727483</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-izYZktpQSMg/AAAAAAAAAAI/AAAAAAAAAas/1PQ8VnvuYXs/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
