在企业运维管理中,管理IP地址通常是一项挑战,有的采用Excel管理、有的用在线共享文档管理,这两个管理方式都在解决2个问题:1)记录IP地址信息;2)多人协作;今天介绍如何安装和使用开源的IP地址管理工具—“phpIPAM”,并在文章介绍采用“Docker”部署的过程,与之前的源码部署相比,更加简单和快速。
phpIPAM概述
phpIPAM是一个开源 Web IP 地址管理应用程序 (IPAM)。其目标是提供轻便、现代且有用的 IP 地址管理。它是基于 php 的应用程序,具有 MySQL 数据库后端,使用 jQuery 库、ajax 和 HTML5/CSS3 功能,其功能清单如下:
- IPv4/IPv6 IP 地址管理;
- 部分/子网管理,VLAN管理、VRF管理;
- 自动显示子网的可用空间;
- 可视化子网展示;
- 自动子网扫描/IP状态检查;
- PowerDNS 集成;
- 网络地址转换支持;
- 机架管理;
- 域认证(AD、LDAP、Radius);
- 设备/设备类型管理;
- IP请求模块;
- IPv4/IPv6计算器;
- 自定义字段支持;
- REST Api;
服务器规划
服务器名称 | IP地址 | 硬件配置 | 用途 | 备注 |
---|---|---|---|---|
mgmt-ipam | 192.168.10.100 | 2C/4G/80G | PHPIPAM | 主服务器 |
环境及软件版本信息
Docker镜像 | 版本 | 备注 |
---|---|---|
phpipam-www | latest | 最新的生产版本 |
phpipam-cron | latest | 用于执行网络发现 |
mariadb | latest | 数据库 |
Rocky Linux | 8.8 | 操作系统环境 |
安装基础环境
为安装docker compose环境,需要先删除podman和runc两个包。
sudo dnf remove -y podman runc
添加Docker-ce的repo。
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装并启动docker-ce和docker-compose。
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl --now enable docker
如果以非root用户运行,需要添加用户到docker组,以实现非用户用户下直接运行“docker”命令(Without sudo)。
注意:这里的“ops”是非用户的用户。
sudo usermod -aG docker ops
使用docker compose运行phpIPAM
完成Docker环境准备后,下面准备phpIPAM的Docker-Compose配置文件。此配置文件来自官方的示例,请根据需要修改。
注意1:一定要修改数据库的密码(my_secret_phpipam_pass)。
注意2:也可以修改配置,使用外部的数据库,即数据库采用虚拟机部署。
例如:我们在/usr/local/phpIPAM文件夹下创建"docker-compose.yml"文件,内容如下:
# WARNING: Replace the example passwords with secure secrets.
# WARNING: 'my_secret_phpipam_pass' and 'my_secret_mysql_root_pass'
version: '3'
services:
phpipam-web:
image: phpipam/phpipam-www:latest
ports:
- "80:80"
environment:
- TZ=Asia/Shanghai
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=my_secret_phpipam_pass
- IPAM_DATABASE_WEBHOST=%
restart: unless-stopped
volumes:
- phpipam-logo:/phpipam/css/images/logo
- phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-mariadb
phpipam-cron:
image: phpipam/phpipam-cron:latest
environment:
- TZ=Asia/Shanghai
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=my_secret_phpipam_pass
- SCAN_INTERVAL=1h
restart: unless-stopped
volumes:
- phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-mariadb
phpipam-mariadb:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass
restart: unless-stopped
volumes:
- phpipam-db-data:/var/lib/mysql
volumes:
phpipam-db-data:
phpipam-logo:
phpipam-ca:
使用“docker-compose”命令启用phpIPAM。
cd /usr/local/phpIPAM
docker compose up -d
最后,再添加防火墙的80/443端口,允许外部访问。
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
使用Web初始化PHPIPAM系统
浏览器访问http://
选择数据库初始化方式,此处选择“Automatic database installation”,自动化配置数据库。
输入数据库的root账户和密码(my_secret_phpipam_pass),点击“Install Phpipam database”。
配置默认本地管理员密码,用户名为“Admin”,配置网站名称和站点访问URL(例如:使用域名访问)。
部署完成后,使用Admin用户登录系统。
点击右上角的“用户”,可以配置页面语言为简体中文。
PHPIPAM支持多种认证方式,AD、LDAP、SAML2(单点登录),根据实际环境选择,这次以集成AD认证为示例。
输入AD的连接信息后,点击“添加”。
进入左侧的“服务器管理”->“用户”,添加AD认证用户到PHPIPAM中,点击右侧的“搜索”按钮,搜索AD中的用户,并添加,选择用户的角色“管理员”或“普通用户”,最后,点击“添加按钮”。
最终,我们成功使用AD用户登录到PHPIPAM系统。
对phpIPAM数据库进行备份
修改phpipam目录权限,以允许写入备份文件(使用root用户可以跳过)。
chown -R ops /usr/local/phpipam
执行phpIPAM数据库备份。
docker compose exec phpipam-mariadb sh -c 'mariadb-dump -uroot -p${MYSQL_ROOT_PASSWORD} --databases phpipam' > phpipamdb-dump-$(date +%F_%H-%M-%S).sql
对phpIPAM数据库进行恢复
建议先停止phpipam-web容器,再进行恢复。
docker compse stop phpipam-web
执行phpIPAM数据库恢复。
docker compose exec -T phpipam-mariadb sh -c 'mariadb -uroot -pmy_secret_phpipam_pass' < phpipamdb-dump-2023-09-16_17-17-51.sql
启动phpipam-web容器。
docker compse up -d
完成
至此,我们完成了通过Docker运行phpIPAM的平台,具体使用方法,请参考官网指导文档。