序章

インフラストラクチャが大きくなると、使用するIPアドレスの数も大幅に増える可能性があるため、すべてを管理するためにメモリだけに依存することはできなくなります。 その時点で、物事を追跡するのに役立つツールが必要になります。

スプレッドシートとプレーンテキストファイルは、すばやく実装できるローテクソリューションですが、IPアドレスの大きなプールを操作する場合や、各アドレスの周囲の複数のデータポイントを追跡しようとする場合も、煩雑になる可能性があります。

phpIPAM は、IPアドレス管理専用のツールであり、自動pingスキャン、稼働中のホストと稼働中のホストを確認できるステータスレポート、電子メール通知を提供することで、ローテクオプションをはるかに超えています。監視しているホストへの変更、およびインフラストラクチャの管理をはるかに容易にするその他の機能。

このガイドでは、Ubuntu 16.04で実行されているLinux、Apache、MySQL、およびPHP(LAMP)スタックにphpIPAMをインストールして構成します。

前提条件

始める前に、次のものが必要になります。

ステップ1—Apacheの構成

デフォルトでは、phpIPAMはURL構造のクエリ文字列に依存して、アプリケーションのある部分から別の部分にデータを渡します。 クエリ文字列は?でURLに追加され、&で区切られた1つ以上のフィールドと値のペアが含まれます。

インストールに絶対に必要というわけではありませんが、phpIPAMはApacheのmod_rewriteモジュールを介してURL書き換えをサポートします。このモジュールはクエリ文字列をより読みやすく人間にわかりやすいURLに変換します。

mod_rewriteをまだ有効にしていない場合は、すべてのHTTPリクエストをHTTPSにリダイレクトしてTLS / SSL証明書の前提条件でApacheインストールを保護し、Apacheのa2enmodユーティリティを今すぐ使用してくださいmod_rewriteを有効にして、手順2でURL書き換えをオンにできるようにします。

  1. sudo a2enmod rewrite

このコマンドは、/etc/apache2/mods-enabled/rewrite/内の/etc/apache2/mods-available/rewrite.loadへのシンボリックリンクを作成します。これにより、Apacheの次回の起動時にモジュールが有効になります。

mod_rewriteがすでに有効になっている場合、出力は次のようになります。

Output of sudo a2enmod rewrite
Module rewrite already enabled

それ以外の場合、出力には、シンボリックリンクが作成され、変更をアクティブ化するためにApacheを再起動する必要があることが示されます。

Output of sudo a2enmod rewrite
Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart

次回Webサーバーを起動したときにApacheがmod_rewriteを有効にするようになりましたが、phpIPAMでmod_rewriteを使用できるようにするには、phpIPAM仮想ホスト構成を変更する必要があります。 したがって、まだApacheを再起動しないでください。

代わりに、前提条件でphpIPAM用に作成したApache構成ファイルを開きます。

  1. sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

次の行をDocumentRootセクションの下の構成ファイルに貼り付けます。

phpipam.conf
...
    <Directory /var/www/example.com/public_html
            Options FollowSymLinks
            AllowOverride all
            Require all granted
    </Directory>
...
  • Directoryは、ディレクティブが適用されるサーバー上の場所です。 これは、phpIPAMをインストールする予定のディレクトリである必要があります。 前提条件のApache仮想ホストガイドに従った場合、これは/var/www/example.com/public_htmlです。
  • Options FollowSymLinksは、このディレクトリ内のシンボリックリンクをたどるようにApacheに指示します。 これがデフォルト設定です。
  • AllowOverride allは、このディレクトリ内の.htaccessファイル内のディレクティブが、対応するグローバルディレクティブをオーバーライドする必要があることを意味します。
  • Require all grantedは、すべてのホストからの着信要求を許可するようにApacheに指示します。

ファイルを保存して閉じ、続行します。

ここで、Apacheを再起動する前に、構成の変更をテストします。

  1. sudo apache2ctl configtest

出力にSyntax OKと表示されている場合は、次に進む準備ができています。 それ以外の場合は、前の手順を確認し、画面上のメッセージに従って詳細を確認してください。

最後に、Apacheを再起動してmod_rewriteを有効にし、新しい構成をアクティブにします。

  1. sudo systemctl restart apache2

phpIPAMをまだインストールしていないため、https://example.comには何も表示されません。 それでは、今すぐphpIPAMをダウンロードしてインストールしましょう。

ステップ2—phpIPAMをインストールする

公式インストール手順は、phpIPAMをインストールするための2つの方法を提案しています。プロジェクトのSourceForgeリポジトリからtarballをダウンロードするか、GitHubリポジトリからプロジェクトを複製します。 将来の更新を簡単にするために、後者の方法を使用しましょう。

デフォルトでは、Gitは既存のディレクトリが空の場合にのみそのディレクトリにクローンを作成します。 したがって、lsコマンドを使用して、手順1でApache用に構成したディレクトリの内容を表示します。

  1. ls /var/www/example.com/public_html

