Archivo

Archive for the ‘Proyectos’ Category

Mi red hogareña – KVM, pfSense, OpenWRT, VLAN, etc.

19 junio, 2017 3 comentarios

Después de no haber publicado nada en el blog desde hace más tiempo del que quiero admitir, hoy les vengo a contar que hace tiempo que tengo una red hogareña, lo cual no es ningún secreto, que no es la típica red del común de la gente, sino que tiene ciertos toques que serían más necesarios y justificables en una pequeña empresa más que en una casa, pero … y bueno, ¿porque no? 🙂

Si bien hace tiempo que venía andando muy bien, tuve un llamado de atención hace unos días, cuando encontré un supuesto intruso en mi red, ya que había un lease DHCP que no pertenecía a ningún dispositivo de los que se conectan normalmente. Noté esto porque tengo las direcciones MAC asociadas a las IP que se le asignan a dichos dispositivos y justamente había un dispositivo con una dirección MAC desconocida.

Esto llevó a que decidiera cerrar aún más la seguridad de mi red, por la cual ya no se asignan direcciones IP a dispositivos que no tengan la dirección MAC habilitada en mi firewall y debido a esto me vi en la necesidad de implementar una red wifi para invitados, la cual fue implementada mediante una VLAN para mantener el tráfico separado de la WLAN y la LAN internas.

Antes de pasar a describir como está configurada mi red, si, ya se, el control de acceso por MAC no garantiza mucha seguridad. Pero también está la seguridad WPA2, por lo que hay una combinación de las dos para acceder, lo cual tampoco significa que sea 100% seguro, pero es mayor seguridad que utilizar solamente una de las dos opciones anteriores.

En cuanto a hardware hay unas cuantas cosas, nada muy espectacular, pero suficiente para hacer el trabajo requerido. Sin entrar en detalle de los clientes de la red, les comento el hardware que hay instalado:

  • Cisco 677
  • Arris Surfboard SBG6700-AC
  • PC comun y silvestre que se cree un server de virtualización con KVM, la cual virtualiza a:
    • una PC más común y silvestre aún que se cree un grade class firewall
    • a otra PC también de medio pelo, que se cree que es un server con Debian
  • Router Netgear R7000 AC1900 dual band Gigabit (esto es lo mejorcito de la red) con Xwrt-Vortex en lugar del firmware de Netgear
  • Router TP-Link WDR3600 N600 dual band Gigabit (este era bueno hace un tiempo pero ya evidencia su edad) con OpenWRT para poder usar VLANs
  • Switch genérico de 8 bocas que tiene no se cuantos años…. (por lo cual no, no es Gigabit)
  • HD de 2TB USB3
  • Varias cosas como Chromecast, RaspBerrys, teléfobnos celulares, tablet, notebooks, algún que otro server Sun muy añejo y algunas cosas más dando vueltas como módulos ESP8266 para Arduino, pero eso ya es para otro post.

Ahora bien, en lugar de seguir contándoles el porque de mis decisiones, les voy a mostrar en un diagrama como está configurada mi red y comentaré algunos detalles de la misma.

Network pablot

Mi red “hogareña”

Bien, vayamos por partes “dijo Jack”, como les decía no es la típica red hogareña, y en primera instancia vemos que tenemos dos proveedores de Internet, Fibertel (12Mb) y Arnet (3Mb), cable y ADSL respectivamente.

Esto es así porque mi esposa utiliza la red para trabajar y los proveedores de Internet en Argentina no son todo lo confiables que uno quisiera, por lo que al tener dos disminuye notablemente la posibilidad de quedarnos sin Internet en casa.

Como se ve en el diagrama, el vínculo de Arnet está conectado a través de un Cisco 677 en modo bridge, el cual es como decimos nosotros “un fierro”. Este “bichito” tiene más de 15 años funcionando 24 hs al día, casi 365 días al año (excepto vacaciones) y funciona a la perfección… por algo Cisco es Cisco en materia de networking.

En cambio el vínculo de Fibertel desde el 2013 ya va por el tercer router, ya han pasado dos Motorola Surfboard SBG901 que han dejado de funcionar y ahora hay un Arris Surfboard SBG6700-AC. En todos los casos siempre también en modo bridge. Les recomiendo pedirle a Fibertel que se los pase a modo bridge y evitar así la aventura de hacerlo ustedes, ya que aparentemente vienen con el firmware modificado y si bien se puede poner en modo bridge si uno es lo suficientemente empecinado, se reniega bastante y no vale la pena tanto esfuerzo, pero si quieren experimentar, adelante!

