В этом руководстве мы покажем вам, как установить и настроить последнюю версию phpIPAM на Debian для управления IP-адресами ваших компаний.
phpIPAM, сокращение от PHP IP Address Management, - это мощное и гибкое программное обеспечение с открытым исходным кодом для управления IP-адресами и подсетями, написанное на языке программирования PHP и используемое в ОС Linux с веб-серверами Apache/Nginx, PHP и системой управления базами данных MySQL/MariaDB, также известной как стек LAMP или LEMP.
phpIPAM позволяет облегчить работу сетевых и системных администраторов, предоставляя простой и интуитивно понятный веб-интерфейс, позволяющий отслеживать, какие IP-адреса статически или динамически назначены хостам, серверам, маршрутизаторам, коммутаторам и другим сетевым устройствам. В отличие от других средств управления IP-адресами, которые требуют ручного добавления или обновления IP-адресов или статуса устройств, phpIPAM обладает некоторыми интересными встроенными функциями, которые автоматизируют процесс обнаружения новых IP-адресов и имен хостов, назначенных сетевым устройствам, и могут автоматически обновлять статус IP/устройства и добавлять IP-адреса в базу данных MySQL.
Требования
- Минимальная установка Debian 11 на пустой серверной машине или на виртуальном частном сервере.
- привилегии sudo root для локальной или удаленной учетной записи или прямой доступ к учетной записи root
- Статический IP-адрес, сконфигурированный для одной из сетевых карт вашей системы
- частное или публичное доменное имя (в зависимости от развертывания) с правильными DNS-записями для веб-служб. Если у вас нет действующего или зарегистрированного доменного имени, вы можете установить и получить доступ к сайту через IP-адрес вашего сервера
- Если вы хотите использовать почтовые уведомления phpIPAM, у вас должен быть действующий почтовый сервер, правильно настроенный и предоставляющий удаленный доступ к IMAP- и SMTP-сервисам
Предварительные условия
Прежде чем приступить к установке и настройке phpIPAM из исходных текстов собственного сервера, необходимо убедиться, что система соответствует всем программным требованиям для компиляции и установки приложения.
Первым делом необходимо обновить репозитории и программные пакеты системы, выполнив следующую команду
1 2 | apt update apt upgrade -y |
Следующим шагом выполните следующую команду для установки некоторых необходимых утилит, необходимых для дальнейшего управления системой из командной строки.
1 | apt install wget bash-completion fping |
После того как система полностью обновлена и установлены необходимые утилиты для управления сервером, задайте имя системы, выполнив следующую команду. Замените переменную hostname соответствующим образом.
1 | hostnamectl set-hostname www.mynet.com |
Проверьте имя хоста машины и файл hosts, выполнив следующие команды.
1 2 3 4 | hostnamectl cat /etc/hostname hostname -s hostname -f |
Наконец, необходимо перезагрузить сервер Debian, чтобы обновления ядра и изменения имени хоста были правильно применены.
1 | systemctl reboot |
phpIPAM - это веб-платформа для управления IP-адресами и сетями, написанная на серверном языке программирования PHP. Для выполнения сценариев PHP-файлов приложения в системе должны быть установлены и работать веб-сервер, например HTTP-сервер Apache, и интерпретатор PHP.
Чтобы установить веб-сервер Apache и интерпретатор PHP, а также все необходимые для работы приложения модули PHP, введите в консоль сервера следующую команду
1 | apt install apache2 libapache2-mod-php7.4 php7.4 php7.4-gd php7.4-opcache php7.4-json php7.4-mbstring php7.4-xml php7.4-gmp php7.4-ldap php7.4-cli php-pear php7.4-snmp |
Для проверки того, все ли установленные модули PHP включены в системе, используйте следующую команду.
1 | php -m |
После установки Apache и PHP проверьте, что веб-сервер работает и прослушивает сетевые соединения на порту 80, введя следующую команду с правами root.
1 | netstat -tlpn |
Если сетевая утилита netstat не установлена по умолчанию в вашей системе Debian, выполните следующую команду для ее установки.
1 | apt install net-tools |
Из вывода команды netstat видно, что веб-сервер Apache прослушивает входящие сетевые соединения на порту 80. Для решения этой же задачи можно использовать команду ss, которая автоматически устанавливается в Debian 11.
1 | ss - tulpn |
Если в вашей системе включен брандмауэр, например, приложение UFW, вам следует добавить новое правило для разрешения HTTP-трафика через брандмауэр, набрав следующую команду.
1 | ufw allow WWW |
или
1 | ufw allow 80/tcp |
Если вы используете необработанные правила iptables для управления правилами брандмауэра сервера Debian, добавьте следующее правило для разрешения входящего трафика через порт 80 на брандмауэре, чтобы другие администраторы сети могли просматривать онлайн-приложение.
1 2 3 | apt-get install -y iptables-persistent iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT |
сохранение работоспособности netfilter-persistent
1 2 3 | systemctl restart netfilter-persistent systemctl status netfilter-persistent systemctl enable netfilter-persistent.service |
Далее включите следующие модули Apache, необходимые приложению для корректной работы, и примените их, введя следующую команду.
1 2 | a2enmod rewrite systemctl restart apache2 |
Наконец, проверьте, может ли веб-страница Apache по умолчанию отображаться в браузерах ваших клиентов, вызвав IP-адрес вашей машины Debian или FQDN вашего домена или сервера с помощью протокола HTTP (см. рисунок ниже). Если вы не знаете IP-адрес вашей машины, вы можете выполнить команды ifconfig или ip a, чтобы узнать IP-адрес вашего сервера.
http://your_domain.tld
Для установки и доступа к панели администрирования phpIPAM на внутреннем и внешнем сайте по протоколу HTTPS, обеспечивающему безопасность трафика для клиентов, введите следующую команду для включения модуля SSL веб-сервера Apache и файла конфигурации сайта SSL.
1 2 | a2enmod ssl a2ensite default-ssl.conf |
Далее откройте файл конфигурации сайта Apache default SSL с помощью текстового редактора и включите правила перезаписи URL, вставив следующие строки кода после директивы DocumentRoot, как показано в следующем примере:
1 | nano /etc/apache2/sites-enabled/default-ssl.conf |
Выдержка из файла конфигурации SSL-сайта:
1 2 3 4 5 | <Directory /var/www/html> Options +FollowSymlinks AllowOverride All Require all granted </Directory> |
Также измените строку VirtualHost, чтобы она выглядела следующим образом:
1 | <VirtualHost *:443> |
Закройте файл SSL Apache и откройте для редактирования файл /etc/apache2/sites-enabled/000-default.conf, добавьте в него те же правила перезаписи URL, что и в файл конфигурации SSL. Добавьте строки кода после оператора DocumentRoot, как показано в следующем примере.
1 2 3 4 5 | <Directory /var/www/html> Options +FollowSymlinks AllowOverride All Require all granted </Directory> |
Наконец, вы перезапускаете демон Apache, чтобы применить все настроенные до этого правила, и посещаете свой домен по протоколу HTTP. Поскольку при этом используются пары самоподписанных сертификатов, автоматически выдаваемых Apache при установке, которым браузер не доверяет, в браузере должно появиться предупреждение об ошибке.
1 | systemctl restart apache2 |
https://yourdomain.tld
Примите предупреждение о принятии недоверенного сертификата и продолжите перенаправление на сайт Apache по умолчанию, как показано на следующем изображении.
Если приложение межсетевого экрана UFW блокирует входящие сетевые подключения к порту HTTPS, необходимо добавить новое правило для разрешения HTTPS-трафика через межсетевой экран, введя следующую команду.
1 | ufw allow 'WWW Full' |
или
1 | ufw allow 443/tcp |
Если iptables является стандартным приложением брандмауэра, установленным для защиты вашей системы Debian на сетевом уровне, добавьте следующее правило для разрешения входящего трафика через порт 443 в брандмауэре, чтобы посетители могли просматривать ваше доменное имя.
1 2 3 4 | iptables -I INPUT -p tcp -destination-port 443 -j ACCEPT netfilter-persistent save systemctl restart netfilter-persistent systemctl status netfilter-persistent |
На следующем этапе нам необходимо внести еще несколько изменений в файл конфигурации PHP по умолчанию, чтобы убедиться, что следующие переменные PHP включены, а настройка часового пояса PHP настроена правильно и соответствует географическому положению вашей системы. Откройте файл /etc/php/7.4/apache2/php.ini для редактирования и убедитесь, что следующие строки установлены так, как показано на рисунке. Кроме того, сначала создайте резервную копию конфигурационного файла PHP.
1 2 | cp /etc/php/7.4/apache2/php.ini{,.backup} nano /etc/php/7.4/apache2/php.ini |
Найдите, отредактируйте и измените следующие переменные в конфигурационном файле php.ini:
1 2 3 | file_uploads = On default_charset = UTF-8 date.timezone = Europe/London |
Увеличьте переменную upload_max_file_size для поддержки больших вложений файлов, если это так, и замените переменную date.timezone в соответствии с вашим географическим временем, обратившись к списку часовых поясов в документах PHP по следующей ссылке http://php.net/manual/en/timezones.php.
Если вы хотите увеличить скорость загрузки веб-страниц с помощью плагина OPCache, доступного для PHP7, добавьте следующие параметры OPCache в конец конфигурационного файла интерпретатора PHP ниже оператора [opcache]:
1 2 3 4 5 6 7 8 | [opcache] opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1 |
Закройте конфигурационный файл php.ini и проверьте в конце конфигурационного файла PHP, правильно ли добавлены переменные OPCache, введя следующую команду.
1 | grep opcache /etc/php/7.4/apache2/php.ini |
После внесения всех описанных выше изменений перезапустите демон Apache для применения новых изменений, введя следующую команду.
1 | systemctl restart apache2 |
Наконец, создайте информационный файл PHP, выполнив следующую команду, и убедитесь, что часовой пояс PHP настроен правильно, обратившись к информационному файлу PHP через браузер по следующему URL-адресу, как показано на рисунке. Прокрутите страницу вниз до настройки даты, чтобы проверить конфигурацию часового пояса PHP.
1 2 3 | echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php https://domain.tld/info.php |
Веб-приложение phpIPAM хранит различные конфигурации, такие как пользователи, сессии, контакты, сети, IP-адреса и другие данные в базе данных RDBMS. В этом руководстве мы настроим приложение phpIPAM на использование базы данных MariaDB в качестве бэкенда. Введите следующую команду для установки базы данных MariaDB и модуля PHP, необходимого для доступа к базе данных mysql.
1 | apt install mariadb-server php7.4-mysql mariadb-client |
После установки MariaDB убедитесь, что демон запущен и прослушивает соединения на localhost, порт 3306, выполнив команду netstat.
1 | netstat -tlpn | grep mysql |
Затем войдите в консоль MySQL и закрепите учетную запись MariaDB root, выполнив следующие команды.
1 | mysql -h localhost |
1 2 3 4 5 6 | Welcome to MariaDB Monitor. Commands end with ; or \g. Your MariaDB connection identifier is 2 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to delete the current input statement. |
Чтение информации о таблице для заполнения имен таблиц и столбцов
Вы можете использовать эту функцию для более быстрого запуска с помощью команды -A
1 2 3 4 | use mysql; update user set plugin='' where user='root'; flush permissions; exit |
На следующем этапе вы защитите MariaDB, запустив скрипт mysql_secure_installation, входящий в состав установочных пакетов из репозиториев Debian Stretch. В процессе работы скрипт задаёт ряд вопросов по защите базы данных MariaDB, таких как изменение пароля корня MySQL, удаление анонимных пользователей, отключение удалённых логинов корня и удаление тестовой базы данных. Запустите сценарий с помощью приведенной ниже команды и убедитесь, что вы ответили "да" на все вопросы, чтобы полностью защитить демон MySQL. Используйте приведенный ниже вывод скрипта только в качестве руководства.
1 | mysql_secure_installation |
1 2 | systemctl restart mysql apache2 systemctl status mysql apache2 |
Установка PHP для управления IP-адресами
После выполнения всех системных требований для установки приложения для управления IP-адресами управления, посетите официальную страницу загрузки phpIPAM по адресу https://phpipam.net/download/ и получите последний сжатый zip-архив в свою систему, выполнив следующую команду.
1 | wget https://sourceforge.net/projects/phpipam/files/phpipam-1.3.1.tar |
После завершения загрузки zip-архива распакуйте файл zip-архива phpIPAM в текущий рабочий каталог и просмотрите список распакованных файлы с помощью следующих команд. Кроме того, удалите файл index.html установленный по умолчанию веб-сервером Apache, из пути webroot, а также также удалите созданный ранее файл info.php.
1 2 3 4 | tar xfv phpipam-1.3.1.tar rm /var/www/html/index.html rm /var/www/html/info.php |
Установочные файлы phpIPAM находятся в текущем рабочем каталоге в директории phpipam/. Выполните команду ls чтобы вывести список файлов в этом каталоге. Скопируйте все содержимое распакованного каталога в корень web-сервера, выполнив следующую команду следующую команду. Также убедитесь, что вы скопировали скрытый файл .htaccess в путь webroot.
1 2 3 4 5 | ls -al phpipam cp -rf phpipam/* /var/www/html/ cp -rf phpipam/.htaccess /var/www/html/ |
Далее выполните следующие команды, чтобы предоставить пользователю Apache полные права на запись в корневой путь web. С помощью команды ls выведите список разрешений для установленных файлов приложения, которые находятся в каталоге /var/www/html/.
1 2 | chown -R www-data:www-data /var/www/html/ ls -al /var/www/html/ |
Далее импортируйте схему базы данных phpIPAM MySQL, направив содержимое скрипта SCHEMA.sql, расположенного в каталоге db каталога webroot вашего сервера в базу данных, созданную для установки приложения установки приложения phpIPAM. Обязательно замените пользователя базы данных пользователя и имя базы данных соответственно.
1 | mysql -u ip_user -p myipdatabase < db/SCHEMA.sql |
На следующем этапе создайте новый конфигурационный файл на основе шаблона конфигурации phpIPAM, выполнив следующие команды.
1 2 | cd /var/www/html/ cp config.dist.php config.php |
Далее отредактируйте конфигурационный файл phpIPAM и замените в нем следующие переменные соответствующим образом.
1 | nano /var/www/html/config.php |
Найдите в файле config.php имя и учетные данные базы данных MySQL и обновите их в соответствии с собственными настройками, как показано в следующем фрагменте файла:
1 2 3 4 5 | $db['host'] = 'localhost'; $db['user'] = 'ip_user'; $db['pass'] = 'password1234'; $db['name'] = 'myipdatabase'; $db['port'] = 3306; |
После добавления данных для подключения к базе данных пролистайте файл, найдите следующую строку и сопоставьте ее с URL-адресом базы данных вашего домена, как показано в следующем фрагменте. В этом руководстве мы устанавливаем phpIPAM непосредственно в каталог webroot, поэтому в качестве определения BASE мы будем использовать /. Если вы хотите установить phpIPAM в другой каталог в webroot, используйте имя каталога в качестве определения BASE (например, /mynet/)
1 | define('BASE',"/"); |
Сохраните и закройте файл config.php и зайдите на свой домен, открыв браузер и перейдя на IP-адрес, доменное имя или FQDN вашего сервера по протоколу HTTPS. В браузере будет отображен экран входа в приложение phpIPAM.
https://yourdomain.tld
Войдите в приложение PHP IP Address Management, используя следующие учетные данные по умолчанию:
- Имя пользователя: Admin
- Пароль: ipamadmin
После входа в приложение с использованием стандартных учетных данных необходимо изменить стандартный пароль администратора phpIPAM. Выберите новый надежный пароль для учетной записи администратора и нажмите кнопку Save Password. После обновления пароля нажмите кнопку Dashboard, чтобы начать работу с приложением phpIPAM.
В панели управления нажмите на левое меню Администрирование, перейдите в раздел Настройки phpIPAM и обновите название сайта, домен и URL. Кроме того, установите значение Да для параметра Корректировать ссылки, чтобы URL-адрес переписывался HTTP-сервером Apache.
Кроме того, прокрутите вниз и обновите путь FPing до /usr/bin/fping и нажмите кнопку Save Changes, чтобы применить все сделанные до этого изменения.
Чтобы заставить посетителей получать безопасный доступ к интерфейсу phpIPAM по протоколу HTTPS, который шифрует трафик между сервером и браузерами клиентов, вернитесь в терминал вашего сервера и отредактируйте файл .htaccess, расположенный в корне документа вашего сайта, с помощью следующей команды.
1 | nano /var/www/html/.htaccess |
Ниже в файле вы можете изменить собственные настройки PHP сервера с помощью следующих конфигураций. Измените настройки PHP в соответствии с собственными ресурсами и конфигурацией сервера.
.htaccess:
1 2 3 4 5 | # Изменить настройки PHP php_value session.use_trans_sid 0 php_value register_globals 1 php_value upload_max_filesize 100M php_value post_max_size 100M |
Наконец, добавьте в файл .htaccess перед закрывающим тегом </IfModule> следующие правила для автоматического перенаправления трафика домена на HTTPS.
1 2 3 4 5 6 | # Redirect to HTTPS RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L] Options -Indexes |
Для того чтобы phpIPAM автоматически обнаруживал новые хосты и обновлял их статус после добавления сетевых диапазонов в базу данных, необходимо добавить следующие cron-задачи, которые будут выполняться под правами пользователя Apache runtime:
1 | crontab -u www-data -e |
1 2 | # Каждые 12 часов обнаруживать новые хосты и добавлять их в базу данных IP-адресов 00 00,12 * * * /usr/bin/php /var/www/html/functions/scripts/discoveryCheck.php |
1 2 | # Обновление состояния хостов в базе данных каждые пять часов * */5 * * * * /usr/bin/php /var/www/html/functions/scripts/pingCheck.php |
Заключение
Вот и все! Вы успешно установили и настроили приложение phpIPAM в Debian 11. Однако, поскольку HTTP-сервер Apache использует самоподписанные сертификаты для шифрования трафика между сервером и браузерами посетителей, всегда генерируется и отображается в браузерах посетителей предупреждающее сообщение. Это предупреждение может быть расценено сетевыми администраторами, посещающими веб-приложение, как раздражающее. В этом случае следует приобрести сертификат, выданный доверенным центром сертификации, или получить бесплатную пару сертификатов от Let's Encrypt CA.
Другие пользовательские конфигурации для приложения phpIPAM можно найти на странице документации по адресу: https://phpipam.net/documents/all-documents/.