「IP.xlsx」スプレッドシートの悪夢
中規模のデータセンターに配属された最初の週のことを今でも覚えています。IP割り当てリストを求めたところ、ベテラン管理者からNetwork_Final_v2_USE_THIS_ONE.xlsxという名前のエクセルファイルを渡されました。10分もしないうちに、重複したIP割り当てが3つ、そして「ゾンビ」アドレス(数ヶ月間パケットが流れていないのにアクティブとしてマークされているIP)を14個も見つけました。これが「スプレッドシートの罠」です。
エクセルはネットワーク管理のために作られたものではありません。静的で、ミスが起こりやすく、インフラが成長するにつれてその重みに耐えきれなくなります。もし2つ以上のサブネットを扱っているなら、すでにエクセルの限界を超えています。IP、VLAN、サブネットのデータをphpIPAMのような「信頼できる唯一の情報源(Single Source of Truth)」に集約することは、大きな飛躍となります。これにより、場当たり的なトラブルシューティングから、プロアクティブなアーキテクチャ設計へと移行できるのです。
コアコンセプト:なぜ phpIPAM なのか?
なぜ単なるデータベースではなくphpIPAMを選ぶのでしょうか?それは単なるリストではなく、ネットワークの論理構造を理解するツールだからです。フラットなスプレッドシートとは異なり、phpIPAMはハードウェアとアドレスの実際の関係をマッピングします。
- 論理的な階層構造: 「データセンター」「支社」「パブリッククラウド」などのセクション内にサブネットをネストできます。
- VLANトラッキング: 802.1Qタグをサブネットに直接マッピングし、ゲートウェイを見失うことを防ぎます。
- VRFサポート: アドレス空間の重複が懸念される複雑なマルチテナント環境やMPLSラベルも、競合なしに処理できます。
- 自動検出: 推測はやめましょう。ICMPやSNMPを使用してネットワークをスキャンし、応答はあるが未割り当てのIPを特定します。
ハンズオン:Ubuntu 22.04/24.04へのphpIPAMデプロイ
このデプロイには、伝統的なLAMPスタック(Linux, Apache, MariaDB, PHP)が依然として最適です。安定しており、予測可能で、数千のエントリも難なく処理できます。
1. 環境の準備
まずはシステムを更新し、主要な依存関係をインストールします。phpIPAMは、データベース接続やLDAP統合のために特定のPHP拡張機能を必要とします。
sudo apt update && sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server php php-curl php-gd php-json php-mbstring php-mysql php-xml php-gmp php-pear php-ldap git
2. データベースのセキュリティ強化
セキュリティは最優先事項です。まずMariaDBのインストールを保護し、専用ユーザーを作成します。アプリケーションの接続に「root」を使用するのは避けてください。
sudo mysql_secure_installation
# MariaDBにログイン
sudo mysql -u root -p
# MariaDBプロンプト内で以下のコマンドを実行
CREATE DATABASE phpipam;
GRANT ALL PRIVILEGES ON phpipam.* TO 'phpipam_user'@'localhost' IDENTIFIED BY 'YourStrongPassword';
FLUSH PRIVILEGES;
EXIT;
3. ソースコードの取得
Gitを使用すると、将来のメンテナンスが非常に簡単になります。手動でアップロードする代わりに、簡単な git pull で更新を処理できます。
cd /var/www/html
sudo git clone --recursive https://github.com/phpipam/phpipam.git phpipam
# Webサーバーユーザーに適切な権限を設定
sudo chown -R www-data:www-data /var/www/html/phpipam
sudo chmod -R 755 /var/www/html/phpipam
次に、提供されているテンプレートをコピーして、データベース接続の設定を行います。
cd /var/www/html/phpipam
sudo cp config.dist.php config.php
sudo nano config.php
先ほど作成した認証情報を使用して config.php ファイルを編集します:
$db['host'] = 'localhost';
$db['user'] = 'phpipam_user';
$db['pass'] = 'YourStrongPassword';
$db['name'] = 'phpipam';
$db['port'] = 3306;
4. Apacheの設定
/subnets/1/ のようなクリーンURLを有効にするには、mod_rewrite を有効にする必要があります。これにより、煩雑な index.php?page=subnets 構文を置き換えることができます。
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80> ブロック内に以下のディレクティブを挿入します:
<Directory /var/www/html/phpipam>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
サービスを再起動して、新しい設定を適用します:
sudo systemctl restart apache2
5. Webでの最終セットアップ
ブラウザで http://your-server-ip/phpipam にアクセスします。データベースの準備はすでに整っているので、「1. New phpipam installation」 を選択し、続いて 「Manual database installation」 を選択します。管理者パスワードとサイト名を設定すれば、管理の準備は完了です。
フィールドノート:実運用におけるベストプラクティス
ソフトウェアをセットアップするのは戦いの半分に過ぎません。データの整合性を維持することこそが、ジュニアとシニアの分かれ目です。
単純作業を自動化する
手動のIPAMは、直近の更新と同じレベルの正確さしか持ちません。cronを介してエージェントレススキャンを設定することを強くお勧めします。これにより、15分ごとに範囲を自動的にpingし、手動の作業なしで新しいデバイスを特定できます。
# www-dataユーザーとして実行: sudo crontab -e -u www-data
*/15 * * * * /usr/bin/php /var/www/html/phpipam/functions/scripts/pingCheck.php
*/15 * * * * /usr/bin/php /var/www/html/phpipam/functions/scripts/discoveryCheck.php
意図を持った構造化
すべてのサブネットを1つのフォルダに放り込むのはやめましょう。「管理用(Management)」「DMZ」「ストレージ用(Storage)」など、明確なセクションを作成してください。これにより、権限管理が簡素化されます。ヘルプデスクの権限を特定のユーザー向けVLANに制限しつつ、セキュリティチームには全体への閲覧権限を与えるといった運用が可能になります。
ラックマッピング機能を活用する
ラック管理機能は隠れた逸品です。サーバーを記録する際、単にIPを記録するだけでなく、42Uラック内の特定のUポジションに関連付けてください。この視覚的なマップは、電話越しに現地の技術者にハードウェア交換の指示を出す際に非常に役立ちます。
まとめ
煩雑なスプレッドシートをphpIPAMのような専用システムに置き換えることで、ワークフローが劇的に変わります。IP競合が発生する前に未然に防ぎ、すべての変更に対して明確な監査証跡を提供します。このガイドに従うことで、あなたは単なる追跡から、真のインフラ管理へと一歩踏み出しました。次に同僚から「VLAN 100で空いているIPを教えて」と聞かれたとき、あなたは推測ではなく、中央管理された「信頼できる情報源」から正確なデータを提供できるはずです。