Ambos vínculos están conectados a una PC con Linux, la cual tiene 3 placas de red, dos para los vínculos de internet y uno para la LAN. Esta PC hace las veces de server de virtualización gracias a KVM, en la cual tengo virtualizados un par de servers, uno de ellos es el firewall, el cual es pfSense y el otro un server Debian para experimentar un poco.

Dos notas al margen, la primera es que para este setup funcionan mucho mejor los drivers virtio tanto para los HD virtualizados como para las placas de red; la segunda es que tengo conectado a esta PC por el puerto paralelo una pequeña cajita con 8 leds que pueden configurarse para mostrar el estado de diferentes cosas del server, en mi caso el tráfico de red en las distintas placas de red, todo esto gracias a un viejo soft llamado portato.

Este server, no tiene monitor y se accede por SSH y de ahí mediante un server X11 instalado en cualquier cliente para levantar el software de configuración de KVM, en este caso el Virtual Machine Manager y libvirt como se ve en la siguiente imagen.

virt-manager

Virtual Machine Manager

Como más de uno ya se habrá dado cuenta, pfSense es el corazón de toda mi red, el cual recomiendo enfáticamente, ya que brinda una amplia gama de posibilidades en cuanto a configuración y es realmente muy seguro. Está basado en FreeBSD, el cual es uno de los S.O. con mejor seguridad que existen, incluso superior a Linux.

En mi caso tengo configurada una VPN mediante OpenVPN que me permite conectarme remotamente a mi red desde cualquier lado.

También como algunos habrán notado tengo configurado IPv6 en mi led local y un tunnel IPv6 con Hurricane Electric para poder navegar por Internet con IPv6 por lo sitios que lo soportan. Por lo que me conecto a Hurricane Electric mediante mi tunel y luego de ahi salgo por IPv6 a Internet. Por el momento lo tengo configurado solo sobre el vínculo de Fibertel, pero en un futuro lo configuraré para Arnet también.

Gracias a las posibilidades multi WAN de pfSense, tengo configurado balanceo de carga y failover, para que de esta manera cuando se cae uno de los dos vínculos de Internet, se sigue navegando de manera transparente sin que se corte la conectividad.

Cuidado que esto no es lo mismo que sumar los anchos de banda, eso es otra cosa que se conoce como bonding.

Por último, también en pfSense tengo configurada una VLAN sobre la LAN, la cual se extiende a dos routers inalámbricos. La VLAN para invitados me permite tener completamente aislada mi LAN de lo que los invitados puedan hacer en la VLAN, ya que la LAN es totalmente invisible para la VLAN de invitados.

Respecto a los routers, uno de ellos, conectado a la interface de la LAN de mi pfSense es un router Netgear R7000 con el firmware Xwrt-vortex que mejora notablemente las posibilidades del firmware original de Netgear. El R7000 es un excelente router AC1900 dual 802.11ac Gigabit.

De todas maneras el R7000 funciona como un AP, pero tiene configurada la VLAN para la red wifi de invitados, la cual es provista por un segundo router un poco más antiguo, un TP-Link WDR3600, también en modo AP, el cual es un N600 también dual band Gigabit, que tiene instalado el firmware OpenWRT que permite utilizar VLANs ya que el original no lo soporta.

En realidad no hay ninguna necesidad de tener dos routers para montar la VLAN de invitados, pero como el pobre WDR3600 se había quedado sin trabajo cuando llegó el R7000 de reemplazo, decidí que una buena tarea para el era ocuparse de la wifi para invitados.

Volviendo al R7000, tiene un disco externo de 2TB conectado por USB3 que hace las veces de una mini NAS de los pobres para mi red. También hay un pequeño switch de 8 bocas para conectar algunos otros dispositivos.

Luego de esto pasamos a una variada gama de dispositivos que van y vienen, varios teléfonos celulares, notebooks, tabletas, chromecast, raspberrys, consolas de juego, smartTV, smartwatch, etc.

Aprovechando cuando se puede los 5GHz de la red y sino los 2.4GHz para los dispositivos que no lo soportan.

Como verán no es la típica red hogareña, pero es mi red hogareña y es bastante segura y versátil para las necesidades mías y de mi familia, siendo también lo bastante segura como para estar relativamente tranquilo en cuanto a la seguridad.

