domingo, 22 de abril de 2012

Proyecto TV con Linux y Neoware.

Ahora tengo otro proyecto, como me gusta meterme en problemas, pero me gusta.

Tenemos una TV Toshiba 42" que deseamos usarla para mostrar avances en la produccion diaria, como somos medio cerrados en cuestion de software, siempre deseamos hacer uso de herramientas de codigo libre, en este caso deseamos hacer uso de Linux y una PC de bajo consumo.

Hablando de una pc de bajo consumo me refiero las que no tienen abanicos, en mi caso es una neoware modelo CA10 corriendo a 800Mhz con 256RAM, este empresa fue absorvida por HP ni modo los grandes peces tragando a los pequenos.

Este tipo de cajas las he usadon con Pfsense 1/2 con exito usando una como medio de instalacion memorias CF para ello uso la version nano con soporte para VGA.

Por que opte por esta solucion? bien el lugar donde laboro esta devidido en naves, yo me localizo en el centro asi que mi red es tipo estrella, lo pocision de cada una de las TV's varia en distancia, hay una que esta a mas de 200 metros, se imaginan correr un cable de red de +150mts? se supone que lo maximo que podemos arrojar una cable tipo UTP es 150Mts mas haya seria un albur saber si la transmision llegara bien o no.

Necesitariamos ademas si tuvieramos problemas, repetidores y viendo el costo beneficio seria costoso, otra cosa, el servidor donde esta la BD es virtual no tiene tarjeta de video la MV(Maquina Virtual), tendria que confirgurar Xen para que le proporcionara una tarjeta con salida VGA a la MV, no tengo problemas aqui pero viendo todo lo que requiere seria $$$.

Enseguida me llego a la mente, por que no usar una pc pequeña? en la nave principal tengo un switch y la TV estaria a 20 metros de ahi? cuelgo la TV, le cuelgo el neoware y listo.

El costo es menor y rapido, creo que es lo mas conveniete, ahora viene la parte importante, que distro Linux usar?

Bien, esta caja por ser una TinyBox dirian los gueros, necesito una distro liviana, ligera y que se ejecute desde una CF o bien via USB?

Investigando o googleando me encontre con 2 versiones que cumplen lo que requiero:

  • Livianas
  • Corren desde USB
Slitaz y Puppy Linux.

Hubo algo que paso entre la TV y las versiones que acabo de mencionar, la TV no tiene entrada para VGA, solo HDMI, S-Video.

Neoware tiene solo VGA la tarjeta integrada, tratamos de usar un convertidor de VGA a HDMI, VGA a S-Video:

VGA-SVideo: La calidad de la imagen es pobre.
VGA-HDMI: Cada que puppy arranca desea configurar el modo grafico y a veces ambas se pierden ya que recuerden que Xorg siempre desea saber los datos tecnicos del monitor en este caso la TV y a veces no lo detectan bien.

Por ello optamos por conseguir una tarjeta de video con salida HDMI, el neoware tiene una slot PCI libre, asi que conseguimos la tarjeta con chip Ati Radeon 5450 PCI, salida directa a HDMI.

He probado ambas, me agrada mas slitaz pero he tenido problemas, como sigue:

 Slitaz 3

Lo que me agrado de slitaz es que el modo grafico se autoconfigura a diferencia de puppy que correo el wizard, pero la v3 tiene problemas para detectar mi tarjeta grafica, le pone a la configuracion de xorg como VESA el driver generico, aparece el modo grafico, pero cuando deseo usar cualquier menu, programa, lo que sea que abra los fonts se agrandan muchisimo, no he logrado que esto cambie, y he estado analizando bien este caso, aun no he parado aqui, ya que slitaz 3 tiene lo que deseo:

Firefox, php 5.2.x y lighthttpd.

Slitaz 4

