martes, 14 de abril de 2009

Ubuntu + VirtualBox + PfSense + LoadBalance

Tengo un firewall con Ubuntu 8.10 que maneja basicamente iptables para filtrado de paquetes, cbq para manejo de anchos de banda y uno que otro servicio (http, mysql, dhcp, etc).

Necesitaba hacer balanceo de carga entre dos conexiones adsl y después de hacer varias pruebas con ip route el rendimiento luego de algunas horas se degradaba mucho, al no conseguir documentación suficiente al respecto pensé en utilizar PFSense, el cual he utilizado antes y se que hace muy bien el trabajo de balanceo entre múltiples WANs. Pero, nunca falta un pero, no había presupuesto para otro servidor, así que penśe en realizar una tarea poco común: un host PFSense en la misma máquina mediante el uso de VirtualBox en la cual el PFSense (guest) sería la puerta de enlace de Ubuntu (host).

No voy a explicar la instalación de PFSense o de Virtualbox ya que de eso hay mucha documentación en Internet, me voy a limitar a explicar la configuración para que un guest de Virtualbox tenga interfaces ethernet que sean visibles desde el "exterior" y hacer que el host utilice a su propio guest como puerta de enlace.

  1. Instalar Virtualbox, se pueden bajar paquetes para linux aquí.
  2. Bajar la imagen de PFSense. Yo utilicé el .iso pero también hay una manera de bajar la maquina virtual para VMWare y transformarla con varios pasos a una máquina virtual para Virtualbox. En este caso preferí bajar el .iso e instalar el PFSense desde cero.
  3. Crear una nueva máquina virtual (guest), seleccionando como sistema operativo FreeBSD, coloquen el tamaño de disco y memoria ram que consideren necesarios en mi caso el disco duro virtual es de 2GB y la memoria ram de 512MB.
  4. Una vez creada la nueva máquina virtual y antes de ejecutarla por primera vez, entramos en su configuración y habilitamos tantas tarjetas de red como necesitemos, en este caso tres.
  5. Para hacer que estas interaces sean visibles desde la red externa hay que seguir los pasos que se indican aquí. Importante saber que para cada bridge que hagamos es necesaria una interfaz física, o sea que necestimos en este caso tres tarjetas de red o por lo menos yo no logré asignar una interfaz física a más de un bridge entre el host y el guest. En este caso cuando configuremos por ejemplo tap0 llevará la configuración que queremos en el guest y en br0 la que queramos en el host.
  6. Iniciamos la máquina virtual por primera vez y utilizamos como método de instalación el archivo .iso del PFSense que bajamos anteriormente (no es necesario quemar un cd para este propósito).
  7. Una vez instalado el PFSense se configura el balanceo de carga.
  8. Ahora solo queda configurar nuestra red en Ubuntu para que utilice como salida nuestra máquina virtual en PFSense y listo.
Como nota final, si utilizan iptables en el host hay que revisar con detenimiento las interaces donde se aplican (eth0, eth1, etc) porque en mi caso tuve que cambiar unas reglas de PREROUTING de eth0 a br0.


7 comentarios:

heberto contreras dijo...

ronald buenas eres operador de pfsense??? si es asi necesito ponerme en contacto contigo y explicarte un prblema de configuracion q tengo en mi server.

Unknown dijo...

He hecho algunos experimentos con el PFSense, si lo que necesitas no es tan profundo tal vez te pueda ayudar, mi correo electrónico está en mi perfil...

Saludos.

Anónimo dijo...

Hola amigo, no sirve el link de hacer que las interaces de PfSense sean visibles desde la red externa.

Tengo Ubuntu 9.10 + VirtualBox Version 3.0.8_OSE + PfSense 1.2.1. Y no puedo entrar en la configuracion de PFSense desde el Navegador Firefox de Ubuntu. Gracias.

Unknown dijo...

Gracias por tu comentario, no he tenido tiempo de editar el post. Me di cuenta que el link estaba roto y al investigar descubrí que ese procedimiento ya no es necesario. Puedes configurar la interfaz de red como briged directamente en Virtualbox. En las pruebas que he hecho no he utilizado la versión OSE del Virtualbox, se que tiene algunas limitaciones, te recomiendo que utilices la versión completa que puedes descargar desde su sitio web.

Cochumba dijo...

Ahora solo queda configurar nuestra red en Ubuntu para que utilice como salida nuestra máquina virtual en PFSense y listo ??

a mi me paso exctamente los mismo y ya logre q me funcione bien el pfsense pero como hago para que mi host salga por la virtual box?? a q tarjeta le declaro como puerta de salida el virtual??

mi correo es charly@c.net.gt gracias

Mary Elizabeth dijo...

Hola tengo instalado una maquina virtual de pfsense en fedora, pero al querer acceder via web no puedo, sin embargo desde otra maquina si puedo acceder a la interfaz web, como puedo resolver esto??

Anónimo dijo...

Muchas gracias por el artículo.

Aquí otro tutorial en Español de cómo instalar pfsense sobre vmware esxi:

http://www.sysadmit.com/2017/04/vmware-esxi-instalar-pfsense.html