Se habrán dado cuenta que pasé por muchos temas los cuales casi no fueron detallados, ya que transformar esto en un tutorial lo haría muy extenso, pero sin llegar al extremo de dar explicaciones detalladas de como montar algo similar, estoy abierto a recibir las consultas que puedan tener sobre algunos detalles de la red, ya que como imaginaran hay mucha configuración sobre la que no me he explayado, sobre todo en el caso de pfSense que es donde más he trabajado para lograr la configuración actual y varias reglas del firewall en las distintas interfaces que tiene; que en realidad si bien son 3 físicamente, en la práctica son 5, como se ve a continuación en el Dashboard de pfSense, ya que el tunel IPv6 de Hurricane Electric está sobre la interface de Fibertel y la VLAN está sobre la interface de la LAN.

56279ac4-0cac-47cd-bacb-b83e817f7414.png

Anuncios

Linux virtual sever con KVM, pfSense, m0n0wall, FreeNAS y NAS4Free

23 abril, 2013 Deja un comentario
Screen Shot of Installing Ubuntu Server

English: Screen Shot of Installing Ubuntu Server (Photo credit: Wikipedia)

Finalmente luego de mucho tiempo encontré el tiempo para un viejo proyecto que tenía en mente desde hace mucho, montar servidores virtuales, lo cual fue posible gracias a Linux KVM.

Este proyecto me permitiò cumplir a la vez con 3 objetivos distintos. El primero era poder filtrar de alguna manera la navegación dentro de mi red hogareña, el segundo montar un server NAS, y el tercero, dejar abierta la posibilidad de seguir añadiendo servidores para distintos fines que pudieran surgir en el futuro, Asterisk por ejemplo.

Para esto, de ninguna manera iba a poder utilizar servidores reales, ya que no contaba con un lugar donde ubicar equipos físicos con espacio libre y por otro lado, estaba totalmente descartado destinar dinero para ir sumando equipos. Debido a esto, inmediatamente la mejor solución se planteaba por el lado de utilizar servidores virtuales gracias a la virtualización.

La idea de utilizar VMWare o Virtualbox quedó deshechada casi desde el comienzo, ya que el hardware que tenía disponible para utilizar estaría en un lugar de difícil acceso y sin monitor ni teclado, por lo que poder manejarlo remotamente desde una consola era uno de los requerimientos del proyecto. Por otra parte debido a los pocos recursos del hardware disponible (un viejo Athlon de 5 años de antiguedad!), la idea era instalar Ubuntu Server sin ningún entorno gráfico como Gnome que consuma recursos valiosos.

Finalmente la solución ideal resulto ser Ubuntu server con KVM (kernel based virtual machine), que resultó ser ideal debido a su fácil utilización por medio de la consola y su bajo consumo de recursos. Una vez decidido esto, ahora había que pasar a la elección de los S.O. a instalar en las máquinas virtuales. La idea original fue utilizar mi viejo y querido amigo, IPCop, pero realmente creo que el desarrollo de IPCop se ha quedado en el tiempo y como los recursos de hardware disponible para el servidor eran muy modestos, el candidato ideal parecía ser m0n0wall, un firewall de muy modestos requerimientos de hardware.

PfSense

Luego de analizarlo un poco, finalmente decidí ir por pfSense, que si bien está basado en m0n0wal, es más flexible ya que permite el agregado de varios paquetes adicionales que le brindan mucha funcionalidad extra, pero mantiene el bajo consumo de recursos de hardware para funcionar. Esa posibilidad de adicionar paquetes de software realmente permite agregar funcionalidad al producto original, y parte la funcionalidad principal que buscaba, el poder filtrar la navegación en mi red, era brindada jutamente por uno de esos paquetes no soportados por m0n0wall.

En cuanto al NAS, en principio pensé en FreeNAS, pero no funcionaba bien en la máquina virtual ya que era muy lento. Nunca logré descubrir el porque, ya que también se supone que funciona con pocos recursos, pero finalmente probé con Nas4Free que es una evolución del primero y funciona muy bien, por lo que fue el elegido.

freenas

freenas (Photo credit: cerami)

Una vez llegado a este punto, solo fue cuestión de probar y configurar un poco, resolviendo algunos problemas menores, como colisiones en la red, que eran debidos a los drivers de las placas de red virtuales. Simplemente cambiando la el driver por otro fue posible solucionarlo.

A estas alturas ya llevo cerca de un mes con pfSense gestionando la conexión a Internet sin mayores problemas que ocasionales picos de carga del pobre Atlhon (totalmente previsible!), pero solo cuando se corren algunas tareas programadas, por lo que el próximo paso será invertir en un buen hardware para ser utilizado como host del KVM.

Calentando motores…

17 marzo, 2010 Deja un comentario

Pues si, en eso estoy. De a poco estoy volviendo a colocar las cosas en su lugar y ya estoy pensando en el próximo episodio del podcast.