La nueva version, probe en enero 2012 la version RC, pero tubo problemas, ahora ya salio la v4 release, mucho mejor que la v3, hasta vi por ahi el modulo de Radeon, muy estable, pero tengo unos problemas para instalar Forefox, Opera, Chrome, siempre que he tratado de instarlos, se me congela mi sistema, hasta la fecha no he logrado instalarlos y los necesito para el proyecto, ya ando en los foros viendo como arreglar el problema, ya que esta version esta mucho mejor.

Puppy Wary 5.3

Estable como slitaz y hasta la fecha es la unica distribucion que ha logrado mostrarse sin problemas en la TV de 42", no es tan automatica que slitaz pero funciona y ha logrado detectar mi tarjeta grafica, el unico inconveniente que los paquetes no vienen tan bien administrados como slitaz, y no tiene por ejemplo php, lighthttpd, para esto necesitamos instalar lo que ellos le llaman Pets que son paquetes creados por terceros, no he logrado ver como instalar lighhttpd ya que apache es muy pesado, asi que en cuanto a el modo grafico sin problemas. Solo necesito ver como instalar lo que necesito y ponerme a trabajar.

Por el momento Puppy lleva la delantera, les seguire contando.





lunes, 16 de abril de 2012

  Uno de los programadores tenia la intencion de instalar Ubuntu 10.10 en una maquina nueva que se le dio aqui en el trabajo, le sugeri que se fuera por un Raid-1 ya que su tarea era critica.
  El intento llevarlo a cabo, yo le baje el disco alternativo ya que el default no tiene soporte para crear espejos durante la instalacion, version x64.
  A los dias me hablo y me comento que no habia logrado hacer el arreglo que le marcaba un error y se detenia la operacion.
  Aparte que uno de los docs de wiki.ubuntu.com no esta muy explicito, hay pasos que se tienen que hacer pero ahi no vienen.
  Bien, al empezar a hacer lo deseabamos, cuando llegaba la parte donde se configuran los arreglos, uno selecciona los discos que vamos a usar para el arreglo, teniamos algo asi:

/dev/sda1 /boot 200MB
/dev/sda2 SWAP 100MB
/dev/sda3 / Resto +/- 318GB

/dev/sdb1 /boot 200MB

/dev/sdb2 SWAP 100MB

/dev/sdb3 / Resto +/- 318GB

El instalador te pregunta si antes de proceder deseas llevar a cabo el formateo de los discos ya que acaba de generar las particiones. Uno siempre le dice que si y empieza a hacerlo.

Aqui venia el problema, indicaba que uno de los discos no podia accesarlo porque la particion estaba siendo utilizada, me pregunte, quien la puede estar usando si no hay ningun servicio aun corriendo?

Lo intente algunaz veces y mismo problema, pense que podria ser el CD que se habia quemado mal, le ejecute un "check disk" a ver si el CD estaba correcto y no marco ningun error.

Despues pense en que podia ser el cable sata o bien la MB, muchas cosas se me vinieron a la mente, pero quedaba hacer algo, entrar a la consola Alt+F2 y nos da acceso.

Cuando ya tienes algo de experiencia en estos sistemas, sabemos que siempre estara disponible una consola para ejecutar comandos y ver si las cosas estan bien.

Ya con el poder de la consola, reiniciado la instalacion, me fui a revisar los discos con fdisk, mostraban particiones, asi que entre a cada uno de ellos y las borre, ademas le ejecute el comando antes de:

mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sda2
mdadm --zero-superblock /dev/sda3

Asi a cada disco antes de entrar a el fdisk.


Ya dentro, con los discos limpios, a el salir fdisk guarda los cambios en los discos, pero a veces te dice que no puede actualizar la tabla de particiones del OS, cuando pasa esto si no tenemos el comando partprobe no se puede actulizarla en tiempo real, entonces termine armar mis particiones en cada disco y reiniciar la instalacion.

Mi configuracion quedo como arriba:

*/dev/sda1 /boot 200MB Linux Raid Autodetect o FD

/dev/sda2 SWAP 100MB Linux Raid Autodetect o FD
/dev/sda3 / Resto +/- 318GB Linux Raid Autodetect o FD

*/dev/sda1 /boot 200MB Linux Raid Autodetect o FD
/dev/sda2 SWAP 100MB Linux Raid Autodetect o FD
/dev/sda3 / Resto +/- 318GB Linux Raid Autodetect o FD

Ya reiniciado el proceso, llegue hasta donde empieza la parte de las particiones en el wizard, me fui a la consola y revise que mis particiones estuvieran como las habia dejado, asi estaban.

Ya me retorne a el wizard, le pedi que escanera de nuevo los discos y me mostraba las particiones como tipo Raid, seleccione en el menu la opcion para Raid, le dije que asi como estaban las particiones las dejara, arme cada uno de mis arreglos, en total 3:

/dev/md0 /boot
/dev/md1 swap
/dev/md2 /

Termine le dije que procediera y boom continuo la instalacion sin problema, ya esta la maquina trabajando sin problemas, se actualizo y ya mero termino la vm con virtualbox.

En resumen, el wizard de ubuntu 10.10 x64 tiene algun bug, y de nuevo el poder de la consola sacandonos del hoyo, saludos!!!

domingo, 8 de abril de 2012

Freebsd 8: Batch para enviar ports a actualizar.

Bien, el post pasado nos actualiza diariamente nuestro arbol de ports a las 12:00AM, ahora yo no deseo saber diario que ports requieren actualizarse, yo deseo llevar a cabo esto todos los viernes a la 1:00AM.

Es sencillo, ya vimos como enviar correos via batch, ahora este tarea solo debe ejecutar un comando, enviarlo a un archivo de texto y enviar correo.

Comandos requeridos:

  • portversion
  • mail
Nuestros batch quedaria asi:

#!/bin/sh
 
### 1ro armamos el correo
SUBJECT="Ports Que Requieren Actualizarse"
EMAIL="yoarrobamidominio.com"
EMAILM="/root/updates/message1.txt"

### 2do Generamos nuestro contenido.
echo "Estos ports requieren actualizarse:" > $EMAILM
echo "                                   " >> $EMAILM
 
### 3do sacamos la informacion de actualizacion
/usr/local/sbin/portversion -l "<" >> $EMAILM

### 4to mandamos correo de aviso a root
/usr/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILM

###5to fin

Como podran ver, cada que se ejecuta el batch se genera el archivo message1.txt, ahora viene lo que ya sabemos, agregar el bit de ejecucion a el batch:

chmod +x portversion.sh

Ahora nuestro crontab quedaria asi:

0 1 * * * 5 /bin/sh /root/updates/portversion.sh

Porque no uso "weekly"?

Por que este se ejecuta los domingos, y yo deseo que sea ejecutada los viernes, el sexto parametro "5" es viernes para crontab, listo ahora solo esperamos nuestros correos cada que abramos nuestro inbox los viernes, saludos.




FreeBSD 8: Batch para actualizar los ports con envio de correo.

FreeBSD 8.2, deseo que se ejecute un batch diario a las 12:00AM, existe un parametro en crontab que nos ayuda:

@daily

Ahora nuestro batch debe de:

1) Actualizar nuestro arbol de ports.
2) Actualizar nuestro indice de ports.
3) Enviarnos un correo para saber que se llevo a cabo.

Bien, para esto vamos a requerir las siguientes herramientas:

  • cvsup
  • portsdb
  • mail
Ahora viene como queda nuestro batch:

#!/bin/sh
###2012-04-02
###Script para actualizar los ports via cron
###yoarrobamidominio.com

### 1ro actualizamos todo el arbol.
/usr/local/bin/cvsup -g -L 2 /root/updates/ports-cvs

### 2do bajamos el index de los ports
/usr/local/sbin/portsdb -Fu

