LinuxでのphpIPAMデプロイ:プロフェッショナルなIP、VLAN、サブネット管理

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

「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を教えて」と聞かれたとき、あなたは推測ではなく、中央管理された「信頼できる情報源」から正確なデータを提供できるはずです。

Share: