Instalar phpIPAM en Debian 9 con Nginx y MariaDB.

¿Estas cansado de tener que recordar las IP’s de tu Red? ¿Posees un entorno de Red complejo con muchas subredes, VLANS y equipos? ¿Necesitas tener toda esa información organizada en un solo lugar para saber que IP’s tienes libres y poderlas usar? Todas estas preguntas tienen una respuesta simple, phpIPAM. Pero que es phpIPAM:

Phpipam es una aplicación de gestión de direcciones IP web de código abierto (IPAM). Su objetivo es proporcionar una gestión de direcciones IP ligera, moderna y útil. Es una aplicación basada en php con base de datos MySQL, que utiliza bibliotecas jQuery, ajax y HTML5 / CSS3.

Características de phpIPAM.

  • IPv4/IPv6 IP address management
  • Section / Subnet management
  • Automatic free space display for subnets
  • Visual subnet display
  • Automatic subnet scanning / IP status checks
  • PowerDNS integration
  • NAT support
  • RACK management
  • Domain authentication (AD, LDAP, Radius)
  • Per-group section/subnet permissions
  • Device / device types management
  • RIPE subnets import
  • XLS / CVS subnets import
  • IP request module
  • REST API
  • Locations module
  • VLAN management
  • VRF management
  • IPv4 / IPv6 calculator
  • IP database search
  • E-mail notifications
  • Custom fields support
  • Translations
  • Changelogs

En este tutorial les mostrare como instalar la última versión (hasta la fecha) sobre un contenedor de Proxmox con Debian 9.

Requisitos de nuestro Contenedor

  • CPU x 1 Core
  • 512 MB RAM
  • 8 GB Disco
  • OS Debian 9

Como pueden apreciar phpIPAM consume muy poco, ya que solo es una web que se instala sobre Apache/Nginx y como base de datos MariaDB/MySql. Antes de comenzar a instalar phpipam, asegúrese de cumplir los siguientes requisitos:

  1. Apache2 webserver with php support or Nginx with php-fpm
  2. Mysql server (5.1+)
  3. PHP:
    • version 5.3 supported to phpipam version 1.3.1
    • version 5.4
    • version 7.2 and higher supported from phpipam release 1.3.2
  4. PHP modules:
    • pdo, pdo_mysql : Adds support for mysql connections
    • session : Adds persistent session support
    • sockets : Adds sockets support
    • openssl : Adds openSSL support
    • gmp : Adds support for dev-libs/gmp (GNU MP library) -> to calculate IPv6 networks
    • ldap : Adds LDAP support (Lightweight Directory Access Protocol – for AD also)
    • crypt : Add support for password encryption
    • SimpleXML: Support for SimpleXML (optional, for RIPE queries and if required for API)
    • json: Enable JSON support
    • gettext: Enables translation
    • filter : Adds filtering support
    • pcntl : Add support for process creation functions (optional, required for scanning)
    • cli : Enable CLI (optional, required for scanning and status checks)
    • mbstring : Enable mbstring support
  5. php PEAR support

Instalación de phpIPAM

Comenzamos actualizando nuestro contenedor (CT) para siempre usar las últimas versiones.

Ahora sigue nuestro servidor web que en este caso utilizaremos Nginx, ya que en la mayoría de los tutoriales sobre phpIPAM que existen usan Apache2.

Como se aprecia en los requisitos necesitamos PHP y como usamos Nginx también necesitaremos php-fpm, además de los módulos obligatorios.

Podemos comprobar que todo se cumple con este simple comando

Una vez terminado configuraremos nuestros servicios de web.

Nota: Si desea puede dejar la conexion por socket al fpm, tendra que configurarlo asi tambien para su sitio usando

Ahora viene un paso que no parece tener importancia, pero les ahorrara muchos dolores de cabeza. Después de horas intentando la actualización automática del estado de las IP’s me di cuenta del error que tenía, era algo tan sencillo como tener diferencia de hora entre el contenedor (CT) y la web de phpIPAM. Para evitar esto configuramos:

Repito solo haciendo esto lograran ver el estado real de sus IP’s , ya que no habrá diferencias de hora y la tarea programada que usaremos no se perderá. Para comprobar q todo este bien entramos a la web y comparamos la hora de la web y del PC.

Editamos el fichero de configuración de Nginx para phpIPAM.

Les deje comentado la sesión de usar seguridad https mediante SSL, por si en un futuro desean activarla.

Nos toca ahora instalar el servidor de bases de datos que usaremos en este caso sería MariaDB. Les mostrare como instalar la más reciente versión de la misma.

Necesitamos agregar al sourcelist:

El nuevo repositorio agregado para MariaDB usa su llave (key) por lo tanto la agregamos:

Actualizamos nuevamente y seguido instalamos MariaDB

Comprobamos

Y podemos ver que nos instaló una versión más reciente que si hubiésemos usado un apt install mariadb-server 

Aseguramos el servidor

Ahora lo configuramos

NOTA: Mas seguro es si usan otro usuario como phpipam por ejemplo.

Descargaremos la última versión de phpIPAM, a la fecha de este tutorial es la versión 1.3.2. Hay 2 métodos :

  1. Puede descargar e instalar phpipam desde el repositorio oficial de Sourceforge y extraerlo a su directorio de servidor web.
  2. O simplemente usar GitHub:

Usaremos el 1er método ya que es el más sencillo. Vamos al repositorio oficial de Sourceforge y bajamos phpipam-1.3.2.tar . Puede que tengan que usar algún método alternativo para bajarlo por estar cerrado para Cuba.

