通常,网络或系统管理员有责任来管理其所管理的网络下的一个或多个子网。例如,当一个网段分配了/24子网,那么该子网就有254个IP地址可以用于不同用途。要跟踪某个IP被分配到了哪个主机,就需要通过某种方式记录下来。最简单的方法,就是使用一个电子表格,如Excel来记录IP地址的分配信息。此方法对于只有一个管理员,并且网络很小的情况下比较奏效。然而,对于多个大型网络而言,依赖于电子表格并不方便,而且十分容易出错。更糟糕的是,如果有多个管理员参与管理,更新电子表格就十分麻烦了,因为每个管理员可能生成各种不同版本的文档记录。
一种系统地管理IP地址分配的方式是使用网络化的IP地址管理工具。不仅仅是因为网络化管理工具能在任何地方访问并管理,而且其后端数据库也能保证所有更新能正确同步并实时生效。在试用了一堆IP地址管理应用后,发现phpIPAM(IP Address Manager IP地址管理工具)还是非常简单易用的。
phpIPAM是一个开源、高效的IP地址管理应用软件,有着以下一些特性。
- 同时支持IPv4和IPv6(和其它工具不同,它对IPv6支持得很好)
- 内建的IPv4和IPv6计算器
- 支持无类域间路由(CIDR)标记
- 支持MySQL数据库
- 子网嵌套
- 基于用户/组权限
- 可视化报表工具
- 使用.xls文件导入/导出
- 支持设备、VRF和VLAN
- 强大的搜索引擎
- 电子邮件标记
- 支持基于AD/LDAP的验证
可访问http://demo.phpipam.net查看phpIPAM演示网站。
环境要求
在开始安装phpipam之前,请确保满足以下要求:
- Apache2 webserver with php support or Nginx with php-fpm
- Mysql server (5.1+)
PHP:
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
- php PEAR support
通常大多数php模块都内置到默认的php安装中。 如果缺少某些必需的模块,phpipam安装失败发出警告并通知您。
您可以通过在命令行中发出php -m
来检查启用了哪些php模块。
因为习惯使用军哥的LNMP(https://lnmp.org)作为网站环境,但是在我LNMP基础上,把gmp和PEAR搞定后,还是会有很多告警信息,折腾了几次没好使,懒得折腾了,就都是用apt-get或yum方式安装了,下面教程开始:
一、安装基础环境
1. Debian/Ubuntu
1)安装基础环境
sudo apt update
sudo apt upgrade -y
sudo apt-get install fping php7.0-snmp apache2 mariadb-server php php-pear php7.0-gmp php7.0-mysql php7.0-mbstring php7.0-gd php7.0-mcrypt php7.0-curl git -y
2)初始化MySQL
默认选项没问题,我们只需要设置root密码,因此请使用以下命令并按照说明强化MySQL服务器:
sudo mysql_secure_installation
根据向导设置MySQL的root帐号口令。
3)创建数据库
使用命令mysql -u root -p
命令成功登录MySQL后,在MySQL命令符下创建phpIPAM数据库:
CREATE DATABASE phpipam; #创建名为phpipam的数据库
CREATE USER 'phpipam'@'localhost' IDENTIFIED BY 'phpipam_PASSWORD'; #创建具备本地localhost登录权限的用户phpipam,并设置密码为phpipam_PASSWORD
GRANT ALL PRIVILEGES ON phpipam.* TO 'phpipam'@'localhost' with grant option; #授予具备localhost登录权限的phpipam用户具备数据库phpipam完全控制权限
FLUSH PRIVILEGES; #刷新数据库权限
4)修改Apache2配置
默认apache2配置文件路径:/etc/apache2/sites-available/000-default.conf
创建phpipam路径:
mkdir -p /var/www/phpipam
这里给一个参考配置:
<VirtualHost *:80>
DocumentRoot /var/www/phpipam
<Directory "/var/www/phpipam">
Options FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
开启 apache2 rewrite并重启服务:
sudo a2enmod rewrite
sudo service apache2 restart
2. CentOS/RHEL
1)关闭selinux
setenforce 0
2) 安装基础环境
sudo yum install epel-release
sudo yum install php-mcrypt
sudo yum install httpd mariadb-server php php-cli php-gd php-common php-ldap php-pdo php-pear php-snmp php-xml php-mysql php-mbstring php-gmp git
3)配置PHP时区
修改PHP配置文件/etc/php.ini
,将date.timezone
设置为上海时区:
date.timezone = Asia/Shanghai
4)配置httpd
默认配置文件路径:/etc/httpd/conf/httpd.conf
创建phpipam路径:
mkdir -p /var/www/phpipam
参考配置:
<VirtualHost *:80>
DocumentRoot /var/www/phpipam
<Directory "/var/www/phpipam">
Options FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
开启httpd服务并设置开机启动
sudo systemctl start httpd
sudo systemctl enable httpd
5)配置防火墙
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload
6)配置MySQL
启动服务并设置开机启动:
sudo systemctl start mariadb
sudo systemctl enable mariadb
默认选项没问题,我们只需要设置root密码,因此请使用以下命令并按照说明强化MariaDB服务器:
sudo mysql_secure_installation
具体设置可以参考上面的Debian方法。
二、安装phpIPAM
1)下载 phpIPAM
cd /var/www/phpipam
sudo git clone --recursive https://github.com/phpipam/phpipam.git .
sudo git checkout -b 1.3 origin/1.3
要使用开发版,请省略“git checkout 1.3”命令,这将使用当前的MASTER版本。
2)设置目录及文件权限
Debian/Ubuntu:
sudo chown www-data:www-data -R /var/www/phpipam/
cd /var/www/phpipam/
sudo find . -type f -exec chmod 0644 {} \;
sudo find . -type d -exec chmod 0755 {} \;
CentOS/RHEL:
sudo chown apache:apache -R /var/www/phpipam/
sudo chcon -t httpd_sys_content_t /var/www/phpipam/ –R
cd /var/www/phpipam/
find . -type f -exec chmod 0644 {} \;
find . -type d -exec chmod 0755 {} \;
sudo chcon -t httpd_sys_rw_content_t app/admin/import-export/upload/ -R
sudo chcon -t httpd_sys_rw_content_t app/subnets/import-subnet/upload/ -R
sudo chcon -t httpd_sys_rw_content_t css/1.3.1/images/logo/ -R
3)配置数据库连接
通过下面命令编辑数据库用户名、密码等信息,不要使用root帐号及口令
。
cd /var/www/phpipam/
sudo cp -v config.dist.php config.php
sudo vim config.php
同时默认BASE
设置应留在网页的/目录,因为我们将从默认目录http://ip_address/
提供phpipam。如果有子目录,您需要调整BASE的设置。
4)安装phpIPAM
通过http://server_ip
或http://domain
来安装
5)设置ping检测及自动发现任务
通过命令crontab -e
添加定时任务:
*/5 * * * * /usr/bin/php /var/www/phpipam/functions/scripts/pingCheck.php >> /dev/null 2>&1
*/5 * * * * /usr/bin/php /var/www/phpipam/functions/scripts/discoveryCheck.php >> /dev/null 2>&1
三、其他一些记录
1. 使用fping进行子网主机检测时报错
在使用fping进行子网主机检测的时候会提示system call failure
,需要通过下面的方法解决:
which fping
sudo setcap 'CAP_NET_RAW+ep' /path/to/your/fping
2. 数据库备份
通过计划任务备份数据库:
# Backup IP address table, remove backups older than 10 days
@daily /usr/bin/mysqldump -u ipv6 -pipv6admin phpipam > /var/www/phpipam/db/bkp/phpipam_bkp_$(date +"\%y\%m\%d").db
@daily /usr/bin/find /var/www/phpipam/db/bkp/ -ctime +10 -exec rm {} \;