PhpIPAM

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


phpIPAM — удобная система для управления IP-адресами. Позволяет централизованно отслеживать подсети, резервировать IP, работать с VLAN и интегрироваться с инфраструктурой.

Установка PhpIPAM

Установить пакет phpIPAM:

# apt-get install phpipam php8.2-curl
Примечание: Версия phpipam 1.6.0-alt1 использует PHP 8.2, поэтому все зависимые модули PHP также должны быть версии php8.2.


Установка веб-сервера

Примечание: Если для phpIPAM используется доменное имя (например, ipam.test.alt), оно должно корректно разрешаться DNS-сервером.


Apache2

Установить Apache2 и дополнительные модули:

# apt-get install apache2 apache2-mod_php8.2

Включить модули:

# a2enmod mod_php8.2
# a2enmod rewrite

Запустить веб-сервер Apache2 и добавить его в автозагрузку:

# systemctl enable --now httpd2

Создать файл конфигурации виртуального хоста /etc/httpd2/conf/sites-available/phpipam.conf со следующим содержимым:

<VirtualHost *:80>
    ServerAdmin admin@test.alt
    DocumentRoot "/var/www/webapps/phpipam"
    ServerName ipam.test.alt # или IP-адрес
    <Directory "/var/www/webapps/phpipam">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog "/var/log/httpd2/phpipam-error_log"
    CustomLog "/var/log/httpd2/phpipam-access_log" combined
</VirtualHost>

Включить виртуальный хост:

# a2ensite phpipam

Перезапустить веб-сервер:

# systemctl restart httpd2

Веб-интерфейс будет доступен по адресу:

http://ipam.test.alt

Nginx

Установить необходимые пакеты:

# apt-get install phpipam nginx php8.2-fpm-fcgi

Запустить и включить PHP-FPM:

# systemctl enable --now php8.2-fpm

Создать конфигурационный файл /etc/nginx/sites-available.d/phpipam.conf со следующим содержимым:

server {
    listen  *:80;
    server_name ipam.test.alt;
    root   /var/www/webapps/phpipam;

    # phpipam
    location / {
        try_files $uri $uri/ /index.php;
        index index.php;
    }
    # phpipam - api
    location /api/ {
        try_files $uri $uri/ /api/index.php;
    }

    # php-fpm
    location ~ \.php$ {
        fastcgi_index  index.php;
        try_files      $uri $uri/ index.php = 404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php8.2-fpm/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
 }

Включить виртуальный хост:

# ln -s /etc/nginx/sites-available.d/phpipam.conf /etc/nginx/sites-enabled.d/

Запустить Nginx и добавить его в автозагрузку:

# systemctl enable --now nginx

Веб-интерфейс будет доступен по адресу:

http://ipam.test.alt

Настройка HTTPS

Генерация сертификата

Генерация самоподписанного сертификата:

  1. Создать каталог для сертификатов:
    # mkdir /etc/openssl/phpipam
    
  2. Сгенерировать ключ и сертификат (действителен 3650 дней):
    # openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/openssl/phpipam/phpipam.key -out /etc/openssl/phpipam/phpipam.crt
    
Примечание: Во время генерации OpenSSL при запросе Common Name (CN), необходимо указать домен, который будет использовать phpIPAM, например: ipam.test.alt. Остальные поля можно оставить пустыми.


Настройка HTTPS в Apache

Установить и включить модуль SSL:

# apt-get install apache2-mod_ssl

Открыть порт 443 для доступа по HTTPS:

# a2enport https

Внести изменения в файл /etc/httpd2/conf/sites-available/phpipam.conf:

<VirtualHost *:443>
    ServerAdmin admin@test.alt
    DocumentRoot "/var/www/webapps/phpipam"
    ServerName ipam.test.alt 
    SSLEngine on
    SSLCertificateFile "/etc/openssl/phpipam/phpipam.crt"
    SSLCertificateKeyFile "/etc/openssl/phpipam/phpipam.key"
    <Directory "/var/www/webapps/phpipam">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog "/var/log/httpd2/phpipam-error_log"
    CustomLog "/var/log/httpd2/phpipam-access_log" combined
</VirtualHost>

Перезапустить Apache:

# systemctl restart httpd2

Веб-интерфейс будет доступен по адресу:

https://ipam.test.alt

Настройка HTTPS в Nginx

Внести изменения в файл /etc/nginx/sites-available.d/phpipam.conf:

server {
    listen 443 ssl;
    server_name phpipam.test.alt;
# root directory
    root   /var/www/webapps/phpipam;
    ssl_certificate     /etc/openssl/phpipam/phpipam.crt;
    ssl_certificate_key /etc/openssl/phpipam/phpipam.key;
# phpipam
    location / {
        try_files $uri $uri/ /index.php;
        index index.php;
    }
    # phpipam - api
    location /api/ {
        try_files $uri $uri/ /api/index.php;
    }
# php-fpm
    location ~ \.php$ {
        fastcgi_index  index.php;
        try_files      $uri $uri/ index.php = 404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php8.2-fpm/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
 }

Перезапустить Nginx:

# systemctl restart nginx

Веб-интерфейс будет доступен по адресу:

https://ipam.test.alt

Установка MySQL/MariaDB

Установить сервер баз данных:

# apt-get install mariadb-server

Запустить сервер MySQL и добавить его в автозагрузку:

# systemctl enable --now mysqld.service
Примечание: По умолчанию у пользователя root нет пароля.


Настроить безопасность и задать пароль root для MySQL:

# mysql_secure_installation

Конфигурация phpIPAM

Создать конфигурационный файл phpIPAM на основе шаблона:

# cp /var/www/webapps/phpipam/config.dist.php /var/www/webapps/phpipam/config.php

Отредактировать config.php:

$db['host'] = "localhost";
$db['user'] = "phpipam";
$db['pass'] = "phpipamadmin";
$db['name'] = "phpipam";

При автоматической установке базы данных phpIPAM настроит её в соответствии с параметрами, заданными в файле config.php.

Примечание: По умолчанию в файле может быть указан хост 127.0.0.1. Необходимо заменить его на localhost, чтобы использовать соединение через сокет.


Примечание: При автоматической установке будет создан пользователь phpipam с паролем phpipamadmin, имеющий права на управление базой phpipam, но без прав на создание других баз данных.


Примечание: Если PhpIPAM установлен не в корне веб-сервера (например, http://web-server/phpipam/), необходимо указать путь в параметре BASE:
define('BASE', "/phpipam/");


Завершение установки PhpIPAM

Запустить установщик, открыв в браузере ссылку:

http://ipam.test.alt
Примечание: Если при открытии страницы появляется ошибка, необходимо установить недостающие модули и перезапустить веб-сервер. Сообщение об ошибке


Для установки нового экземпляра phpIPAM на стартовой странице установщика выбрать пункт «New phpipam installation»:

PhpIPAM. Стартовая страница

На следующей странице выбрать пункт «Automatic database installation»:

PhpIPAM. Страница выбора способа создания базы данных

Указать учётные данные пользователя root и нажать кнопку «Install phpipam database»:

PhpIPAM. Страница параметров создания базы данных

Если база данных создана, появится сообщение «Database installed successfully!». Для перехода к следующему шагу необходимо нажать на кнопку «Continue»:

PhpIPAM. Сообщение об успешном создании базы данных

Далее необходимо установить пароль для учётной записи admin и нажать кнопку «Save settings»:

PhpIPAM. Страница ввода пароля администратора

Примечание: Длина пароля должна быть не менее 8 символов.


При успешной установке появится сообщение «Settings updated, installation complete!»:

PhpIPAM. Сообщение об успешном обновлении настроек

Для перехода к странице авторизации необходимо нажать на кнопку «Proceed to login».

Вход в систему:

Логин: admin

Пароль: заданный в процессе установки

PhpIPAM. Страница авторизации

В результате выполненных действий откроется главная страница PhpIPAM:

PhpIPAM. Главная страница

Основные функции

Изменить язык интерфейса можно в настройках пользователя:

PhpIPAM. Настройки пользователя

Для применения настроек необходимо перелогиниться.

Включение и настройка API

API phpIPAM позволяет интегрировать систему с другими приложениями и автоматизировать управление IP-адресами.

Включение API:

  1. Перейдите в «Администрирование» → «Настройки phpIPAM».
  2. В разделе «Настройки дополнительных модулей» установите переключатель «API» в положение «ON».
  3. Нажмите «Сохранить».

Создание ключа API:

  1. На странице «Администрирование» → «API» нажмите «Создать ключ API».
    PhpIPAM. Создание нового ключа для API
  2. Заполните поля:
    • «ID прил.» — идентификатор приложения, без пробелов;
    • «Код прил.» — токен приложения (будет сгенерирован автоматически);
    • «Права прил.» — выбрать уровень доступа;
    • «Безопасность прил.»:
      • «SSL с токеном приложения» — требует HTTPS;
      • «SSL с токеном пользователя» — дополнительная аутентификация;
      • «Зашифровано» — зашифрованные запросы;
      • «Токен пользователя».
  3. Нажмите «Добавить».
Примечание: Если используются вызовы API по HTTP («Зашифровано» и «Токен пользователя»), необходимо в файле конфигурации /var/www/webapps/phpipam/config.php установить:
$api_allow_unsafe = true;
и перезапустить веб-сервер.


Структура запроса:

$ curl -X GET \
-H "Content-Type: application/json" \
-H "token: <API_APP_TOKEN>" \
-H "user_token: <API_USER_TOKEN>" \
<API_URL>/<APP_NAME>/<CONTROLLER>

где:

  • API_APP_TOKEN — токен приложения;
  • API_USER_TOKEN — токен пользователя;
  • API_URL — URL API-сервера phpipam (например, https://phpipam.test.alt/api);
  • APP_NAME — идентификатор (имя) приложения, созданного в phpipam API.

Примеры:

  • SSL с токеном приложения:
    $ curl -k -X GET \
     -H "Content-Type: application/json" \
     -H "token: arzhxNwpM4a29vjCZmZwfBzYoAeELbLV" \
     https://ipam.test.alt/api/pve/sections/ | jq
    
  • SSL с токеном пользователя:
    • получить токен пользователя, указав в запросе пользователя и его пароль:
      $ curl -k -X POST \
       --user admin:phpipamadmin \
       https://ipam.test.alt/api/pve/user/ 
      
      {"code":200,"success":true,"data":{"token":"eB37bUOMCZnSniT4daNuVY2J","expires":"2025-08-11 21:28:27"},"time":0.00600000000000000012490009027033011079765856266021728515625}
      
    • запрос, с использованием токена пользователя:
      $ curl -k -X GET \
       -H "Content-Type: application/json" \
       -H "token: eB37bUOMCZnSniT4daNuVY2J" \
       https://ipam.test.alt/api/pve/sections/ | jq
      
Примечание: Продлить срок действия токена можно, отправив POST- или PATCH-запрос на сервер с http-заголовком токена:
$ curl -k -X PATCH \
 -H "Content-Type: application/json" \
 -H "token: eB37bUOMCZnSniT4daNuVY2J" \
 https://ipam.test.alt/api/pve/user/