### 3ro armamos el correo
SUBJECT="Actualizacion de Spam Server Ports"
EMAIL="yo@midominio.com"
EMAILM="/root/updates/message.txt"

### 4to mandamos correo de aviso a root
/usr/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILM

###5to fin

Recordar agregar el bit de ejecucion de este batch:

chmod +x updates.sh

Vamos viendo el contenido del archivo message.txt:

Se actualizaron los ports del servidor de spam.

Listo, salvamos nuestro archivo.

Ahora nuestro cron job:

@daily  /bin/sh /root/updates/update.sh

Listo, nuestro cronjob va a correr a las 12:00AM diario y nos va a enviar un correo, listo a esperar nuestros correos.

Freebsd 8.2: Migrando Perl 5.10 a Perl 5.12 portupgrade

Metodo portupgrade

Ya es momento de actualizar perl 5.10 hacia perl 5.12, spamassassin ya lo requiere, cuando lo deseamos actualizar via portupgrade nos dice que no puede ya llevar a cabo la operacion, algunos otros paquetes igual ya que dependen de esa version.


Recomendaciones antes de llevar a cabo estos pasos.

1) Tener nuestro arbol de ports a el dia.
2) Actualizar nuestros ports, algunos como spamassassin se negara a hacerlo posiblemente algunos otros tambien ya que muchos fueron configurados para perl 5.12, no hay problema, con este procedimiento deben actualizarse sin problemas.

Siguiendo las notas de el archivo UPDATED:

Portupgrade users:
    0) Fix pkgdb.db (for safety):
        pkgdb -Ff

    1) Reinstall new version of Perl (5.12):
        env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.12 -f perl-5.10.\*

    2) Reinstall everything that depends on Perl:
        portupgrade -fr perl

Primero que nada, en mi archivo make.conf debo deshabilitar el parametro:

# added by use.perl 2012-04-01 23:09:17
#PERL_VERSION=5.10.1 <--- comentario

Paso 0): pkgdb no me causo problemas ya que me marco un paquete que no me afecta.

Paso 1)

Ejecutar el comando asi:

env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.12 -f perl-5.10.\*

...
===>  Cleaning for perl-5.12.4_4
--->  Cleaning out obsolete shared libraries
[Updating the pkgdb in /var/db/pkg ... - 134 packages found (-0 +1) . done]

Listo.

Paso 2)

portupgrade -fr perl
... y empieza la fiesta de la recompilacion.


[Updating the pkgdb in /var/db/pkg ... - 135 packages found (-0 +1) . done]
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        - devel/p5-Version-Requirements (port directory error)
        * devel/p5-CPAN-Meta (p5-CPAN-Meta-2.112621)
        * devel/p5-Module-Build (p5-Module-Build-0.3800_1)



Recordar ejecutar:

rehash

Bien como podran ver, 3 ports no se lograron re-compilar, bien vamos viendo como podremos llevar a cabo la operacion.

El 1ro: p5-Version-Requirements, no me afecta lo voy a ignorar.

Lo que voy hacer con los otros es reinstalar uno por uno via portugrade.


portupgrade p5-CPAN-Meta
...se re-instalo sin problemas.


portupgrade p5-Module-Build
...fallo por que me dice que no puede reinstalar el port, pero dice que agregue esta variable a el archivo make.conf.

FORCE_PKG_REGISTER=1

Repito el comando y se re-instala sin problemas.


De nuevo rehash.

Hasta aqui ya terminamos, ahora sigue ver si los paquetes funcionan sin problenas, este servidor es un spam server, asi que tenemos que probar la entrada de correos, bloqueo de attachment, chequeo de virus, etc.

Tengo estos servicios:

-r-xr-xr-x  1 root  wheel  1423 Apr  8 14:43 amavisd
-r-xr-xr-x  1 root  wheel  1066 Apr  2 21:32 clamav-clamd
-r-xr-xr-x  1 root  wheel   747 Apr  2 21:32 clamav-freshclam
-r-xr-xr-x  1 root  wheel  1969 Apr  2 06:59 mysql-server
-r-xr-xr-x  1 root  wheel   914 Apr  8 14:14 policyd-weight
-r-xr-xr-x  1 root  wheel  1183 Apr  2 22:01 postfix
-r-xr-xr-x  1 root  wheel  1006 Apr  8 14:38 postgrey
-r-xr-xr-x  1 root  wheel   703 Apr  8 14:42 sa-spamd


Los reiniciamos:

./sa-spamd restart
spamd not running? (check /var/run/spamd/spamd.pid).
Starting spamd.

./postgrey restart
./clamav-freshclam restart
./clamav-clamd restart
./amavisd restart
 ...
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .F    at /usr/local/bin/unfreeze
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .Z    at /usr/bin/uncompress
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .gz   at /usr/bin/gzip -d
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .bz2  at /usr/bin/bzip2 -d
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .lzo  at /usr/local/bin/lzop -d
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .rpm  at /usr/local/bin/rpm2cpio.pl
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .cpio at /bin/pax
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .tar  at /bin/pax
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .deb  at /usr/bin/ar
Apr  8 15:02:18 spam virus[83461]: Internal decoder for .zip
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .7z   at /usr/local/bin/7zr
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .rar  at /usr/local/bin/rar
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .arj  at /usr/local/bin/arj
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .arc  at /usr/local/bin/arc
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .zoo  at /usr/local/bin/zoo
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .lha  at /usr/local/bin/lha
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .doc  at /usr/local/bin/ripole
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .cab  at /usr/local/bin/cabextract
Apr  8 15:02:18 spam virus[83461]: No decoder for       .tnef tried: tnef
Apr  8 15:02:18 spam virus[83461]: Internal decoder for .tnef
Apr  8 15:02:18 spam virus[83461]: Found decoder for    .exe  at /usr/local/bin/rar; /usr/local/bin/lha; /usr/local/bin/arj
Apr  8 15:02:18 spam virus[83461]: Using primary internal av scanner code for ClamAV-clamd
Apr  8 15:02:18 spam virus[83461]: Found secondary av scanner ClamAV-clamscan at /usr/local/bin/clamscan
Apr  8 15:02:18 spam virus[83461]: Deleting db files __db.001,__db.002,__db.003,__db.004,snmp.db,nanny.db in /var/amavis/db
Apr  8 15:02:18 spam virus[83461]: Creating db in /var/amavis/db/; BerkeleyDB 0.51, libdb 4.7
Apr  8 15:02:18 spam virus[83461]: initializing Mail::SpamAssassin (0)
Apr  8 15:02:23 spam virus[83461]: SpamControl: init_pre_fork on SpamAssassin done
Apr  8 15:02:23 spam virus[83461]: extra modules loaded after daemonizing/chrooting: /usr/local/lib/perl5/site_perl/5.12.4/mach/auto/NetAddr/IP/InetBase/inet_n2dx.al, Mail/SpamAssassin/Plugin/FreeMail.pm


Pruebas de Correo
Correo Plano:

Imagen 1: Entrada de correo.
Este correo es el 1er filtro antes de dirigirse a nuestra bandeja de entrada es un gateway, asi que segun la imagen 1, el correo fue enviado a el servidor de correo, ok.

Correo con attachment: .zip

Imagen 2: Correo Banneado.
Como podremos ver el correo ha sido bloqueado, asi lo configure yo y esta operando, se banneo, ya lo saque de la cola y ya logre leer el correo sin problemas.

rar, excel, pdf, doc, pasan.
exe comprimidos bloqueados.

Al parecer la migracion de perl5.10 -> perl5.12 fue un exito, ya tenemos nuestro sistema a el dia, a dormir!!!

viernes, 6 de abril de 2012

