Skip to content

Proxmox + nat + iptables

Acabo de contratar un servidor en un datacenter y sólo me dan una sola ip.
Como me gusta tener los servicios separados y todo bien ordenadito le he instalado proxmox 4, con soporte LXC, pero necesito que el host se comunique con los contenedores de alguna forma.

Lo que vamos a crear va a ser una interfaz virtual nueva, donde crearemos nuestra subred y luego redigiremos los puertos con iptables. Esto es lo que se llama hacer nat y redirección de puertos :P

Lo primero será crear des del interfaz de proxmox (no hacerlo desde ssh porque proxmox puede no enterarse del nuevo bridge :P). Para ello vamos al nombre del servidor y pestaña network y crear linux bridge.
Lo vamos a llamar vmbr1. Definimos la ip, por ejemplo 192.168.1.1 y la mascara 255.255.255.0.

Reiniciamos el server y una vez reiniciado editamos el fichero /etc/network/interfaces y en el bridge que acabamos de crear añadimos la última línea de la caja de código

auto vmbr1
iface vmbr1 inet static
        address  192.168.1.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward

Creamos nuestro contenedor y le asignamos por ejemplo la ip 192.168.1.2.

En nuestro caso vamos a montar un servidor de correo en el contenedor y tendremos que redirigir los puertos del host al contenedor. Para ello creamos las reglas iptables siguientes

iptables -t nat -A POSTROUTING -o vmbr0 -j MASQUERADE
iptables -A FORWARD -i vmbr1 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dport 25 -i vmbr0 -j DNAT --to 192.168.1.2:25
iptables -t nat -A PREROUTING -p tcp --dport 80 -i vmbr0 -j DNAT --to 192.168.1.2:80
iptables -t nat -A PREROUTING -p tcp --dport 443 -i vmbr0 -j DNAT --to 192.168.1.2:443
iptables -t nat -A PREROUTING -p tcp --dport 587 -i vmbr0 -j DNAT --to 192.168.1.2:587
iptables -t nat -A PREROUTING -p tcp --dport 465 -i vmbr0 -j DNAT --to 192.168.1.2:465
iptables -t nat -A PREROUTING -p tcp --dport 993 -i vmbr0 -j DNAT --to 192.168.1.2:993
iptables -t nat -A PREROUTING -p tcp --dport 995 -i vmbr0 -j DNAT --to 192.168.1.2:995
iptables -t nat -A PREROUTING -p tcp --dport 110 -i vmbr0 -j DNAT --to 192.168.1.2:110
iptables -t nat -A PREROUTING -p tcp --dport 2000 -i vmbr0 -j DNAT --to 192.168.1.2:2000
iptables -t nat -A PREROUTING -p tcp --dport 22109 -i vmbr0 -j DNAT --to 192.168.1.2:22

Las dos primeras son el masquerade y las otras los puertos que redirigimos. Es importante añadir la interfaz de entrada (-i vmbr0) para que la comunicación del contenedor con el exterior sea correcta. Por ejemplo, sin esto y si dirigimos el puerto 80, no funcionará apt :(

Una vez verificamos que las reglas son correctas, vamos a hacer que se carguen al arrancar el sistema. Para ello usaremos iptables-save para generar el fichero de configuración que cargará iptables al arrancar

# iptables-save > /etc/firewall.conf

Y ahora le indicamos que al levantar el interfaz de red, cargue las reglas de iptables

# vi /etc/network/if-up.d/iptables
#!/bin/sh
iptables-restore < /etc/firewall.conf

Guardamos y le damos permisos de ejecución

# chmod +x /etc/network/if-up.d/iptables

Y reiniciamos el servidor para verificar que todo es correcto :)

Notes on a triangle

‘Star Wars Suite’ de John Williams – Rafael Aguirre

De la cumbia imperial de Patricio Cobarde pasamos a la Star Wars Suite interpretada por Rafael Aguirre…

‘Star Wars Suite’ de John Williams – Rafael Aguirre

Otro vídeo que no tiene desperdicio es éste de Sonya Belousova tocando un piano que es el mismísimo falcón milenario!!!

Hayseed Dixie – Highway To Hell (AC-DC)

Las emociones equiparadas a un termómetro de Galileo