ディレクトリが空でない場合は、基本的なLinuxナビゲーションおよびファイル管理コマンドを使用して、今すぐクリアしてください。 mvはコンテンツを別の場所に移動し、rmはそれらを完全に削除します。

次に、Gitプロジェクトをディレクトリに複製します。

git clone https://github.com/phpipam/phpipam.git /var/www/example.com/public_html

出力は、クローンを作成している場所を確認し、Gitがコピーする予定のオブジェクトの数や、実際にコピーした数など、プロセスのリアルタイムレポートを提供します。

Output of git clone
Cloning into /var/www/example.com/public_html ... remote: Counting objects: 14234, done. remote: Compressing objects: 100% (50/50), done. remote: Total 14234 (delta 27), reused 40 (delta 17), pack-reused 14161 Receiving objects: 100% (14234/14234), 11.38 MiB | 21.30 MiB/s, done. Resolving deltas: 100% (10066/10066), done. Checking connectivity... done.

これで、サーバー上に完全なphpIPAMアプリケーションができましたが、phpIPAMを実行するために必要ないくつかのPHPモジュールがまだありません。 apt-getでインストールしてください。

これらの追加パッケージは、任意の長さの整数を処理するための GNU Multiple Precisionモジュール、256文字で表現できない言語を処理するためのマルチバイト文字列モジュール、[ X237X]再利用可能なPHPコンポーネント用のPEARフレームワーク、および画像処理用のGDモジュール

  1. sudo apt-get install php7.0-gmp php7.0-mbstring php-pear php7.0-gd

Apacheを再起動して、新しいモジュールを使用できるようにします。

  1. sudo systemctl restart apache2

サーバー上のアプリケーションファイルと追加モジュールの両方を使用して、phpIPAMを構成する準備が整いました。

ステップ3—phpIPAMの構成

phpIPAMは、config.phpというファイルで主な構成設定を探します。 このファイルはデフォルトでは存在しませんが、アプリケーションには、動作するためのサンプル構成ファイルが付属しています。

インストールディレクトリに移動し、問題が発生した場合に後で参照できるように、設定例ファイルのコピーを作成します。

cd /var/www/example.com/public_html
cp config.dist.php config.php

新しいファイルを開いて編集します。

nano config.php

* database connection detailsというラベルの付いたセクションを探します。 これらの設定は、すべてのデータを保持するMySQLデータベースに接続する方法をphpIPAMに指示します。

MySQLをphpIPAMと同じマシンにインストールしたので、$db['host']の値をlocalhostに設定したままにすることができます。 また、MySQLはデフォルトでポート3306をリッスンするため、$db['port']の値を変更する必要はありません。

phpIPAM用のMySQLデータベースのセットアップはまだありませんが、ステップ4で、phpIPAMのWebベースのインストールユーティリティは、このファイルに入力した値を使用してデータベースとデータベースユーザーを作成します。 したがって、$db['user']値をphpIPAMがMySQLに接続するユーザーの名前に設定し、$db['pass']値をphpIPAMがMySQLに接続するときに使用するパスワードに設定し、 $db['name']をMySQLデータベースに付ける名前に変更します。

phpIPAMのconfig.php
<?php

/**
 * database connection details
 ******************************/
$db['host'] = 'localhost';
$db['user'] = 'database_user';
$db['pass'] = 'database_password';
$db['name'] = 'database_name';
$db['port'] = 3306;
...

警告:前提条件にMySQLをインストールするときにmysql_secure_installationスクリプトを実行した場合は、現在のポリシー要件を満たすパスワードをここに作成してください。 そうしないと、ステップ4でデータベースを作成するときにエラーが発生します。

以前の設定に加えて、このファイルで利用できる他の多くのオプションがあります。 たとえば、SSL証明書を使用してデータベースへの安全な接続を構成したり、さまざまなデータベースイベントの電子メール通知をアクティブにしたり、デバッグモードを有効にしてより詳細なログを生成したりできます。 ただし、基本的なインストールの場合、これらの設定の残りの部分をデフォルト値に設定したままにすることができます。

編集が終わったら、ファイルを保存して閉じます。

phpIPAMのメイン構成ファイルを作成したので、次はWebインターフェイスに接続してインストールを完了します。

ステップ4—データベースとデータベースユーザーの作成

インストールプロセスの最後のステップは、phpIPAM用のMySQLデータベースとユーザーを作成し、phpIPAMのWebインターフェイス用に管理者ユーザーアカウントを設定することです。 これはすべて、phpIPAMのWebベースのインストールウィザードを介して実行できます。

ブラウザをhttps://example.com/installに移動します。 phpIPAMインストールホームページが表示され、ウィザードが表示され、実行するインストールのタイプを選択するように求められます。 この画面を表示できない場合は、ファイアウォールがポート80でのアクセスをブロックしていないことを確認し、前の手順に戻って問題を解決してください。

この画面には、新しいphpipamインストール phpipamインストールの移行、および作業インストールの3つのオプションがあり、それぞれに目的の簡単な説明があります。 新しいphpIPAMインストールを設定するときに、新しいphpipamインストールとマークされたボタンを押します。

次の画面で、ウィザードは残りのインストールプロセスを説明し、公式のインストールドキュメントを参照して詳細を示し、実行するデータベースインストールのタイプを決定するように求めます。

ここでも、3つの選択肢があります。

  • データベースの自動インストール:ウィザードは、手順3でconfig.phpに入力した情報を使用して、MySQLデータベースとユーザーを作成します。
  • MySQLインポート手順:MySQL独自の mysqlimportユーティリティを使用して、提供したプレーンテキストファイルからデータベースを作成します。
  • データベースの手動インストール:ウィザードは、新しいphpIPAMデータベースを手動で作成するために必要なデフォルトのSQLコマンドを提供します。

わかりやすくするために、データベースの自動インストールボタンをクリックして、完全に自動化されたオプションを選択してください。

ウィザードは、MySQLに接続するために必要な情報を提供するように要求します。 これには、接続するユーザーのログインクレデンシャル、データベースの場所、およびデータベースの名前が含まれます。

新しいデータベースとユーザーを作成するにはウィザードが必要なので、そのための十分な権限を持つユーザーのログイン資格情報を入力する必要があります。 MySQL rootユーザーは良い選択です。

デフォルトでは、データベースの場所は localhost に設定され、その名前はphpipamに設定されています。 これらのいずれかを変更する場合は、手順3で作成したconfig.phpファイルを編集してから、インストールウィザードを再起動する必要があります。

詳細オプションの表示ボタンをクリックすると、追加のインストールオプションにアクセスできます。 ここでは、さらに3つの選択肢があります。

  • 既存のデータベースの削除インストール手順を実行する前に、ウィザードはMySQLデータベース名フィールドの値と同じ名前のデータベースを削除しようとします。 これはデフォルトでオフになっています。
  • データベースの作成ウィザードは、MySQLデータベース名フィールドの値と同じ名前のデータベースを作成しようとします。 これはデフォルトでオンになっています。
  • パーミッションの作成ウィザードは新しいデータベースにパーミッションを設定しようとし、config.phpで定義されたMySQLユーザーのみにアクセスを制限します。 これはデフォルトでオンになっています。

ウィザードを接続するMySQLユーザーのユーザー名とパスワードを入力し、詳細オプションをデフォルト値に設定したままにして、phpipamデータベースのインストールボタンを押します。

ウィザードがデータベースを正常にインストールしたことを示す確認メッセージが表示されます。 そうでない場合は、ウィザードのエラーメッセージを確認して追加のヘルプを参照してください。

続行をクリックしてインストールを続行します。

この画面で、ウィザードにより、Webインターフェイスの管理者ユーザーパスワード、各phpIPAM Webインターフェイス画面の上部に表示されるタイトル、およびphpIPAMインストールのURLを設定するように求められます。

使用する管理者パスワード、phpIPAMインターフェースのわかりやすいタイトル、phpIPAMインストールを指す完全修飾ドメイン名を入力し、設定の保存ボタンを押します。

設定が正常に保存されたことを示す確認メッセージが表示されます。 そうでない場合は、ウィザードのエラーメッセージを使用して問題を診断してください。

ログインボタンをクリックしてphpIPAMインストールのホームページに移動し、管理者パスワードフィールドに入力した管理者ユーザー名とパスワードでサインインします。

これでphpIPAMのインストールと構成が完了したので、監視するネットワークをより簡単に管理するための情報の追加を開始できます。

結論

この記事では、オープンソースのIPアドレス管理WebアプリケーションであるphpIPAMをインストールして構成しました。 独自のインフラストラクチャと他のネットワークの両方でIPアドレスの使用状況を監視できるようになりました。

さらに、phpIPAMを使用してVLANを追跡し、サブネットに対してマッピングしたり、デバイスの種類や場所などの情報を含むネットワークデバイスのインベントリを保持したり、ネットワークの変更を通知するように電子メール通知を構成したりできます。

phpIPAM taksをプログラムで自動化し、自分で作成しているアプリケーションと統合する方法については、phipIPAMの組み込みAPIに関する公式ドキュメントを参照してください。 APIをより速く起動して実行するには、公式の入門チュートリアルをご覧ください。

最後に、管理している公共インフラストラクチャまたは独自のローカルインフラストラクチャに対して、自動スキャン設定を必ず調査してください。 sysadminまたはdevopsエンジニアとして最大のメリットを提供できるのは、ホストスキャンの自動化です。