TinyGentoo i Abyss WebServer
TinyGentoo: Un petit howto de com ens podem montar una gentoo ben petitona tan pels nostres projectes embeded com per posar dins d’un DOM o un pendrive.
Parlant de coses petites no em podia oblidar parlar del Abyss Web Server un petit servidor web que vaig descobrir fa molt de temps. Malgrat podria servir per molts petits sistemes de producció el trobo l’eina perfecte per ’embedir’ dins d’un dispositiu mòbil o petit.
Algunes de les seves funcions són més que interessants com per exemple els S.O. soportats: Windows, MacOS X, Linux i FreeBSD. Suporta HTTP/1.1 i a més pot generar continguts amb temps d’execusió amb múltiples sistemes: CGI/1.1 scripts, ISAPI extensions, Server Side Includes (SSI). O sigui, que si voleu també hi podeu instal·lar un motor de PHP. Suporta pàgines d’error personalitzades, protecció per password, control d’accés per IP, anti-leeching i control d’ampla de banda. També diposa d’una interficie via web per configurar el servidor i moltíssimes més coses.
Ara bé lo dolent, la versió més completa és de pagament la versió X2, però la versió X1 és gratuïta i jo diria que és més que suficient per moltíssims projectes. Per cert, per instal·la-lo és tan senzill com descarregar-lo, descomprimir-lo i executar-lo. Connectem al port 9999 a través del navegador: http://localhost:9999 i a configurar-lo via web. Jo diria que no esta disponible el codi font :'(
Un parell de servers web molt lleugers també són:
DOM: DiskOnModule
Avui he descobert aquesta petita meravella de la tecnologia, resulta que hi ha uns discs flash (Fast electronic memory) que disposen directament d’interficie IDE tan de 40pins com de 44pins (IDE portàtil, amb 4pins d’alimentació inclosos). Doncs lo bo del tema és que es poden endollar directament a la interficie IDE de la placa base com un disc ATA normal. Guapo,eh?!
Els preus són una mica més car que les memòries flash, perquè ens en fem una idea per uns 20€ pots tenir uns 128Mb. Però amb aquest tipus de discs ens assegurem que podem arrencar l’ordinador amb el sistema operatiu que més ens agradi: Linux, Unix, Windows 98, Win CE, Embedded XP, QNX, RTOS etc.
De moment la màxima capacitat d’aquest tipus de discs que he vist és 2Gb però per montar un sistema ’embedit’ amb 128 o 256Mb normalment vas sobrat i si tenim en compte que podem instal·lar un GNAP (Gentoo Network APpliance) que ocupa uns 13Mb encara ens en sobren un munt.
A més de les interficies IDE, també podreu trobar discs amb interficie SATA, SCSI i USB (directes a pinatge de placa no connectors tipus A o B). Recordeu que al no tenir elements mòbils no hi ha temps de latència i a més tampoc hi ha problemes de cops o caigudes del dispositiu. Ideal per aplicacions portatils i amb entorns hostils. A més el rang de temperatures de treball és quasi de -45º a 90º, brutal!
Nanos m’he enamorat… ja tinc ganes de poder provar-los. El lloc on més bé de preu els he trobat és en un distribuidor alemany: Spectra Computersysteme GmbH, a cablematic els he trobat caríssims, ja que els tenen d’una marca americana molt cara. Si algú sap on trobar-los a un preu decent que no sigui tan lluny com alemanya, que avisi.
Curiositat: mira si sóc encantat que quan vaig escriure l’article sobre GNAP la fotografia que vaig enganxar tenia en un racó una foto del DOM que acabo de penjar i ni tan sols hem vaig preguntar què era…
MySQL crash
Per un dia que es posa a ploure i estic a casa treballant, tot un plaer per cert. S’ha posat a fer llamps i trons fins que ha marxat la llum uns 2s en un llamp que ha caigut ben aprop i el pitjor és que el SAI no ha tingut temps de fer saltar la bateria i se m’ha reiniciat el server. Cosa que tampoc seria tan greu si no fos perquè he perdut quasi 1h per poder re-iniciar el MySQL… bé per si a algú li passa algo semblan aquí tenius els sintomes i el remei.
Després de mirar els fitxers de logs de /var/log/mysql tan el mysql.err com el mysql.log. No he trobat res que m’indiques quin era l’error de fet, podriem dir que no hi havia res que parles d’erros. Així que m’he decidit a passar al mètode radical i veure quins errors donaven les cirdes a sistema que feia al llençar el servei:
strace -f -o mysql.trace /etc/init.d/mysql start
L’únic que he trobat és un petit inidcador de que el InnoDB no s’iniciava bé. Gràcies a aquesta pista he arribat fins als formus de gentoo on he trobat aquest post: MySQL doesn’t start anymore after upgrade to 4.0.25 tot i que le títol no és gaire indicatiu del meu problema, en un comentari he trobat la solució:
cd /var/lib/mysql rm ib_logfile0 rm ib_logfile1 rm ibdata1
Tornem a llençar el servei i tot solucionat, s’havien corromput uns fitxers de logs que usa l’storage del motor de MySQL i al borrar-los s’han tornat a generar. Quin patiment per tanta tonteria.
Consum d’ampla de banda de l’OpenVPN
Com que he de montar algunes VPNs amb GPRS/UMTS i l’OpenVPN entre servidors i clients linux, doncs m’he decidit a fer una prova per fer les estimacions de costos d’aquests enllaços. Així doncs m’he ajudat de l’eina mesure feta pel pancake. Una d’aquelles petites meravelles que ens brinda el GPL. Doncs bé amb el codi que veieu he extret el següent calcul:
time ./mesure -i eth0 -K -p "tcp and port 443" 168 real 60m30.922s user 0m0.004s sys 0m0.004s
Com podeu veure he llençat el mesure durant 60min i 30s amb 922ms, el tràfic que s’ha cursat pel port 443 tcp que és on he aixecat i he parat l’VPN durant aquest temps ha estat de 168KBytes. Aquest tràfic sense que per dintre de la VPN passes cap dada meva, simplement dades del propi openvpn per tal de manterir l’enllaç aixecat.
Una altre dada que us pot interessar és que només per aixecar l’enllaç es consumeixen 16KBytes i per baixar-lo uns 2KBytes. Ara cadascu que tregui les seves propies conclusions sobre si és molt o poc.
blogcms v.4.0.0d
Nova versió del blogcms instal·lada, aquesta tarda m’he tirat unes 3h provant la nova versió, però sempre queden coses pendents. Així doncs si troveu alguna nova errada en el blog, o alguna cosa que no va, etc. Aviseu si us plau!
OpenVPN roadwarrior (client windows)
Com us comentava al meu anterior article OpenVPN roadwarrior (server i client linux) també podem tenir un roadwarrior de la nostre VPN funcionant amb windows. Així que us descriuré breument com configurar aquest client configuració que és pràcticament idèntica a la del client linux.
El primer que hem de fer és clar, és baixar el paquet de l’openVPN per windows, el podeu trobar a la web de l’openVPN GUI for Windows. Després de descarregar-lo el podeu instal·lar on més us agradi un cop fet això comença la part interessant.
NOTA: si llegiu la documentació de l’openVPN per windows veureu que no he col·locat els fitxers de configuració a les direccions on ell espera trobar-les. I tampoc uso la propietat de servei de windows que pot tenir el programa. Però si ho voleu fer com ‘deu mana’ només cal modificar les rutes i treballar amb el servei de windows encomptes del meu script. Però jo he preferit fer-ho així de cara a tenir un control més personal del programa. Odio la transaparència del windows, prefereixo el meu sistema. Tot són gustos.
NOTA II: els mac també tenen un client d’openVPN anomenat Tunnelblick GUI for mac OS X. Però no tinc el gust de disposar d’un mac per provar i explicar-vos com va, us haureu de conformar amb les instruccions de la seva pàgina web.
Certificiat client
Aquesta part és igual que en linux, o sigui, que podeu mirar el post que us comentava més amunt i sabreu com es fa. Un cop tinguem el certificat client i la clau privada, copiem aquests dos fitxers juntament amb el ‘root CA’ a una carpeta de windows. Jo el que he fet és crear-me una carpeta que es diu openvpn a l’escriptori i dins he creat el directori certs, on hi he copiat els tres fitxers.
Configuració del client
Dins de la carpeta openvpn que comentava dins del punt anterior he creat un fitxer de configuració que es diu local.conf amb el següent contingut:
client verb 1 remote 2.2.2.2 443 dev tun comp-lzo nobind proto tcp-client ca ./certs/cacert.pem cert ./certs/vpn-clientwin-cert.pem key ./certs/vpn-clientwin-key.pem
Com podeu veure el fitxer és pràcticament identic al de linux, només li he baixat el nivell de debug (verb 1) perquè aquí la sortida de logs es farà per consola i si pugem molt el nivell de debug ens ompla de bassura la consola.
Configuració interficie TAP/Win-32
Després d’instal·lar el paquet d’openvpn per win veureu que teniu una nova interficie de xarxa:
Aquesta interficie com podeu veure l’he renombra i l’he anomenat tun al fitxer de configuració que heu vist més amunt també uso la interficie tun i no la tap que és el nom del driver de l’interficie. La veritat no sé si hi té molt a veure això però havia tingut alguns problemes al configurar i al final m’ha quedat tal com veieu funciona.
Cal que tinguem la interficie configurada en mode DHCP, per tal de que agafi la IP de túnel automàticament:
Script de llençament
Finalment el que m’he fet és un petit script (.bat) per llençar la VPN l’he anomenat vpn.bat i el contingut és tan senzill com:
cd "H:\Documents and Settings\Oriol\Escritorio\openvpn" openvpn --config local.conf
Col·locar-me a la carpeta on hi ha tots els fitxers i després llençar l’openvpn informant-lo del fitxer de configuració que ha d’usar. És importnat indicar la carpeta de treball així el fitxer de configuració com podeu veure usa direccions relatives per referir-se als certificats. Molt més senzill que no pas haver d’escriure el ‘peazo’ directori absolut.
Depuració i proves d’ús
Aquí podeu fer les mateixes proes que amb el linux, també veureu que la interficie tun té el ‘cable de xarxa desconnectat’ fins que no es connecta l’VPN que passa a estar en mode ‘connectat’. Si feu un ipconfig /all des de la consola del windows també podreu veure la interficie tun amb la IP de túnel un cop connectada i si feu un route print les rutes estàtiques que li ha assignat el servidor de la VPN al crear-se la mateixa. Recordeu que això el servidor ho feia a través de la comanda push.