PhpIPAM
phpIPAM — удобная система для управления IP-адресами. Позволяет централизованно отслеживать подсети, резервировать IP, работать с VLAN и интегрироваться с инфраструктурой.
Установка PhpIPAM
Установить пакет phpIPAM:
# apt-get install phpipam php8.2-curl
Установка веб-сервера
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
Генерация сертификата
Генерация самоподписанного сертификата:
- Создать каталог для сертификатов:
# mkdir /etc/openssl/phpipam
- Сгенерировать ключ и сертификат (действителен 3650 дней):
# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/openssl/phpipam/phpipam.key -out /etc/openssl/phpipam/phpipam.crt
Настройка 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 для 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.
define('BASE', "/phpipam/");
Завершение установки PhpIPAM
Запустить установщик, открыв в браузере ссылку:
http://ipam.test.alt
Для установки нового экземпляра phpIPAM на стартовой странице установщика выбрать пункт «New phpipam installation»:
На следующей странице выбрать пункт «Automatic database installation»:
Указать учётные данные пользователя root и нажать кнопку «Install phpipam database»:
Если база данных создана, появится сообщение «Database installed successfully!». Для перехода к следующему шагу необходимо нажать на кнопку «Continue»:
Далее необходимо установить пароль для учётной записи admin и нажать кнопку «Save settings»:
При успешной установке появится сообщение «Settings updated, installation complete!»:
Для перехода к странице авторизации необходимо нажать на кнопку «Proceed to login».
Вход в систему:
Логин: admin
Пароль: заданный в процессе установки
В результате выполненных действий откроется главная страница PhpIPAM:
Основные функции
Изменить язык интерфейса можно в настройках пользователя:
Для применения настроек необходимо перелогиниться.
Включение и настройка API
API phpIPAM позволяет интегрировать систему с другими приложениями и автоматизировать управление IP-адресами.
Включение API:
- Перейдите в «Администрирование» → «Настройки phpIPAM».
- В разделе «Настройки дополнительных модулей» установите переключатель «API» в положение «ON».
- Нажмите «Сохранить».
Создание ключа API:
- На странице «Администрирование» → «API» нажмите «Создать ключ API».
- Заполните поля:
- «ID прил.» — идентификатор приложения, без пробелов;
- «Код прил.» — токен приложения (будет сгенерирован автоматически);
- «Права прил.» — выбрать уровень доступа;
- «Безопасность прил.»:
- «SSL с токеном приложения» — требует HTTPS;
- «SSL с токеном пользователя» — дополнительная аутентификация;
- «Зашифровано» — зашифрованные запросы;
- «Токен пользователя».
- Нажмите «Добавить».
$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
- получить токен пользователя, указав в запросе пользователя и его пароль:
$ curl -k -X PATCH \
-H "Content-Type: application/json" \
-H "token: eB37bUOMCZnSniT4daNuVY2J" \
https://ipam.test.alt/api/pve/user/