FreeBSD 8.2: Actualizando postfix de 2.8.5_1 a 2.9.1,1

   Llego el momento de actualizar postfix en mi spam server corriendo FreeBSD 8.2, antes de esto debemos investigar un poco que nos trae postfix nuevo en el sitio oficial...

  Parece que no viene nada muy critco para la migracion, entonces podemos llevar a  cabo el UPGRADE con:

portupgrade -air

 Bien, tomar en cuenta los comentarios que vienen en la instalacion, por ejemplo:

postfix: warning: inet_protocols: disabling IPv6 name/address support: Protocol not supported

COMPATIBILITY: editing main.cf, setting inet_protocols=ipv4.
Specify inet_protocols explicitly if you want to enable IPv6.

Mi configuracion aparece con este  parametro agegado:

inet_protocols = ipv4

Y abajo dice que para la proxima la version ip sera la IPV6 asi que tenemos irnos poniendo a el dia en este aspecto.

Luego viene esto:

Note: the following files or directories still exist but are
no longer part of Postfix:

/usr/local/etc/postfix/aliases /usr/local/etc/postfix/transport
/usr/local/etc/postfix/virtual

Postfix already activated in /etc/mail/mailer.conf
# Fix compressed man pages
To enable postfix startup script please add postfix_enable="YES" in
your rc.conf

If you not need sendmail anymore, please add in your rc.conf:

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

And you can disable some sendmail specific daily maintenance routines in your
/etc/periodic.conf file:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

If /etc/periodic.conf does not exist please create it and add those values.

mmm aviso interesante, dice que si no existe este archivo lo genere y agregue los parametros anteriores, vamos hacerle caso ya que el encargado del port tiene mas experiencia que nosotros por algo lo dice.

Listo, ahora viene este mensaje:

If you are using SASL, you need to make sure that postfix has access to read
the sasldb file.  This is accomplished by adding postfix to group mail and
making the /usr/local/etc/sasldb* file(s) readable by group mail (this should
be the default for new installs).

No utilizo sasl, no me aplica.

Luego viene este:

If you are upgrading from Postfix 2.6 or earlier, review the RELEASE_NOTES to
familiarize yourself with new features and incompatabilities.

Mi version no esta tan pasada no me aplica.

Listo, reiniciamos y verificamos la version:

Apr  2 22:20:03 spam postfix/master[57761]: daemon started -- version 2.9.1, configuration /usr/local/etc/postfix

Correcto, vamos a mandarnos unos correos de prueba:


Perfecto estan entrando, todo operando sin problemas, saludos!!!

martes, 3 de abril de 2012

Pfsense 2: Firebox x500 watchdog

Tengo una watchguard firebox x500, buena maquina mucho ruido pero esta compacta, habia notado ciertos problemas de desempeño cuando ya estaba conectado a varios de mis servidores atraves de ssh, aparte que algunas paginas web tardaban en cargar.

Por error yo modifique un folder y los cambie permisos a varios archivos y pfsense me lloraba que algunos archivos eran leidos por todos.

Con un respaldo, me vi en la tarea de reinstalar mi pfsense, nada del otro mundo en 30 minutos ya tenia mis sistema operando.

Los logs que veia eran esto:

re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout
re1: watchdog timeout


La consola GUI algo asi:


Apr 3 06:59:51 dhclient: Creating resolv.conf
Apr 3 06:59:51 dhclient: RENEW
Apr 3 06:57:49 kernel: re1: watchdog timeout
Apr 3 06:56:39 kernel: re1: watchdog timeout

Entonces ya era un poco incomodo ya que cuando estaba trabajando perdia la conexion con los servidores y no me permitia trabajar con ellos mas de 1 minuto cuando ya tenia muchas conexiones.

Investgando al respecto me encontre que estas placas que tienen la tarjeta realtek driver "re" pasan por problemas cuando tiene mucha carga y se recomienda lo siguiente:

Image 1: Parche para la tarjeta.
Por default no esta activado el checkbox, pero ahi dice que algunas tarjetas como las que tiene este equipo pasan por problemas como este que estoy pasando.

