En principio esta combinación no debería suponer mayor complicación, que una instalación similar en una maquina física, pero como veremos a continuación sí hay que tener en cuenta varios particularidades que harán el proceso un poco más complejo de lo que pudiéramos haber pensado en un inicio.
La motivación fundamental por la que decidimos realizar este diseño de sistemas, no es otra que optimizar al máximo las capacidades de nuestra máquina (host) en relación a los sistemas virtuales que vamos desplegar. El uso de proxmox está justificado básicamente por su facilidad para gestionar los sistemas virtualizados y por poder desplegar tanto máquinas OpenVZ como KVM. Decidirnos por Openvz frente a KVM para instalar Zentyal, está fundamentado en el aprovechamiento máximo del HOST, y dado que las aplicaciones que correrán en Zentyal no requieren de una dedicación total del un sistema (KVM) nos decidimos por implantarlo sobre un templare de Ubuntu 10.10 Server en Openvz.
En este artículo nos centraremos en detalles y problemas específicos con los que nos hemos encontrados, no será un HOWTO completo
de la instalación, que de otro modo podréis fácilmente seguir apartar de la recopilación de enlaces que os presentaremos a continuación.
- Instalación de Ubuntu 10.10 en Proxmox OpenVZ.
Descargar el template: http://pve.proxmox.com/wiki/Get_Virtual_Appliances#Ubuntu_Lucid_Standard
Creación de la máquina virtual Openvz: http://pve.proxmox.com/wiki/Installation#Container_.28OpenVZ.29_Virtual_Machines_-_Default
-
Instalación de Zentyal 2.0 http://trac.zentyal.org/wiki/Document/Documentation/InstallationGuide
-
Problemas de red e iptables en máquinas OpenVZ:
3.1 Instalar una segunda interfaz de red en openvz. Para nuestra instalación usaremos 2 interfaces de red, una externa y otra interna. En Proxmox desde la interfaz web no hay forma de agregar 2 interfaces de red. Hay que seguir los pasos siguientes:
101 es el ID de nuestro contenedor y vmbr1 es una interfaz bringe que hemos levantado en el host.
vzctl set 101 --netif_add eth1,,,,vmbr1 --save
Enlace de referencia: http://forum.proxmox.com/threads/5008-Network-issue-setting-up-two-networks-(OpenVZ-container)
3.2. Hay que habilitar en el servidor host los módulos necesarios para iptables
Enlace de referencia: http://wiki.openvz.org/Using_NAT_for_VE_with_private_IPs y http://wiki.openvz.org/Common_Networking_HOWTOs
(enlaces foros: http://forum.openvz.org/index.php?t=msg&goto=42693& http://www.leopoldomaestro.com/habilitar-iptables-para-los-containers-openvz-en-proxmox/)
modprobe ip_conntrack ip_conntrack_enable_ve0=1
3.3. Hay que configurar las máquinas VZ para que soporten los módulos necesarios de iptables
– Modificar /etc/vz/vz.conf e incluir:
IPTABLES="iptable_filter iptable_mangle ipt_limit ipt_multiport ipt_tos ipt_TOS ipt_REJECT ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_LOG ipt_length ip_conntrack ip_conntrack_ftp ip_conntrack_irc ipt_conntrack ipt_state ipt_helper iptable_nat ip_nat_ftp ip_nat_irc ipt_REDIRECT"```
– Reiniciar el servicio vz.
`/etc/init.d/vz restart`
4. OpenVPN sobre OpenVZ
Aquí el principal problema al instalar los módulos de VPN en Zentyal es que por defecto los contenedores VZ no tienen las interfaces virtuales para los túneles de VPN. En esta página se explica detalladamente cómo hay que configurar el host y la máquina virtual VZ.
http://wiki.openvz.org/VPN_via_the_TUN/TAP_device
lsmod | grep tun```
modprobe tun
vzctl set 101 --devices c:10:200:rw --save
vzctl set 101 --capability net_admin:on --save
vzctl exec 101 mkdir -p /dev/net
vzctl exec 101 mknod /dev/net/tun c 10 200
vzctl exec 101 chmod 600 /dev/net/tun
vzctl set 101 --devnodes net/tun:rw --save
más enlaces: http://wiki.vpslink.com/TUN/TAP_device_with_OpenVPN_or_Hamachi
http://forum.openvz.org/index.php?t=msg&goto=8117
- Configuración de Zentyal VPN
En este caso nosotros siguiendo las indicaciones de la documentación de Zentyal y por nuestra propia experiencia todo funcionó correctamente, aunque tuvimos que reiniciar en varias ocasiones el servicio de openvpn porque no se arrancaba correctamente y pusimos manualmente la reglas de iptables.
Para confirmar que todo está correctamente configurado podéis ejecutar: sudo iptables -t nat -L -n y os debe salir algo similar a esto:
Chain PREROUTING (policy ACCEPT)```
target prot opt source destination
premodules all -- 0.0.0.0/0 0.0.0.0/0
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
postmodules all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain postmodules (1 references)
target prot opt source destination
MASQUERADE all -- 192.168.161.0/24 0.0.0.0/0
Chain premodules (1 references)
target prot opt source
Donde 192.168.161.0/24 es el rango para las interfaces virtuales de VPN.
Esperamos que esta especie de manual recopilatorio os sirva para vuestros proyectos de virtualización.