Redirección de puertos con iptables + contrack

Pues seguimos con éstos pequeños errores que hemos cometido siempre y que ahora en un momento de cambios y con mucho mas entendimiento llegan mejores soluciones para que las cosas funcionen mejor (tanto a nivel técnico como personal). Hoy estoy tiernecilla y quiero agradecer con éste post todas éstas personas que seguís los posts que publico y tenéis al igual que yo éste blog como una herramienta de consulta, un lugar claro, sin muchas complicaciones donde encontrar justo aquello que necesito en cada momento o me da la pista para poder seguir avanzando con algo mas grande que estoy construyendo con el paso de los días.

Ésta vez me encuentro solucionando un problema que inicialmente parecía de nginx pero ha resultado ser de iptables, y es que las cosas nunca son lo que parecen a primera vista y es necesario tener un gran conocimiento del sistema para entender como poder solucionar los problemas de base y encontrar una solución definitiva que evita fallos futuros, para casos como hoy que ya en producción me encuentro con un problema grave de base. Para que un sistema funcione bien, las capas inferiores (base) deben estar bien.

Me dejo ya de palabrerías y comentarios dobles y me pongo en materia. El post que rectifico es éste: Proxmox + nat + iptables.

Gracias a las configuraciones de las antenas en los supernodos entiendo que se deben marcar los paquetes tanto de entrada (prerouting) como de salida (postrouting). En TCP hay una llamada de un …

GlusterFS

GlusterFS es un gestor de ficheros en red. Básicamente lo que permite es replicar unos mismos ficheros en varios servidores, para luego con los clientes de glusterfs conectar a alguno de ellos y definir otro de backup en el caso de que se caiga el primero. Con éste sistema tenemos redundancia de los datos.

La recomendación es usar 3 nodos servidores de gluster, en mi caso, ahora mismo no dispongo del tercero, y lo añadiré mas tarde.

Vamos a trabajar con 3 nodos, Node1A, Node1B y Node2A, los dos primeros serán los servidores que tendrán el disco duro que queremos compartir en red, y el último sólo va a actuar como cliente.…

proxmox 6 + ceph

Por fin otro logro mas que me había dado guerra durante muchas horas, el motivo un ceph roto al que de momento he preferido migrar los datos a otro sitio y ya con mas calma intentaremos recuperarlo (ya vendrá otro post otro día sobre éste tema).

En motivo del ceph roto he aprovechado para reinstalar la infraestructura de proxmox entera sobre proxmox6 (debian10).

Partimos de 5 nodos unidos en el cluster (pvecm add ipmaster), sólo vamos a instalar ceph en 3 de ellos.

- node1A - 172.31.0.1 (ceph)
- node1B - 172.31.0.2
- node1C - 172.31.0.3 (ceph)
- node1D - 172.31.0.4 (ceph)
- node2D - 172.31.0.8

El nodo maestro del cluster es “node1D”, y para ver que ésto no implica nada a la hora de configurar ceph y también porque romper el 1D era una cosa que no me podía permitir… vamos a empezar por “node1A”.

Para ello vamos a la interfaz web de proxmox e instalamos ceph:…

Levantar tunnel vtun con lxc (proxmox)

Me encuentro con éste error

Oct 31 13:16:06 asterisk vtund[1748]: VTun client ver 3.X 05/15/2013 started
Oct 31 13:16:06 asterisk vtund[1748]: Connecting to 213.162.195.57
Oct 31 13:16:06 asterisk vtund[1748]: Use SSL-aware challenge/response
Oct 31 13:16:06 asterisk vtund[1748]: Remote Server sends #012.
Oct 31 13:16:06 asterisk vtund[1748]: Session sipcapa8[213.162.195.57] opened
Oct 31 13:16:06 asterisk vtund[1748]: Can't allocate tun device tun1000. No such file or directory(2)
Oct 31 13:16:06 asterisk vtund[1748]: Session sipcapa8[x.x.x.x] closed
Oct 31 13:16:06 asterisk vtund[1748]: Exit
Oct 31 13:17:09 asterisk vtund[1727]: Terminated

El motivo es que al tratar de levantar interfaces de red dentro del lxc no tenemos permisos y tenemos que definirle que éste contenedor si puede levantar interfaces de red.

Primero entramos en el host donde se encuentra el contenedor y apagamos el contenedor

# pct shutdown 104

Para ello modificamos el fichero de configuración del contenedor y añadimos al final ésta línea

root@wezen-04:/etc/pve/lxc# vi /etc/pve/lxc/104.conf
lxc.cgroup.devices.allow: c 10:200 rwm

Ahora arrancamos el contenedor de nuevo y ejecutamos los siguientes comandos

root@wezen-04:/etc/pve/lxc# pct start 104
root@wezen-04:/etc/pve/lxc# pct enter 104
root@asterisk:/# mkdir /dev/net
root@asterisk:/# mknod /dev/net/tun c 10 200
root@asterisk:/# ip tuntap add mode tap
root@asterisk:/# ip link
root@asterisk:/# service vtun restart
root@asterisk:/# ifconfig |grep tun
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00   
tun1000   Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-0

Los comandos que hemos puesto los tendremos que ejecutar cada vez que reiniciemos la máquina, así que le decimos que ejecute éstos comandos justo después de levantar la interfaz de red

auto eth1
iface eth1 inet static
        address x.x.x.x
        netmask 255.255.255.224
        

Clúster Proxmox + añadir disco

El resumen de la de hoy, montar un clúster proxmox y luego añadir un disco addicional a /var/lib/vz2.

