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

Solución de problemas con virtualbox

Hoy he estado como una hora tratando de solucionar un problema con virtualbox, hasta que finalmente me he dado cuenta que era un problema del kernel que tenía instalado! :)

Partía de una debian jessie (8) instalada desde cero, felizmente he instalado virtualbox sin instalar los headers de linux ni nada y al crear una maquina virtual me soltaba:

/etc/init.d/vboxsrv setup

Pero dicho fichero no estaba!!! así que he ido a mirar a mi portátil y tampoco estaba, he estado buscando en foros pero ninguno daba exactamente en el clavo de lo que me estaba ocurriendo, así que he empezado a indagar un poco.

¿Está el módulo presente?
Pues no, así que he empezado a buscar en el sistema el vboxdrv y sólo había un directorio pero no había ninguna libreria (.so) para cargar el módulo.…

Proxmox 4.0-beta

El 23 de Junio salió la beta de proxmox 4.0. Esta versión trae con ella un cambio realmente grande e interesante… los contenedores vz, pasan a ser contenedores lxc!

En Proxmox Downloads, nos podemos descargar la iso de la beta.

Al instalarla por algún motivo no se dejaba porqué me soltaba “gtk-critical gtk_container_remove”, así que he leído que desconectando el cable de red la instalación seguía adelante, lo he hecho y efectivamente he podido terminar de instalar proxmox! (es importante hacer la instalación desde un disco limpio, que no haya otro proxmox, porqué tampoco se va a dejar!).

Al entrar al interfaz web, pues como siempre, la apariencia la misma, pero con algunos cambios pequeñitos que no se ven a la primera.…

dnsmasq dentro de un contenedor vz

He tenido que instalar un dnsmasq dentro de un contenedor vz y al arrancarlo me salía éste mensaje

dnsmasq: setting capabilities failed: Operation not permitted openvz

El motivo es que dnsmasq no se ejecuta como root (cosa buena). Con esto cuando dnsmasq se levanta y quiere adquirir privilegios avanzados falla.
La razón del fallo es porque faltan algunas propiedades en el kernel o en este caso los permisos no se pasan al contenedor. Pero esto se puede cambiar fácilmente aplicando algunos cambios a la configuración del contenedor.

vzctl stop CITD
vzctl set CTID --capability setuid:on --save
vzctl set CTID --capability net_admin:on --save
vzctl set CTID --capability net_raw:on --save
vzctl start CTID

Cambiaremos el CTID por el numero de contenedor.

Fuente: blackmanticore