2016年2月8日月曜日

IPアドレス管理サーバーの構築 【3】 phpIPAM環境構築

event_note

必要なツール類をインストール

ツール類をインストールする前にパッケージ情報を最新にしておく。

    root@debian-phpipam:/tmp# apt-get update

標準エディタのviだとカーソルキーが動作しない(意図しない文字が勝手に入力されてしまう)のでVimエディタを導入する。

    root@debian-phpipam:/tmp# apt-get install vim

NTPクライアントをインストールする

    root@debian-phpipam:/tmp# apt-get install ntp

時刻合わせ(NTP)の設定を行う

デフォルトではpool.ntp.orgのntpサーバーを参照しているが変更する場合は/etc/ntp.confファイルを編集する
pool.ntp.orgについてlaunch

サービスの起動・停止などの管理を行うツール(sysv-rc-conf)をインストールする

    root@debian-phpipam:/tmp# apt-get install sysv-rc-conf
    root@debian-phpipam:/tmp# sysv-rc-conf ← 試しにsysv-rc-confを起動してみる

phpIPAMにて必要となる為、fpingをインストールする

    root@debian-phpipam:/tmp# apt-get install fping

apache2をインストールし設定ファイルを編集する

apache2をインストール

    root@debian-phpipam:/tmp# apt-get install apache2

apache2.confを編集する

    root@debian-phpipam:/tmp# cd /etc/apache2
    root@debian-phpipam:/etc/apache2# vim apache2.conf 

(変更前)

(変更後)

mod_rewrite を有効化しapache2を再起動

root@debian-phpipam:/etc/apache2# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service apache2 restart
root@debian-phpipam:/etc/apache2# service apache2 restart

MySQLをインストールし設定ファイルを編集する

MySQLをインストール

    root@debian-phpipam:/etc/apache2# apt-get install mysql-server

インストール中にMySQLのルートパスワードを設定する

MySQLの設定ファイルを編集する

/etc/mysql/my.cnf

    root@debian-phpipam:/etc/apache2# cd /etc/mysql
    root@debian-phpipam:/etc/mysql# vim my.cnf

[mysqld]セクションに追記

    [mysqld]
    character-set-server=utf8           #文字コードにUTF-8を指定
    skip-character-set-client-handshake #クライアントの文字コードを無視する設定
    default-storage-engine=INNODB       #ストレージエンジンにINNODBを指定

[mysqldump]セクションに追記

    [mysqldump]
    default-character-set=utf8 #文字コードにUTF-8を指定

[mysql]セクションに追記

    [mysql]
    default-character-set=utf8 #文字コードにUTF-8を指定

別端末からMySQLに接続する必要がある場合には[mysqld]セクションのbind-addressを編集する必要がある

    [mysqld]
    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    bind-address = 127.0.0.1 #デフォルトでは自身のサーバーからのみアクセス可能。

MySQLを再起動する

    root@debian-phpipam:/etc/mysql# service mysql restart

php5をインストールし設定ファイルを編集する

php5をインストール

    root@debian-phpipam:/etc/mysql# apt-get install php5 libapache2-mod-php5 php-pear php5-gmp php5-mysql

/etc/php5/apache2/php.iniを編集する

root@debian-phpipam:/etc/mysql# cd /etc/php5/apache2
root@debian-phpipam:/etc/php5/apache2# vim php.ini

(~中略~)

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[CLI Server]
; Whether the CLI web server uses ANSI color coding in its terminal output.
cli_server.color = On

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone = 
date.timezone = Asia/Tokyo ←タイムゾーンの設定を追加する

phpIPAMをインストールする

phpIPAMをダウンロードする
今回はgithubよりphpIPAM1.2をダウンロード(2016/2/11時点の最新Ver)
https://github.com/phpipam/launch

    root@debian-phpipam:/etc/php5/apache2# cd /tmp
    root@debian-phpipam:/tmp# wget --no-check-certificate https://github.com/phpipam/phpipam/archive/1.2.tar.gz
    root@debian-phpipam:/tmp# ls
    1.2.tar.gz
    root@debian-phpipam:/tmp# tar xvf 1.2.tar.gz

phpIPAMのソースファイルをapacheの仮想ディレクトリへコピーする
今回はapache2のデフォルトディレクトリである/var/www/html/以下にコピー
事前にapache2のデフォルトindex.htmlファイルを削除しておく

    root@debian-phpipam:/tmp# rm /var/www/html/index.html
    root@debian-phpipam:/tmp# ls
    1.2.tar.gz  phpipam-1.2
    root@debian-phpipam:/tmp# cp -rf ./phpipam-1.2/* /var/www/html/

/var/www/html/以下のファイルのオーナーをwww-dataに変更する。

root@debian-phpipam:/var/www/html# chown www-data:www-data -R *
root@debian-phpipam:/var/www/html# ls -l
合計 64
-rwxr-xr-x  1 www-data www-data   110  2月 11 15:58 INSTALL.txt
-rwxr-xr-x  1 www-data www-data  2455  2月 11 15:58 README
-rwxr-xr-x  1 www-data www-data   105  2月 11 15:58 UPDATE
drwxr-xr-x  4 www-data www-data  4096  2月 11 15:58 api
drwxr-xr-x 14 www-data www-data  4096  2月 11 15:58 app
-rwxr-xr-x  1 www-data www-data  2761  2月 11 15:58 config.php
drwxr-xr-x  3 www-data www-data  4096  2月 11 15:58 css
drwxr-xr-x  3 www-data www-data  4096  2月 11 15:58 db
drwxr-xr-x 11 www-data www-data  4096  2月 11 15:58 functions
-rwxr-xr-x  1 www-data www-data 10057  2月 11 15:58 index.php
drwxr-xr-x  2 www-data www-data  4096  2月 11 15:58 install
drwxr-xr-x  3 www-data www-data  4096  2月 11 15:58 js
drwxr-xr-x  2 www-data www-data  4096  2月 11 15:58 misc
drwxr-xr-x  2 www-data www-data  4096  2月 11 15:58 upgrade

apache2を再起動する

    root@debian-phpipam:/tmp# service apache2 restart

ブラウザにてhttp://(phpIPAMサーバーのIP)/index.phpへアクセスすると。。
設定ファイルが無いと怒られる。

/var/www/html/config.dist.php ファイルをconfig.phpにリネームする。

root@debian-phpipam:/tmp# cd /var/www/html
root@debian-phpipam:/var/www/html# ls -l
合計 64
-rwxr-xr-x  1 root root   110  2月 11 15:58 INSTALL.txt
-rwxr-xr-x  1 root root  2455  2月 11 15:58 README
-rwxr-xr-x  1 root root   105  2月 11 15:58 UPDATE
drwxr-xr-x  4 root root  4096  2月 11 15:58 api
drwxr-xr-x 14 root root  4096  2月 11 15:58 app
-rwxr-xr-x  1 root root  2761  2月 11 15:58 config.dist.php
drwxr-xr-x  3 root root  4096  2月 11 15:58 css
drwxr-xr-x  3 root root  4096  2月 11 15:58 db
drwxr-xr-x 11 root root  4096  2月 11 15:58 functions
-rwxr-xr-x  1 root root 10057  2月 11 15:58 index.php
drwxr-xr-x  2 root root  4096  2月 11 15:58 install
drwxr-xr-x  3 root root  4096  2月 11 15:58 js
drwxr-xr-x  2 root root  4096  2月 11 15:58 misc
drwxr-xr-x  2 root root  4096  2月 11 15:58 upgrade
root@debian-phpipam:/var/www/html# mv config.dist.php config.php
root@debian-phpipam:/var/www/html#

改めてブラウザにてhttp://(phpIPAMサーバーのIP)/index.phpへアクセスする

この画面が出ればインストール完了
後はブラウザの指示に従いphpIPAMの設定を行う。
通常は[1 Automatic database installation]で問題ない。

MySQLへアクセスする為にusername及びpasswordを入力する。

[Install phpipam database]をクリックする。
[Database installed successfully!]と出れば完了。
続いて[Continue]をクリック。

[phpIPAM]のAdminのパスワードを設定する。
パスワードはあまりに短いと怒られるので8文字以上を設定する。

[Save Settings]をクリックする。
続いて[Proceed to login]をクリックする。

phpIPAMのログイン画面が表示される。
先ほど設定したadmin及びパスワードにてログイン出来るかを確認する。

phpIPAMのダッシュボード画面
インストール直後はサンプルのデータが入力されているので不要であれば削除する。

phpIPAMで出来ること

ネットワークセグメント毎にIPアドレスの管理を行うことが出来る。
また設定したセグメント配下のサーバー及びネットワーク機器に対してのPingによる死活監視、及び新たにネットワークに接続された機器を発見することも出来る。(ネットワークスキャン)

赤枠のオプションを[Yes]にするとチェックを行う。

Pingによる死活監視やネットワークのスキャンに関してはLinuxのcron機能により実現しているので、これらの機能を利用する場合はcrontabファイルにスクリプトを登録する必要がある。

余談:
上記オプションを[Yes]に設定しても、待てど暮らせどチェックを行っている様子がないのであらためて公式サイトを調べると、、、どうやら監視スクリプトをcronに登録する必要があるらしいということがわかった。
(↑ハマった部分)

詳しくは公式サイトを参照launch

監視スクリプトは下記のディレクトリにある

root@debian-phpipam:/var/www/html# cd ./functions/scripts
root@debian-phpipam:/var/www/html/functions/scripts# 
root@debian-phpipam:/var/www/html/functions/scripts# ls -l
合計 40
-rw-r--r-- 1 www-data www-data 10967  2月 11 15:58 discoveryCheck.php #スキャン
-rw-r--r-- 1 www-data www-data  1810  2月 11 15:58 find_untranslated_files.php
-rwxr-xr-x 1 www-data www-data 15039  2月 11 15:58 pingCheck.php #ping監視
-rw-r--r-- 1 www-data www-data  3653  2月 11 15:58 reset-admin-password.php
-rw-r--r-- 1 www-data www-data  3643  2月 11 15:58 resolveIPaddresses.php
root@debian-phpipam:/var/www/html/functions/scripts#

crontabにスクリプトを登録する。
下記の例ではpingCheck(ping監視)は15分毎に、discoveryCheck(スキャン)は毎時5分に実行する。

root@debian-phpipam:/var/www/html/functions/scripts# cd /etc
root@debian-phpipam:/etc# vim crontab

(~中略~)

*/15 * * * * root /usr/bin/php5 /var/www/html/functions/scripts/pingCheck.php
5 * * * * root /usr/bin/php5 /var/www/html/functions/scripts/discoveryCheck.php

root@debian-phpipam:/etc# service cron restart #cronを再起動する