Estaba hablando con una persona y lo típico de ¿qué tal estamos? y la respuesta que le he dado ha sido la de “como un termómetro de Galileo”. Aunque la respuesta ha sido espontánea nos ha encantado a ambas la definición, así que voy a tratar de desarrollarla un poco :)

galileo thermometer 2

Primero de todo, el termómetro de Galileo consiste en un tubo de cristal cilíndrico lleno de un líquido con un coeficiente de dilatación mayor que el del agua (una mezcla de hidrocarburos) y dentro un conjunto de ampollas de cristal de distintas medidas que contienen agua o alcohol teñido. Depende de la temperatura que haga, la disposición de las ampollas de cristal es una u otra debido a la modificación de las densidades de los líquidos.

La equiparación pues entre las emociones y el termómetro de Galileo, vendría a ser que cada una de nuestras emociones corresponderían a las ampollas dentro del cilindro, la temperatura nuestro entorno (nuestro trabajo, las relaciones con otras personas, etc.) y el líquido del cilindro nuestro cuerpo evolutivo. En el conjunto de los 3 tendríamos pues nuestro estado emocional.

La temperatura es un factor que no podemos controlar, de repente hace frío (conflictos) y de repente calor (acuerdos, buenas noticias, tranquilidad, paz, etc.). La densidad del líquido del cilindro sería nuestro trabajo interno, su densidad sería una u otra dependiendo de lo atentos e identificados que estamos de nosotros mismos y las ampollas cada una de las emociones.
El conjunto hace que prevalga una emoción frente la otra.

Me gustaría comparar entre el termómetro de Galileo y el termómetro de mercurio, ambos marcan la temperatura (en este caso nuestro estado emocional), pero su diferencia es en la identificación de las distintas emociones, en uno no se ven y simplemente lo único que vemos es el estado final, en el otro vemos el posicionamiento de cada una de ellas y vemos que no están entremezcladas, que simplemente conviven en un mismo ecosistema.
Al ser conscientes de ellas podemos tomar el control y poco a poco, ser capaces de cambiar la densidad del líquido que contiene las ampollas :)

Creo que a partir de ahora voy a ver los termómetros de Galileo con otros ojos :)

Compartir una sesión de terminal con screen

A veces es necesario que dos usuarios conectados remotamente accedan a la misma sesión, sea para realizar juntos una configuración o para que uno le muestre al otro como hacer alguna cosa.
Una herramienta super cómoda será screen.

El usuario que va a crear la terminal compartida ejecuta el siguiente comando para iniciar la sesión de screen y nombrarla (mySharedSession en este caso).

$ screen -d -m -S mySharedSession

El siguiente paso radica en unir la terminal del usuario a la sesión compartida de screen mediante la ejecución del siguiente comando que debe ser ejecutado por todos los usuarios incluyendo al creador de la sesión ya que esta se crea inicialmente separada de su terminal actual.

$ screen -x mySharedSession

En cualquier momento es posible listar las sesiones de screen disponibles mediante la ejecución del siguiente comando.

$ screen -ls

Salir y terminar sesiones

Para salir de una sesión compartida sin destruírla es necesario ejecutar la siguiente combinación de teclas: CTRL+a d.

Para salir de una sesión destruyéndola se puede utilizar el comando exit (cierre brusco) o la combinación de teclas CTRL+a k (cierre limpio) la cual es equivalente a CTRL+a :kill. Debe tener en cuenta que la destrucción de la sesión afecta a todos los usuarios que se encontraban conectados a ella.

Fuente: Jorgeivanmeza

Irish Rovers – Drunken Sailer

Instalar OTRS con MySQL