La primera es que partimos de 3 servidores, que es el mínimo recomendado para montar un clúster de proxmox. El motivo es que los nodos del clúster sincronizan continuamente los datos y si uno de los nodos se cae, si sólo hubiese dos podría dar problemas al reconstruir el nodo, ya que algunos datos se quedaron desactualizados o a medias en el nodo del clúster que está caído (que ha dejado de funcionar). Así que si montas cualquier tipo de clúster, el mínimo son 3 nodos, o 3 servidores distintos, en éste caso con instalaciones de proxmox.

Tengo 3 servidores con éstos nombres y éstas IPs (todos sin maquinas virtuales y se recomienda así para que no haya problemas de IDs duplicados)

– wezen-01.capa8.cat 10.90.226.90
– wezen-02.capa8.cat 10.90.226.91
– wezen-03.capa8.cat 10.90.226.92

Wezen-01 será el “master”, siempre que tengamos que levantar el clúster después de un corte de electricidad, vamos a levantar primero ésta máquina.

Entramos en el servidor wezen-01 y ejecutamos pvecm create nombredelcluster. Tenemos que tener en cuenta que se no se puede cambiar el nombre una vez creado y se recomienda no cambiar las IPs.

root@wezen-01:~# pvecm create wezen

Ahora entramos en los dos otros nodos y los conectamos con el nodo maestro. Nos pedirá el password de root del servidor maestro.

root@wezen-02:~# pvecm add 10.90.226.90
root@wezen-03:~# pvecm add 10.90.226.90

Y listos, ahora si miramos el estado del clúster nos …

Virtualbox: desactivar sincronización horaria con el host

Tenemos una maquina virtual con virtualbox en la que necesitamos que trabaje con una fecha distinta que la del host.

Lo primero será desactivar el cliente NTP de nuestro sistema operativo.

A continuación instalamos las guest additions (si queremos).

Y finalmente, desde el host, con el usuario que está corriendo el virtualbox (atención si lo ejecutas como “laura” por ejemplo, no hacerlo con root, ya que root no ve las maquinas virtuales de laura), ejecutamos lo siguiente

vboxmanage setextradata vmname "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "1"

Siendo vmname el nombre de la maquina virtual, usamos lo siguiente para listar las máquinas existentes en nuestro sistema

laura@melatonina:~$ vboxmanage list vms
"capa8" {a1333e64-1b9c-4414-9411-973adf55xxx}
"Resolume" {f175a4dc-c3ea-42ec-b74b-83e496a6xxxx}
"windows7" {fe860ff5-bbae-478c-a026-378df134xxxx}
"Windows UE" {972ee722-2f0b-480d-8cc4-2ab993f7xxxx}
"kali" {6cea5b78-88bb-4888-a73e-5f3533f0xxxx}
"forense" {c009e747-d086-4f76-b407-d5f6a26xxxx}

Las virtualboxguest additions no intervienen en dicha configuración, ésto es cosa del virtualbox.…

LXC: Montar un directorio del host en un contenedor

Ésto hace tiempo lo documenté para openvz, pero con lxc cambia un poco la cosa. Voy a saco y pongo lo que se tiene que hacer hehe

Montas el punto de montaje que quieres, en mi caso estoy montando un dav con davfs2 (apt-get install davfs2) en el host en un punto de montaje:

# mkdir /mnt/dav_capa8
# mount -t davfs -o gid=www-data,uid=www-data https://cloud.capa8.net/remote.php/webdav/ /mnt/dav_capa8/

Previamente he puesto las credenciales en /etc/davfs2/secrets del acceso al webdav

y luego así se lo paso al contenedor:

# pct set 102 -mp0 /mnt/dav_capa8,mp=/mnt/dav_capa8

Reinicio el contenedor y el nuevo mountpoint ya está accesible

Sólo me falta comprobar si el usuario www-data que es quien tiene que escribir en éste punto de montaje tiene permisos suficientes.

Para que se monte el davfs al iniciar el sistema, editaremos el fichero /etc/fstab y la última línea:

# vi /etc/fstab
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
/dev/sdb1 /var/lib/vz2 ext4 defaults 0 0
https://cloud.capa8.net/remote.php/webdav/ /mnt/dav_capa8/ davfs noauto,user 0  0

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…

Convertir contenedor lxc a contenedor compatible con proxmox

Un contenedor lxc funcionará en un host que tiene instalado proxmox, pero si queremos poder administrarlo cómodamente desde el interfaz de proxmox, tendremos que prepararlo para que lo entienda proxmox.

Inicialmente había probado de mover directamente los ficheros a los directorios correctos, pero de momento no veo como hacer que proxmox entienda un rootfs sin formato .raw, una de las cosas que no me gustó al ver trabajar a proxmox con lxc, con vz podías acceder desde el host directamente a los ficheros del contenedor :(…

Carmageddon + Dosbox

Carmageddon es un magnífico juego que te permite liberar tensiones, has tenido un día duro en el trabajo? un cliente te está dando la murga? etc. Carmageddon es tu juego!

Hace un par de días me vinieron ganas locas de hacer una partidita a Carmageddon, pero por supuesto y como es marca de la casa, no me vale ejecutarlo directamente en la terminal DOS de windows, tal como hice con Z Zed lo suyo es usar dosbox.

Dosbox es un emulador DOS.

Primero de todo tenemos que tener en cuenta que Carmageddon es un juego de 32bit y la visualización del juego con el emulador de 64bit no funciona correctamente, así que tendremos que instalar dosbox pero la versión de i386

# apt-get --add-architecture i386
# apt-get update
# apt-get install dosbox:i386