No fue necesario reiniciar pfsense, pero lo voy  hacer para ver si todo sigue operando de manera correcta, vamos a seguirle, saludos!!!













































                                                               

domingo, 1 de abril de 2012

Pfsense 2: Squid para dos redes

Squid puede controlar mas de una interface de red y ofrecer la posibilidad de que 1 sola caja de pfsense pueda controlar ambas redes, por ejemplo yo tengo estas NIC's y estoy marcando en cuales quiero que squid escuche peticiones:
Imagen 1: NIC's disponibles.
 Ahora, viene la parte mas sencilla, vamos a decirle a squid que escuche en ellas, asi:
Imagen 2: Marcando las interfaces en el GUI para squid.
Bien, salvan y esperan un poco para que squid reinicie.

Ahora esto es lo mas sencillo del mundo, pero como vamos a controlar las ACL?

Esta es otra historia, ya que debemos crear los ACL para cada subred, si ya teniamos unas trabajando que es mi caso, debemos crear las nuevas acl para esta subred.

Yo sigo haciendo todo a mano ya que tengo el control total de mi configuracion, aparece esto en mis ACL, supongamos que esa interface WIFI se localiza el departamento de Mantemiento y ellos desean entrar a:

www.grainger.com
www.grainger.com .mx
www.homedepot.com
www.homedepot.com.mx

Para empezar, entonces mis ACL quedarian asi:

Nombre del ACL:MANTEMIENTO
Nombre de archivo: MANTEMIENTO.acl
Nombre del ACL:MANTEMIENTO_SITIOS
Nombre de archivo: MANTEMIENTO_SITIOS.acl

Contenido del archivo:MANTEMIENTO.acl.

172.16.5.9/32

Contenido del archivo:MANTEMIENTO_SITIOS.acl.

.grainger.com
.grainger.com.mx
.homedepot.com
.homedepot.com.mx

En mi configuracion squid.conf quedaria asi en la cabecera inicial:

###LAN1
http_port 192.168.50.1:3128
###WIFI
http_port 172.16.5.1:3128

Como podran ver, dice squid que va a escuchar peticiones en esas 2 IP's.

Ahora el parametro localnet queda:

acl localnet src  192.168.50.0/255.255.255.0acl localnet src  172.16.5.0/255.255.255.0

Correcto dice squid que su acl abarca ambas subredes.

Si tenemos IP's que no deban tener restricciones entonces podemos usar el mismo archivo de nombre:

unrestricted_hosts.acl

Ahora viene como quedarian mis acl:

###ACL WIFI NIC
acl MANTENIMIENTO src "/usr/local/etc/squid/acl/MANTEMIMIENTO.acl"
acl MANTENIMIENTO_SITIOS dstdomain "/usr/local/etc/squid/acl/MANTEMIMIENTO_SITIOS.acl"

Ya mostre los contenidos.

Ahora la aplicacion:

### ACL para usuarios de subred2 WIFI
http_access allow MANTENIMIENTO MANTENIMIENTO_SITIOS
http_access deny MANTENIMIENTO

Listo, ya tenemos la configuracion lista para usar.

Recordar que asi como creamos reglas para nuestra LAN para que squid trabaje en modo "No Proxy Transparente" lo mismo debemos hacer para la subred WIFI, entonces quedaria asi en mi caso:

Imagen 3: Regla para WIFI.
Como podran ver, nadie de esa subred puede navegar si no es atraves de squid y todos los navegadores de esa red debe apuntar a el proxy: 172.16.5.1:3128.

Ya solo es cuestion de recargar la configuracion:

/usr/local/sbin/squid -k reconfigure

Nuestro log empieza a mostrar los accesos:


Imagen 4: Accesos de subred WIFI.

Y nuestro reporte sarg debe mostrar los logs de esa subred:
Imagen 5: Sarg mostrando logs de clientes en subred WIFI.


Listo, saludos!!!