La web de phpIPAM tiene una plantilla de configuración, nos basaremos en ella y la copiaremos para editarla:

Daremos permisos a las carpetas de phpIPAM para que Nginx las use

Finalmente nos queda entrar a la web usando http://ip_phpipam/phpipam

En la 1era pantalla nos preguntara si queremos hacer una instalación nueva o subir de versión. Le diremos que instalación nueva, seguido usaremos la opción de instalación automática de las bases de datos. En la cual debemos llenar los datos del usuario que usamos para entrar y crear bases de datos (root) y la clave (‘tu clave’) que le definimos al configurarlo. Si todo esta correcto se crearan las bases de datos y seguido nos pedirá introducir la clave del usuario admin. Finalmente nos autenticamos como admin y veremos el dashboard de phpIPM. Aquí les dejo una captura final.

La interfaz es muy fácil de entender, pueden borrar todos los ejemplos que trae luego de entender su filosofía. Lo primero es crearte sección o editar la customer que trae, le ponemos nuestros datos. Dentro de ella podemos crear carpetas en orden jerárquico y en cada carpeta ubicar nuestras subredes y VLANS para un mayor orden.

Ahora les mostrare como usar FPing para escanear sus redes. Primero lo instalamos:

En la web del phpIPAM configuramos que usaremos fping y no ping. Vamos a:
Menú de Administración, phpIPAM setting y nos desplazamos al final donde se encuentra las características del ICMP.

Es muy importante definir el camino correcto al comando fping(/usr/bin/fping). En el tipo de escaneo seleccionamos fping. ¿Como puedo automatizar el proceso de refrescamiento y escaneo de IP?

-Disponibilidad automática de host y verificación de descubrimiento

En primer lugar, se recomienda el soporte de pcntl para php cli para que phpipam pueda hacer verificaciones paralelas de icmp, esto reduce considerablemente el tiempo requerido para verificar el estado. Puede verificar si su instalación está bien con el siguiente comando:

Ahora tiene que seleccionar qué subredes deben buscar estados para los hosts configurados.
Vaya a editar subred y marque «Comprobar el estado de los hosts». Esto le indicará al script cron que verifique el estado de los hosts dentro de esta subred. «Descubrir nuevos hosts» intentará encontrar nuevos hosts para esta subred y los agregará automáticamente a la base de datos de phpipam.

Finalmente creamos una tarea en el cron

Se puede apreciar que cada 15 minutos se escaneara la subred chequeando el estado de esas direcciones IP’s. Cada 30 minutos se escanea en busca de nuevas direcciones IP’s que agregar. Los demás son muy fácil de entender. Queda por ustedes seguir configurando esta útil herramienta que le facilita la vida a cualquier SysAdmin.

Como actualizar su phpIPAM

En general, actualizar phpipam es un proceso que contiene 3 pasos separados:

Copia de seguridad de la base de datos de  y del archivo config.php
Actualizar el código phpIPAM
Actualizar la base de datos phpIPAM

El primer paso ya esta cubierto porque en el CRON les deje una tarea de salva diaria de la Base de Datos. Salvamos el archivo config.php

Bajamos la version nueva y la copiamos a /var/www/html

Restauramos si es necesario la configuración.

Abra el navegador y siga el procedimiento de actualización.

Finalmente si todo fue satisfactorio podemos entrar al dashboard y tendremos el phpIPAM actualizado.

Nota: Agradecimientos a Héctor (AKA @nihilanthlnxa) y a Jorge de la Cruz por mostrarme la existencia de este maravilloso programa. Si desean hacer este mismo tutorial pero usando Ubuntu, Apache2 y MySQL pueden hacerlo aquí en el blog de Jorge.
alex out

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 6

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Alexander Rivas Alpizar 61 artículos
Administrador de Redes EMPRESTUR Cienfuegos

6 comentarios

  1. Firefox 63.0 Firefox 63.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0

    Ahora les mostrare como usar FPing para escanear sus redes.
    para cuando seria eso.?
    ..me gusta mucho este tutorial…gracias


  2. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 62.0 Firefox 62.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0

    Y si de paso hicieras una imagen de docker y la dejaras lista. Incluyendo un compose.yml que incluya las dependencias, como mariadb y demas. Seria ideal para muchos

  3. Firefox 63.0 Firefox 63.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0

    JAJAJAJA disculpa es q lo estabas leyendo cuando lo estaba actualizando, ya esta totalmente actulizado. Gracias por leer.

  4. Firefox 63.0 Firefox 63.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0

    Bueno lo pensare, ya q no uso docker. Si un amigo me ayuda y lo crea, se lo pongo aqui en otra actualizacion del tuto

  5. Firefox 63.0 Firefox 63.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0

    Muy bien, pero en vez de editar el crontab, se debería emplear el cron del propio usuario root, con crontab -e, evitando especificar el usuario, No sabía que no conocías la herramienta, pues es ya tiene tiempo su desarrollo y lo tengo en explotación hace tiempo, Muy utilil para llevar el registro y control de todas nuestras ip en la red de la empresa.

  6. Google Chrome 101.0.4951.54 Google Chrome 101.0.4951.54 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36

    Hola estimado, yo sigo los pasos para mantener scaneado los host activos, pero no lo hace, siempre estan los host sin el circulito en verde…

    ¿me podrias ayudar por favor?

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.