Ya tengo un par de temas dando vueltas por mi cabeza y solo necesito ponerme a grabar, Bueno, no es poca cosa, pero al menos tengo algunas ideas, porque hasta hace algùn tiempo ni siquiera tenía fuerzas para eso!

No, no estaba enfermo, ni nada por el estilo, solo muy cansado por el trabajo tanto afuera como dentro de casa.

Pero de a poco las cosas van mejorando y creo que si he encontrado tiempo para comenzar a postear algunas cosas en el blog, tambièn puedo comenzar a grabar de a poco nuevos episodios del podcast.

¡Estén atentos!

Categorías:actualidad, Geek, podcast, Proyectos, Tech Etiquetas: ,

15000 descargas del podcast

9 marzo, 2009 1 comentario

Hace apenas un par de días pasamos las 15000 descargas del podcast, todo un logro para un podcast hecho en los ratos libres (que como ya saben cada vez son menos).
Quiero expresarles mi más sincero agradecimiento a todos los oyentes que pacientemente esperan la salida de un nuevo episodio.
Prometo demorar menos tiempo en sacar el próximo.

Gracias a todos.

Posted by ShoZu

Categorías:Geek, podcast, Proyectos, Tech

Mini tutorial para encriptar datos con certificados digitales en PHP

27 junio, 2008 5 comentarios

Resulta que estoy trabajando en un proyecto que requiere tener un cuidado especial con ciertos datos y me puse a buscar una alternativa segura para hacerlo. Luego de investigar un poco, decidí escribir un mini-tutorial para quienes necesiten algo parecido. Esto es solo la punta del iceberg, ya que brinda muchas más posibilidades de las que menciono en el tutorial. Espero que les sirva tanto como a mi.

Mini rack de comunicaciones de RASTI

5 febrero, 2008 10 comentarios

Desde hace tiempo que tenía ganas de hacer algo así. Es un mini rack para el router ADSL, el router wi-fi, el switch y un sencillo hardware de monitoreo fato in casa.

Intenté hacerlo con madera, pero la verdad que no quedaba bien, por lo que un día viendo a mi hijo jugar con los viejos RASTIs de mi infancia, se me ocurrió que tal vez pudiera usarlos para mi rack.

dsc04127.jpg

Y como ven la verdad que funcionó mucho mejor de lo esperado, ya que los ladrillitos T2 cuadrados de 4 pines calzan perfectamente en las ranuras que tiene el Linksys WRT54G para apilarlos. Y gracias a eso, como se ve en las fotos calzan perfectamete las cuatro columnas que soportan el resto de la estructura.

En el piso superior esta el router Cisco 677, en el que le sigue hay una cajita que tiene ocho leds que estan conectados al puerto paralelo de mi IPCop, y gracias a un soft indica con esos leds diferentes estados del IPCop y de la conexión en si. Luego hay un switch CNET de 8 bocas y por último un router wi-fi Linksys WRT54G con OpenWRT instalado.

dsc04134.jpg

Cada uno de los pisos solo tiene lo necesario para que calze el hardware correspondiente, pero no tiene el piso completo, lo que permite que los routers y el switch esten mucho más frescos que si estuvieran apoyados sobre el escritorio; sobre todo el Cisco 677 que levanta mucha temperatura, pero que gracias a estar rodeado de una corriente de aire por abajo, ahora esta más fresco que antes.

Si bien este es un modelo de prueba y seguramente trataré de mejorar el diseño, este rack tien un significado muy valioso para mi, ya que resulta muy reconfortante unir dos períodos de mi vida tan distantes entre si, El primero correspondiente a mi niñez, ya que los RASTIs son para mi un recuerdo sumamente importante de aquella época. El segundo, mi vida de adulto, en la que la informática tiene un papel fundamental, ya que es mi medio de vida, mi hobby y mi pasión.

Si a alguien le interesan más detalles, con gusto puedo dar instrucciones más detalladas de como construirlo, pero les aseguro que si uds. de chicos jugaban con RASTIs esto tendrá para uds. al igual que para mi, un significado muy importante.

Categorías:Geek, hardware, Proyectos, Tech

Feeds RSS en deremate.com.ar (2)

24 agosto, 2007 Deja un comentario

Continuando con el post Feeds RSS en deremate.com.ar y a pedido de HellMind acá va la explicación y los scripts para crearte tus propios feeds RSS en deremate.com.ar.

Básicamente el tema es crear un proceso que haga la búsqueda en deremate y luego generar los feeds RSS para que sean accedidos con cualquier agregador o reader que se quiera.