Trac está muy bien, pero tiene un pequeño problema, y es que una de las necesidades que tengo es que los usuarios manden un correo electrónico a una dirección y se añada la petición como tiquet. Estas semanas me he estado peleando con ello, pero el script que encontré estaba desactualizado y no funcionaba muy bien, si insertaba los tiquets, pero no leía correctamente el cuerpo de los correos electrónicos :( traté de pelearme con el script pero no avanzaba. Así que he tenido que buscar otro software, un poquillo mas modernillo que si permita esto, se trata de OTRS.

A continuación todos los pasos que he tenido que realizar para instalarlo, partimos de una debian jessie 8.2.

Empezamos instalando algunas dependencias

root@epsilon-noc:~# apt-get install libapache2-mod-perl2 libdbd-mysql-perl libtimedate-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libdbd-mysql-perl libsoap-lite-perl libgd-text-perl libtext-csv-xs-perl libjson-xs-perl libgd-graph-perl libapache-dbi-perl libxml-libxml-perl libxml-xslt-perl

Ahora nos descargamos otrs, lo descomprimimos y lo movemos a /opt/otrs

root@epsilon-noc:~# wget http://ftp.otrs.org/pub/otrs//otrs-5.0.5.tar.gz
root@epsilon-noc:~# tar xvzf otrs-5.0.5.tar.gz
root@epsilon-noc:~# mv otrs-5.0.5 /opt/otrs
root@epsilon-noc:~# cd /opt/otrs

Comprobamos que tengamos todas las dependencias satisfechas y si no las tenemos, las instalamos. Aquí en este paso es donde vamos a decidir qué base de datos vamos a usar, en mi caso MySQL.

root@epsilon-noc:/opt/otrs# perl /opt/otrs/bin/otrs.CheckModules.pl
root@epsilon-noc:/opt/otrs# apt-get install -y libarchive-zip-perl libcrypt-eksblowfish-perl libdbd-odbc-perl libmail-imapclient-perl libtemplate-perl libxml-libxslt-perl libyaml-libyaml-perl

Añadimos el usuario otrs, que es el que va a ejecutar el daemon de otrs y el cual su /home va a ser otrs.

root@epsilon-noc:/opt/otrs# useradd -d /opt/otrs/ -c 'OTRS user' otrs
root@epsilon-noc:/opt/otrs# usermod -G www-data otrs

Activamos los ficheros de configuración

root@epsilon-noc:/opt/otrs# cp Kernel/Config.pm.dist Kernel/Config.pm

Verificamos si todos los módulos están instalados

root@epsilon-noc:/opt/otrs# perl -cw /opt/otrs/bin/cgi-bin/index.pl
/opt/otrs/bin/cgi-bin/index.pl syntax OK
root@epsilon-noc:/opt/otrs# perl -cw /opt/otrs/bin/cgi-bin/customer.pl
/opt/otrs/bin/cgi-bin/customer.pl syntax OK
root@epsilon-noc:/opt/otrs# perl -cw /opt/otrs/bin/otrs.Console.pl
/opt/otrs/bin/otrs.Console.pl syntax OK

Preparamos apache

root@epsilon-noc:/opt/otrs# apt-get install apache2 libapache2-mod-perl2
root@epsilon-noc:/opt/otrs# cd /etc/apache2/conf-enabled/
root@epsilon-noc:/etc/apache2/conf-enabled# ln -s /opt/otrs/scripts/apache2-httpd.include.conf zzz_otrs.conf
root@epsilon-noc:/etc/apache2/conf-enabled# cd /opt/otrs
root@epsilon-noc:/opt/otrs# a2enmod perl version deflate filter headers
root@epsilon-noc:/opt/otrs# service apache2 restart
root@epsilon-noc:/opt/otrs# bin/otrs.SetPermissions.pl --web-group=www-data
Setting permissions on /opt/otrs

Para instalar otrs 5 es necesario MySQL 5.6, pero la versión del sistema de debian 8 es la 5.5 y cuando vayamos a activar la opción innodb_log_file_size a 256M mysql no arrancará, así que instalamos la versión de MySQL 5.6.

root@epsilon-noc:~# wget http://dev.mysql.com/get/mysql-apt-config_0.3.5-1debian8_all.deb
root@epsilon-noc:~# dpkg -i mysql-apt-config_0.3.5-1debian8_all.deb
seleccionar server, luego mysql5.6 y luego aply
root@epsilon-noc:~# apt-get update
root@epsilon-noc:~# apt-get install mysql-community-server
No mantener el fichero actual de configuración (opción por defecto)
root@epsilon-noc:/opt/otrs# vi /etc/mysql/my.cnf
max_allowed_packet   = 20M
query_cache_size     = 32M
innodb_log_file_size = 256M

Fuente: http://www.debiantutorials.com/install-mysql-server-5-6-debian-7-8/

Ahora accedemos por http al servidor y seguimos las instrucciones

http://ipservidor/otrs/installer.pl (más info)

Una vez completado hacemos login con los datos que nos ha dado

http://ipservidor/otrs/index.pl

Ahora vamos a arrancar el daemon

root@epsilon-noc:/opt/otrs# su - otrs
$ /opt/otrs/bin/otrs.Daemon.pl start
otrs.Daemon.pl - the otrs daemon
Copyright (C) 2001-2015 OTRS AG, http://otrs.com/

Daemon started

Y añadimos los cronjobs para el usuario otrs

root@epsilon-noc:/opt/otrs# cd var/cron/
root@epsilon-noc:/opt/otrs/var/cron# ls
aaa_base.dist  otrs_daemon.dist
root@epsilon-noc:/opt/otrs/var/cron# for foo in *.dist; do cp $foo `basename $foo .dist`; done
root@epsilon-noc:/opt/otrs/var/cron# su - otrs
$ /opt/otrs/bin/Cron.sh start
/opt/otrs
Cron.sh - start/stop OTRS cronjobs
Copyright (C) 2001-2012 OTRS AG, http://otrs.org/
(using /opt/otrs) done

Es importante crear un usuario adicional con el que trabajaremos con el otrs, y usar el usuario administrador simplemente para gestiones administrativas.

Fuente: http://otrs.github.io/doc/manual/admin/stable/en/html/manual-installation-of-otrs.html

Ia Trobada Guifaires de l’Alt Camp + Install Party 16

02/01/2016 10:30
02/01/2016 22:30
Europa/Andorra
02/01/2016 10:30
02/01/2016 22:30
Europa/Andorra

Hola

Us volem convidar a la primera trobada de Guifaires de l'Alt Camp que tindrà lloc al Casal Popular la Turba de Valls, el proper dissabte 2 de gener de 2016.

Durant el matí tindrà lloc la sessió sobre Guifi.net, amb xerrades de nivell bàsic i tallers per introduir-vos més a fons en el funcionament de la xarxa. A la tarda tindrà lloc la "Install Party" on es faran instalacions de sistemes Gnu/Linux als usuaris que ho requereixin.

Al migdia podeu quedar-vos a dinar paella, a un cost de 8€ per persona. Agrairem que ens confirmeu l'assitència al dinar contestant aquest correu, o fent-ho saber a primera hora del dia 2.

Trobareu més informació a: http://hacklabvalls.org/86-trobada-de-guifaires-de-l-alt-camp-install-party

Us hi esperem

AdjuntMida
cartell-install16.jpg473.63 KB

Borrar un tiquet en trac

Normalmente no vamos a necesitar borrar un tiquet en trac, ya que lo puedes marcar como duplicado, inválido o simplemente cerrarlo. Esto se puede hacer por el interfaz web. Es una mejor opción porque todos los procesos están documentados y se pueden buscar. Por ejemplo, alguien que reporte un bug, pero que realmente no lo sea.
Pero a veces queremos realmente borrar un tiquet. Por ejemplo, acabo de hacer unas pruebas con el mail2trac y tengo todo de tiquets que realmente no son tiquets. Así que podremos borrarlos con el comando trac-admin.

Iremos al directorio raíz de trac (no el del proyecto), en mi caso /var/trac y ejecutaremos trac-admin y el nombre de la instancia trac:

root@epsilon-noc:/var/trac# trac-admin capa8
Warning: Detected setuptools version 5.5.1. The environment variable 'PKG_RESOURCES_CACHE_ZIP_MANIFESTS' must be set to avoid significant performance degradation.
Welcome to trac-admin 1.0.2
Interactive Trac administration console.
Copyright (C) 2003-2013 Edgewall Software

Type:  '?' or 'help' for help on commands.
        
Trac [/var/trac/capa8]> 

Y ejecutaremos ticket remove nn, siendo nn el numero de tiquet que queremos borrar

Trac [/var/trac/capa8]> ticket remove 94
Ticket #94 and all associated data removed.
Trac [/var/trac/capa8]> ticket remove 95
Ticket #95 and all associated data removed.
Trac [/var/trac/capa8]> ticket remove 96
Ticket #96 and all associated data removed.
Trac [/var/trac/capa8]> exit

Esto nos va a borrar los tiquets, pero si realmente queremos poner el contador a 0, vamos a entrar a la base de datos de trac (en mi caso instalada sobre MySQL), y vamos a hacer un truncate de la tabla ticket

root@epsilon-noc:/var/trac# mysql -uroot -p
mysql> truncate table ticket;
Query OK, 0 rows affected (0.02 sec)