Network

OSSのIPAMツール「GestioIP」をDockerで簡単構築する

Network

以前にNetboxといういわゆるネットワーク管理者向けのIPAM(IP address management)のOSSのツールについて紹介いたしました。

OSSのIPAMツール「Netbox」をDockerで簡単構築する 
https://syachiku.net/netbox-docker/

Netboxで自宅ネットワークのIPアドレス一覧を管理してみる 
https://syachiku.net/netbox-try01/

今回は同様のIPAM機能を持つOSSである「GestioIP」をDockerで構築して使ってみましたので紹介したいと思います。

10年くらい前に私も使ったことがあるのですがVLANとかも管理できたので結構使いやすいイメージがあります。

1. GestioIPとは?

GestioIPは、IPv4およびIPv6アドレスの管理に使用できるWebベースのオープンソースIPAMです。

強力なネットワーク検出機能を備えており、ネットワークとホストの両方に対して検索およびフィルター機能を提供し、インターネット検索エンジンと同等の表現を可能にします。

これにより、管理者が頻繁に必要とする情報を簡単かつ迅速に見つけることができます。 GestióIPには、自動VLAN管理システムも組み込まれています。 

GestioIP公式サイト
https://www.gestioip.net/

2. DockerでGestioIPを構築

早速、DockerでGestioIPを構築 していきます。

2.1. docker-composeファイルの取得

以下のサイトを使わせてもらいました。 
https://github.com/muebel/gestioip-docker-compose

ファイルをGit Cloneしてディレクトリに移動します。

> git clone https://github.com/muebel/gestioip-docker-compose
> cd .\gestioip-docker-compose\

docker-compose.yamlファイルは以下のようになっています。 mysqlとgestioIPのイメージを使っているようですね。

このままだとポートが80番でアップしてしますので、変更したい場合には.envファイルのHOST_PORTを適宜変更してください。

version: "3.8"

services:

  gip-mysql:
    image: mysql:5
    container_name: gip-mysql
    networks:
      gip-net:
        ipv4_address: ${MYSQL_IP}
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_USER_PASSWORD}
      MYSQL_DATABASE: ${DB_SSID}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
        - ./mysql:/docker-entrypoint-initdb.d
        - ${DB_DATA_DIR}:/var/lib/mysql

  gip:
    image: gestioip/gestioip:3560
    container_name: gip
    networks:
      gip-net:
        ipv4_address: ${GIP_IP}
    restart: always
    environment:
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_SSID: ${DB_SSID}
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_PASSWORD}
      BCK_USER_DISABLED: ${BCK_USER_DISABLED}
      BCK_USER: ${BCK_USER}
      BCK_USER_PASS: ${BCK_USER_PASS}
      USE_SSL: ${USE_SSL}
      SERVER_NAME: ${SERVER_NAME}
    volumes:
        - ./apache/certs:/etc/apache2/ssl/certs
        - ./apache/keys:/etc/apache2/ssl/keys
        - ./apache/conf:/usr/share/gestioip/etc/apache
    ports:
        - ${HOST_PORT}:${CONTAINER_PORT}

networks:
  gip-net:
    ipam:
      driver: default
      config:
        - subnet: ${SUBNET}
          gateway: ${GATEWAY}

.envファイル

## Environment variables for a GestioIP installation with docker-compose
## v1.1 20210216

## Change DB_ROOT_USER_PASSWORD and DB_PASSWORD

## Change the other parameters only if you are
## sure what you are doing

# Database parameter
DB_HOST="gip-mysql"
DB_PORT="3306"
DB_ROOT_USER_PASSWORD="PASSWORD"
DB_SSID="gestioip"
DB_USER="gestioip"
DB_PASSWORD="PASSWORD"

# Enable SSL
# To enable SSL you need to 
# * dispose about a SSL server certificate
#   and the corresponding key
# * set USE_SSL="yes"
# * set the variable SERVER_NAME
# Copy the server certificate to
# ./apache/certs/SERVER_NAME.crt and the server 
# key to ./apache/keys/SERVER_NAME.key. Replace
# SERVER_NAME with the value of the variable SERVER_NAME.
# Example: ./apache/certs/gestioip.example.com.crt
# and ./apache/keys/gestioip.example.com.key
# Set also the variables CONTAINER_PORT and 
# HOST_PORT both to "443".
# [yes|no]
USE_SSL="no"
# Server name when using SSL. Must be the same
# as the CN of the certificate. With USE_SSL="no",
# this parameter will be ignored. This parameter
# is mandatory with USE_SSL="yes"
SERVER_NAME="gestioip.example.org"

# datadir
DB_DATA_DIR="./mysql/data/"

# docker network (bridged network address)
SUBNET="10.20.0.0/24"
GATEWAY="10.20.0.1"
GIP_IP="10.20.0.2"
MYSQL_IP="10.20.0.3"

# ports (set to 443 with USE_SSL="yes")
CONTAINER_PORT="80"
# ports (set to 443 with USE_SSL="yes")
HOST_PORT="80"

# optional Configuration Management Module 
BCK_USER_DISABLED="yes"
BCK_USER="gestioip-bck"
BCK_USER_PASS="PASSWORD"

2.2. GestioIPコンテナの作成・起動

それではGestioIPコンテナの作成・起動をします。

> docker-compose up -d

イメージのダウンロードとコンテナ作成ができています。簡単ですね。

> docker-compose ps
  Name                 Command               State          Ports
------------------------------------------------------------------------
gip         /gestioip_install/script/c ...   Up      0.0.0.0:80->80/tcp
gip-mysql   docker-entrypoint.sh --def ...   Up      3306/tcp, 33060/tcp

3. GestioIPを使ってみる

3.1. ログオン

http://localhost にアクセスします。

初期パスワードは以下になりますのでログオンします。

  • Username: gipadmin
  • Password: PASSWORD

3.2. ネットワーク作成

最初にネットワークを作成してみます。 ルートネットワークとして192.168.0.0/16を作成します。

次にルートネットワークにぶら下がるネットワークとして我が家で実際に利用している192.168.10.0/24を登録します。

3.3. IPアドレス管理表の確認

作成したネットワークが表示されることを確認できます。

※注意:どうもedge(chronium版)だとネットワーク表示などが正しく表示されないようです。

ネットワークを選択するとIPアドレス管理表が表示されますきます。

該当ネットワーク内のデバイスに対して存在確認もできました。

4. まとめ

10年くらい前に使っていたものに比べて見た目がかなり変わってますね。

慣れの問題かもしれませんが、ちょっとボタンとかが使いにくい印象です。

ただし、機能としては充分なのでExcelで管理するよりは全然使えるかと思います。

※どうもedge(chronium版)だとネットワーク表示などが正しく表示されないようです。

今回は以上となります。

コメント