Quiero aclarar que esto fue realizado muy rápidamente y sin mucha dedicación, por lo cual obviamente hay muuuucho para mejorar.

El primer script lo llamaremos busquedas.sh (puede ser invocado con un cron) y se encarga de disparar el proceso de búsqueda. Por cada una de las cadenas de texto a buscar contenidas en lista-busqueda.txt dispara el script search-deremate.sh que realiza la búsqueda propiamente dicha.

busqueda.sh
	for i in `cat lista-busquedas.txt`; do search-deremate.sh $i; done


lista-busquedas.txt
	comodore
	commodore
	sun
	sparc
	tungsten+palm
	tungsten+palm+t5
	treo



search-deremate.sh
	wget -O $1 "http://www.deremate.com.ar/form/advSearch.asp?txtSearch=$1&Type=0&searchKey1=$1&objectFilter=0&auctionFilter=0&display=3&sortBy=&sortDirection=&searchKey123=&searchKey1222=&txtmoneda=1&txtregion1=0&txtCatg=&cbOperators=0&chkTarifVar=&txtUserMinCalif=&txtExcludeWords=&TipoVenta=0&chkUserMinCalif=False&chkExcludeWords=False&cbOperators2=0&chkSoloFoto=False&iTypePage=1&TipoRemates=0&TipoRemates1=0&TipoRemates2=0&IdCamino=0&TipoOrden=1" 
	grep viewItem $1 | grep -v comprainm | grep " " | sed 's//accdb/http://www.deremate.com.ar/accdb/g' | sed 's//<br>/g' | sed 's/ //g' > $1.html

Luego de todo esto, un script PHP se encarga de tomar los datos dejados por los scripts anteriores y armar el feed correspondiente (para crear los feeds utilizo una clase a tal fin denominada FeedCreator.class.php).

Este script PHP debe ser colocado en un web server y ser invocado (por ejemplo con un cron) para generar los feeds. Luego uno debe subscribirse directamente al feed cuyo nombre se corresponde directamente con cada uno de los strings de búsqueda punto xml.

Por ejemplo de acuerdo a nuestra lista-busquedas.txt, podemos subscribirnos al feed http://tusitio.tuservidor.com/path/commodore.xml



crearfeed.php
	<?

	include("feedcreator.class.php");
	// para cada feed

	$busquedas = file("lista-busquedas.txt");
	foreach( $busquedas as $busqueda ) {

	 $rss = new UniversalFeedCreator();	 $rss->title = "Deremate.com.ar: ".trim($busqueda);

	 $rss->description = "Remates Interesantes de ".trim($busqueda);	 // Aqui se debe reemplazar esta direccion por la del servidor donde pongas este script.

	 $rss->link = "http://tusitio.tuservidor.com";	 // Aqui tambien se debe reemplazar la siguiente direccion por el path completo

							 // al directorio donde se encuentre este sxcript.

	 $rss->syndicationURL = "http://tusitio.tuservidor.com/path/".$PHP_SELF; 

	 $lines = file(trim($busqueda).".html");
 	 foreach ( $lines as $line ) {

		$linea = eregi_replace("<a href=\"","",$line);

		$linea = eregi_replace("</a><br>","",$linea);

		$linea = eregi_replace("\"","",$linea);

		$arr = split(">",$linea);

		$arr[0] = trim($arr[0]);

		$arr[1] = trim($arr[1]);

		$item = new FeedItem();

		$item->title = $arr[1];

		$item->link = $arr[0];

		$item->date = time();

		$item->author = "Deremate.com.ar";

		$rss->addItem($item);

		}

	$rss->saveFeed("RSS1.0", trim($busqueda).".xml");

	}

	?>

NOTA: Cabe aclarar que esto esta desarrollado para plataformas Unix, en concreto esta corriendo sobre un Linux que utiliza mi proveedor de web-hosting. Habría que trabajarlo un poco para pasarlo a Windows. Por otro lado tampoco sería muy difícil modificarlo para generar feeds RSS de otros sitios.

Otra opción.

Otra manera mucho más sencilla y para la que no se necesita instalar nada es utilizar el robot que creé en OpenKapow al que pueden acceder directamente aquí.

La ventaja es que no se necesita tener un server donde instalar nada, ya que se utilizan directamente los servidores de OpenKapow. Por todo esto esta última opción resulta mucho más cómoda y conveniente. El único tema es que si quieren crearse sus propios robots hay que bajarse el desarrollador de OpenKapow.

Categorías:Geek, Programación, Proyectos, Tech
A %d blogueros les gusta esto: