IPアドレス管理ツール「phpipam」インストール(CentOS8)Dockerコンテナ構築手順

IPアドレス管理表をエクセルで管理するのはめんどくさくさい。該当のIPアドレスが何に使われているのか、使用されているのか、いないのか確認するのもめんどくさいと感じるエンジニアは多いはずです。

こんなローカルな管理やはやめてIPアドレス管理ツールはないかと調べていたところすごくオススメのツールを見つけ構築しました。

「phpipam」

IPアドレス管理もできるし、死活管理もできる。しかもどの用途で使われているかなど詳細な情報を入れることも可能です。
かなりオススメなツールなので構築手順を紹介します。

CentOSのバージョンは以下となります。

$ cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core) 

「phpipam」でIPアドレス管理を簡素化。Dockerコンテナで簡単インストール

phpipamをインストールするために事前にインストールを実行するフォルダを作成します。
私はルート直下に以下のフォルダを作成しました。

$ mkdir /docker/phpipam
$ cd /docker/phpipam/

次に作成したフォルダはいかに「docker-compose.yml」を作成します。
「docker-compose.yml」のコードは以下のサイトを参考にしています。

参考URL
phpipam/phpipam-www

以下コマンドでファイルを作成します。

$ vim docker-compose.yml

タイムゾーンは日本。アクセスポートは80で設定する様にします。
そのままコピペで貼り付けます。

version: '3'

services:
  phpipam-web:
    image: phpipam/phpipam-www:latest
    ports:
      - "80:80"
    environment:
      - TZ=Asia/Tokyo
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=my_secret_phpipam_pass
      - IPAM_DATABASE_WEBHOST=%
    restart: unless-stopped
    volumes:
      - phpipam-logo:/phpipam/css/images/logo
    depends_on:
      - phpipam-mariadb

  phpipam-cron:
    image: phpipam/phpipam-cron:latest
    environment:
      - TZ=Asia/Tokyo
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=my_secret_phpipam_pass
      - SCAN_INTERVAL=1h
    restart: unless-stopped
    depends_on:
      - phpipam-mariadb

  phpipam-mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass
    restart: unless-stopped
    volumes:
      - phpipam-db-data:/var/lib/mysql

volumes:
  phpipam-db-data:
  phpipam-logo:

firewallで「phpipam」へのアクセスを許可する

phpipamにアクセスするためのアクセスポートをfirewallで許可します。
今回は80番ポート(http)を指定しましたので以下で対象ポートを開放します。

事前確認では対象ポートが許可されていません

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

httpサービスもしくはtcp80番ポートを許可する設定を実施します。

$ firewall-cmd --add-service=http --permanent
success

or

$ firewall-cmd --add-port=80/tcp --zone=public --permanent
success

設定を反映させるためにfirewallの再起動を実施します。

$ firewall-cmd --reload
success

再起動後、サービスもしくはポートが以下出力結果で許可されていることを確認します。

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client http ssh
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

注意!「CentOS8」dockerコンテナで起動してもデータベースエラーが発生するので事前対応

CentOSでDockerコンテナ間の通信が必要となります。(今回はphpipamとデータベース間)
firewallで設定をしていない場合、以下の様なエラーが発生し、データベースへアクセスができません。

phpipamは起動しません。

Could not connect to database! SQLSTATE[HY000] [2002] Host is unreachable

そのため、コンテナ間通信をするためにNAPTを許可する設定を追加します。

$ firewall-cmd --add-masquerade --permanent
success
$ firewall-cmd --reload
success
$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: cockpit dhcpv6-client http ssh
  ports: 80/tcp
  protocols:
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

「phpipam」起動

上記設定が完了したら、「docker-compose」コマンドで「phpipam」を起動します。

$ docker-compose up -d
Pulling phpipam-mariadb (mariadb:latest)...
latest: Pulling from library/mariadb
6a5697faee43: Pull complete
ba13d3bc422b: Pull complete
a254829d9e55: Pull complete
2ee2cadd29fc: Pull complete
6915a184049d: Pull complete
5ca6ffdb5f56: Pull complete
1537f7bbef8b: Pull complete
5790e54322d1: Pull complete
ea98cb829471: Pull complete
9435498523fe: Pull complete
8f74422942d3: Pull complete
1a9f2d945b70: Pull complete
Digest: sha256:a1988653a7aa0b76a2f2034754bb25ebdcd9030fadc5118f9f837a197a803720
Status: Downloaded newer image for mariadb:latest
Pulling phpipam-cron (phpipam/phpipam-cron:latest)...
latest: Pulling from phpipam/phpipam-cron
188c0c94c7c5: Pull complete
e63f14530b46: Pull complete
2d235303011a: Pull complete
e8f4458d8a19: Pull complete
4fcfd6b825e3: Pull complete
Digest: sha256:eb9cae5054e5c43e12ceb231fda5b67e0e75eff9d3d7993381ed211635b4232f
Status: Downloaded newer image for phpipam/phpipam-cron:latest
Pulling phpipam-web (phpipam/phpipam-www:latest)...
latest: Pulling from phpipam/phpipam-www
188c0c94c7c5: Already exists
e63f14530b46: Already exists
2d235303011a: Already exists
e8f4458d8a19: Already exists
Digest: sha256:80bd20179f195f2b645449fae7c66864370b51ac59897d2c23faa4b5ed41955f
Status: Downloaded newer image for phpipam/phpipam-www:latest
Creating phpipam_phpipam-mariadb_1 ... done
Creating phpipam_phpipam-cron_1    ... done
Creating phpipam_phpipam-web_1     ... done

上記の様に正常に起動したら、「docker ps」コマンドで以下のコンテナが起動していることを確認します。

$ docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                NAMES
b566128154e0        phpipam/phpipam-www:latest    "/sbin/tini -- /bin/…"   2 days ago          Up 2 days           0.0.0.0:80->80/tcp   phpipam_phpipam-web_1
5cfd6aaa53a1        phpipam/phpipam-cron:latest   "/sbin/tini -- /bin/…"   2 days ago          Up 2 days           80/tcp               phpipam_phpipam-cron_1
a268385d8a04        mariadb:latest                "docker-entrypoint.s…"   2 days ago          Up 2 days           3306/tcp             phpipam_phpipam-mariadb_1

最後にブラウザ(chrom)を開き「phpipam」をインストールしたアドレスへアクセスします。

http:///

phpipamのトップページ(初期設定画面)が表示されたら完了です。

phpipamの初期設定は以下となります。

以上が「phpipam」のインストール手順となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!