pppoe (Jazztel) en OpenBSD

En este caso mi ISP (proveedor) es Jazztel, pero este método es aplicable a otros proveedores que utilizan pppoe o similares (telefónica, orange).

La idea de utilizar un pc/servidor en vez de un router convencional, es para que nuestro pc/servidor tenga la IP pública él y todo se pueda gestionar desde el propio pc/servidor, dónde podemos hacer NAT/DNAT/DMZ y demás menesteres obteniendo el control total de la conexión, más comunmente se conoce como tener el router en “monopuesto“.

En mi caso tengo un router convencial de Jazztel (Comtrend HG536+), dónde hay que ponerlo previamente en modo bridge (multipuesto) para que funcione correctamente. No confundir aquí en utilizar “ipp extension” del router en vez de modo bridge.

Si no sabeís como poner el router en modo bridge, podeís seguir este tutorial sin tener en cuenta los pasos que hacen referencia al router cisco.

pppoe en OpenBSD:

Existen 2 maneras para connectarnos con pppoe en OpenBSD, la primera es mediante el cliente ppp y la otra más actual, es mediante el soporte pppoe en el propio kernel de OpenBSD.

Hay que tener configurada una tarjeta de red real para su funcionamiento, en mi caso es dc0, sobretodo hay que tener en cuenta este dato para la correcta conexión.

Mediante el programa ppp:

Editamos el fichero ppp.conf

/etc/ppp/ppp.conf

default:
 set log Phase Chat LCP IPCP CCP tun command

pppoe:
 set device "!/usr/sbin/pppoe -i dc0"
 set mtu max 1492
 set mru max 1492
 set speed sync
 set authname "PONTUSUARIO"
 set authkey "PONTUPASSWORD"
 set login
 set timeout 0
 disable acfcomp protocomp
 deny acfcomp
 add default HISADDR
 enable mssfixup

Ponemos la terjeta en modo activación.

# ifconfig dc0 up

Ahora, solo debemos conectarnos con el cliente ppp.

# ppp -ddial pppoe

En /var/log/ppp.log podemos ver los logs del comando anterior para ver si existe algún tipo de error o si la conexión se ha realizad con éxito.

Si todo ha funcionado correctametne, podemos ver el resultado mediante el comando ifconfig y la interfaz tun0

# ifconfig tun0

Después de lanzar el comando ppp y esperar un tiempo prudencial, el comando ifconfig tun0 nos debería de mostrar nuestra ip pública, si este es el caso, todo ha funcionado correctamente.

Si queremos que se active de manera automática al reiniciar el sistema, solo tenemos que actualizar un par de ficheros:


# echo 'up' > /etc/hostname.dc0
# echo '/usr/sbin/ppp -ddial pppoe' >> /etc/rc.local

Continue reading “pppoe (Jazztel) en OpenBSD”

Aplicar el famoso parche de 200 lineas en Debian/Ubuntu sin recompilar el Kernel

Linus Torvalds ha confirmado los beneficios del parche de 200 lineas que mejoraba las tareas de Escritorio, sin embargo había que recompilar el kernel para ello, no obstante, un desarollador de Red Hat ha mostrado como con unas simples modificaciones podemos obtener unos resultados equivalentes con los kernels recientes que soporten control group.

De momento un sinfín usuarios están muy satisfechos con los cambios que dan esta pequeña solución alternativa.

Hay que tener en cuenta, que en las distribuciones Debian/Ubuntu hay que utilizar /dev en vez de /sys.

Editar el fichero rc.local y añadir las siguientes lineas antes del ‘exit 0’

/etc/rc.local

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

Añadir en vuestro /home/usuario/.bashrc las siguientes lineas.

$ editor ~/.bashrc

if [ "$PS1" ] ; then
    mkdir -p -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo 1 > /dev/cgroup/cpu/user/$$/notify_on_release
fi

Para eliminar cgroup cada vez que se abandona una tarea:

# editor /usr/local/sbin/cgroup_clean

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Hacerlo el fichero ejecutable:

chmod +x /usr/local/sbin/cgroup_clean

Reiniciar la máquina (no es realmente necesario) o bien copiar a mano los comandos y lanzar una nueva terminal.

Saludos!

Instalar mod_pagespeed en Debian Etch & Otras desde el código fuente

Me propuse hoy instalar definitivamente mod_pagespeed, a pesar de que a priori la instalación de este módulo puede ser sencilla, la cosa se complica si tienes una distribución algo antigua y oficialmente no soportada, no obstante, una vez logrado el objetivo de instalar el módulo, mod_pagespeed funciona igual de bien que en las demás distribuciones soportadas, simplemente que los que no podemos actualizar a una versión más actual (Debian Lenny), tenemos que hacer “algo más” para hacerlo funcionar en nuestra distribución, este preceso, es válido para otras distribuciones que tampoco están oficialmente soportadas.

¿Que és mod_pagespeed?, creo que con el video nos va a quedar claro cual es la intención de este módulo

Para realizar este tutorial, tuvimos que abir un ticket a los desarolladores de google, para que nos intentasen solucionar errores que no salían durante la compilación, dónde alfinal todo fué más que correcto por parte de ellos :)

Como requisitos mínimos se exige tener instalado GCC 4.2, si embargo Debian Etch trae de serie GCC 4.1, pero esto no ha añadido ningún problema, ya que finalmente también permite la compilación del módulo con la versión 4.1, de hecho, primero se intentó compilarlo con 4.2, pero aún así daba exactamente los mismos errores de compilación.

Aquí teneís la guia oficial de compilación, para las distribuciones soportadas mediante los fuentes de mod_pagespeed, en la nuestra simplemente se añaden problemas/soluciones para la instalación en distribuciones no soportadas.

Vamos a compilar mod_pagespeed:

# cd /usr/local/src

# svn co http://src.chromium.org/svn/trunk/tools/depot_tools

bash: svn: command not found

# aptitude install subversion

# svn co http://src.chromium.org/svn/trunk/tools/depot_tools

# export PATH=$PATH:/usr/local/src/depot_tools

# mkdir mod_pagespeed

# cd mod_pagespeed

# gclient config http://modpagespeed.googlecode.com/svn/tags/0.9.1.1/src

# gclient sync --force

# cd src

# make BUILDTYPE=Release

make: flock: Command not found
make: *** [out/Release/obj.target/net/instaweb/libmod_pagespeed.so] Error 127

# cd /usr/local/src

# wget http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.18/util-linux-ng-2.18.tar.gz

# tar xvfz util-linux-ng-2.18.tar.gz

# cd util-linux-ng-2.18
# mkdir -p /opt
# ./configure --prefix=/opt/util-linux-ng-2.18
# make
# make install

# export PATH=$PATH:/opt/util-linux-ng-2.18/bin

# cd /usr/local/src/mod_pagespeed/src/

# make BUILDTYPE=Release

CC(target) out/Release/obj.target/apr/third_party/apache/apr/src/locks/unix/proc_mutex.o
third_party/apache/apr/src/locks/unix/proc_mutex.c: In function ‘proc_mutex_proc_pthread_create’:
third_party/apache/apr/src/locks/unix/proc_mutex.c:385: error: ‘PTHREAD_MUTEX_ROBUST_NP’ undeclared (first use in this function)
third_party/apache/apr/src/locks/unix/proc_mutex.c:385: error: (Each undeclared identifier is reported only once
third_party/apache/apr/src/locks/unix/proc_mutex.c:385: error: for each function it appears in.)
third_party/apache/apr/src/locks/unix/proc_mutex.c:393: error: ‘PTHREAD_PRIO_INHERIT’ undeclared (first use in this function)
make: *** [out/Release/obj.target/apr/third_party/apache/apr/src/locks/unix/proc_mutex.o] Error 1

# GYP_DEFINES="use_system_apache_dev=1" gclient runhooks

# make BUILDTYPE=Release

CXX(target) out/Release/obj.target/html_rewriter/net/instaweb/apache/apache_message_handler.o
net/instaweb/apache/apache_message_handler.cc:21:19: error: httpd.h: No such file or directory
net/instaweb/apache/apache_message_handler.cc:25:22: error: http_log.h: No such file or directory
…..
net/instaweb/apache/apache_message_handler.cc:61: error: ‘ap_log_error’ was not declared in this scope
make: *** [out/Release/obj.target/html_rewriter/net/instaweb/apache/apache_message_handler.o] Error 1

# aptitude install apache2-threaded-dev libapr1-dev libaprutil1-dev

# make BUILDTYPE=Release

!POR FIN COMPILA!

# cd installl
# make APACHE_ROOT=/etc/apache2 APACHE_MODULES=/usr/lib/apache2/modules APACHE_USER=www-data staging
# make APACHE_ROOT=/etc/apache2 APACHE_MODULES=/usr/lib/apache2/modules APACHE_USER=www-data install

Cosas a verificar:

Verificar los permisos, y que el módulo se esté cargando mediante el fichero pagespeed.conf

LoadModule pagespeed_module modules/mod_pagespeed.so
LoadModule deflate_module modules/mod_deflate.so

Permisos de escritura www-data en /var/mod_pagespeed
Include conf/pagespeed.conf en el fichero de Apache (apache2.conf o httpd.conf)

Ver las diferencias entre tener activado o no mod_pagesped:

http://www.webpagetest.org

Frases geek para ligar (o para que te manden a /dev/null)

  • Eres el kernel de mi linux.
  • Eres el html de mi corazon.com.
  • Eres 1024kb para mi megabyte.
  • Tus ojos brillan mas que mi torre de cd´s.
  • Tucorazon.com esta en mi pagina de inicio.
  • Eres el socket de mi CPU.
  • Eres el compilador de mi código.
  • Eres el gif que anima mi vida.
  • Siempre estas en C:/Mi/Corazón. (para los linuxeros: /home/Mi/Corazón)
  • Eres como el firefox que me sacó del infierno del explorer.
  • Eres el Enter de mi vida.
  • Si me dejas hago ALT+F4 en mi vida.
  • Cuando te veo mi ciclo de CPU se acelera.
  • Tú tienes la máxima prioridad en mi lista de procesos.
  • Eres el linkador de mis objetos.
  • Continue reading “Frases geek para ligar (o para que te manden a /dev/null)”

Añadir swap mediante ficheros en GNU/Linux

A veces es necesario añadir más espacio swap después de la instalación. Por ejemplo, situaciones dónde uno no puede aumentar la memoria ram y tampoco puede particionar una partición para uso exclusivo swap, así que como solución temporal podríamos añadir swap simplemente creando ficheros, irá un pelín más lento que en disco, pero nos puede salvar de más de un apuro.

En este escenario, vamos añadir dos ficheros de 256MB cada uno de manera de ejemplo, se puede añadir la cantidad y el tamaño de ficheros que creamos oportuno.

Añadir swap, utilizaremos el comando dd para los ficheros swapfile1 y swapfile2.

262144 es 256MB
# dd if=/dev/zero of=/swapfile1 bs=1024 count=262144
# dd if=/dev/zero of=/swapfile2 bs=1024 count=262144

Con dd tenemos creado el fichero, pero no tiene un formato válido para swap, le tendremos que dar formato con el comando mkswap.

# mkswap /swapfile1
# mkswap /swapfile2

Ahora ya tenemos el fichero con su correspondiente formato, así que solo nos quedará activarlo, para ello utilizaremos el comando swapon.

# swapon /swapfile1
# swapon /swapfile2

Y ahora ya tenemos 512MB más de swap !

Si queremos que el proceso se active automáticamente al arrancar, lo pondremos en el fichero /etc/fstab.

/swapfile1 swap swap defaults 0 0
/swapfile2 swap swap defaults 0 0