【続編】OSSを使用したNWリソース管理
高度化への取り組み

【技業LOG】技術者が紹介するNTTPCのテクノロジー

2022.01.06
その他
水口 直哉

ネットワークエンジニア
水口 直哉

技業LOG

効率的なNWリソースの管理

前回の記事では、NetboxによるNWリソース管理の一例としてIPアドレス管理を挙げ、Netboxへのアドレス登録の方法や、スクリプトによるアドレスの自動払い出しとそのAPI実行について紹介しました。

一方で、実際のIPアドレス管理を考えると、Prefixを分割して小さなPrefixに分割して機能/サービス/ユーザ毎に割り当てることや、IPアドレスを特定のPrefixから割り当てるなど、Prefix/IP Addressを階層化し、グループ化して管理する必要があります。
そこで、本記事ではPrefix/IP AddressをNetbox上で効率的に管理するための階層化やグルーピングの方式について検討します。

また、前回の記事を書いてから半年程の間にNetboxに多くのアップデートが行われ、数多くの機能が追加されました。そのアップデートの中から、特にIPAMに関連する機能について紹介いたします。

※前回の記事
OSSを使用したNWリソース管理高度化への取り組み
https://www.nttpc.co.jp/technology/netbox.html

次が目次となります。

前回記事執筆時からのNetbox Update

前回記事で利用していたNetboxのバージョンはv2.10.5でしたが、それから2度の大きなアップデート(v2.11, v3.0)がありました。
IPAM機能に関連する変更点について確認していきましょう。

#v2.11 (2021/4/16 リリース)

IPAMに関する大きな変更はありませんでしたが、細かい機能追加やUI改善が行われています。

  • Prefix一覧のViewでMax Prefixフィルタをクリアできるようになった
  • IPアドレスをdescriptionでフィルタできるようになった
  • IPv4で/32のprefixやIPv6で/128のPrefixが許可された

#v3.0 (2021/8/30 リリース)

このリリースでは大きくUIが変更されました。IPAMの画面も大きく変更されています。

キャプチャ:IPAM画面

IPAM機能関連では、IP Rangesが追加されました。
これは任意の範囲のIPv4/v6アドレスの範囲を表すことができるようになりました。
以下の画像は、10.0.0.1/24 ~ 10.0.0.100/24の範囲をIP Rangesへ登録した様子です。

キャプチャ:10.0.0.1/24 ~ 10.0.0.100/24の範囲をIP Rangesへ登録した様子

また、本記事執筆時(2021/11月時点)において、v3.1のbeta版が発表されています。
更新に追い付くのは大変ですが、このような頻繁なリリース/機能追加はOSS活用の魅力の一つですね。

IPアドレス管理の階層化/
グルーピング

これより、NetboxでIPアドレスを効率的に管理するための階層化/グルーピングの方式について検討していきます。
まず、Prefixにはどのようなカラムがあるか見てみましょう。

キャプチャ:Prefix

VRF, Role, Description、Tags、Site, Vlan, Tenantが管理のために利用できそうです。

続いて、IP Addressのカラムを見ていきましょう。
(Interface Assignment, NAT IPは省略します。)

キャプチャ:IP Address

こちらも同じくVRF, Role, Tags, Tenantが管理のために利用できそうです。

上記のうち、今回はTenantを用いた管理について紹介します。

Tenantについて

Tenantとは、Netboxにて提供されるコア機能の一つであり、NWリソースの管理グループを表します。Tenantは主に個々のユーザや組織部門毎を表すために利用されます。
また、TenantはTenants Groupにグループ化することができます。

本記事では、Tenants GroupをNTTPC社とし、その配下の各部門をTenantと置いた際に、会社が持つPrefixを部門毎に分割して管理する方法を考えます。

動作例:環境説明

これより、実際にNetboxにてTenantを使ったPrefixの管理について見ていきましょう。

前記事に引き続き、Dockerで環境構築をします。

  • netbox-docker: 1.4.1
  • Netboxは執筆時で最新のv3.0.9を利用します。

前回記事のバージョン(v2.10)から、本記事のバージョン(v3.0)へアップデートする際には注意が必要です。
詳しくは公式(https://github.com/netbox-community/netbox-docker/releases)をご覧ください。

次のコマンドでDockerを立ち上げます。
ポート設定は各自の環境に合わせてください。
Dockerが立ち上がった後、GUIにアクセスしてください。下記コマンドの場合、URLはhttp://localhost:8000, ユーザ名/PWはadmin/adminとなります。

> git clone -b 1.4.1 https://github.com/netbox-community/netbox-docker.git
> cd netbox-docker
> export VERSION=v3.0.9
> tee docker-compose.override.yml >>EOF version: '3.4' services: netbox: ports: - 8000:8080 EOF
> docker compose pull > docker compose up -d

動作例:Tenant Group, Tenantの登録

まずTenant Groupの登録を行います。
GUIの左側のバーより、Organization > Tenant Groupsを選択し、右上のAddボタンをクリックします。
下記のような画面が現れるので、Nameとslugを画像の通り記入し、Createボタンをクリックします。slugはURLで利用される文字列のため、英語で記入ください。

キャプチャ:Add a new tenant group

以下のような画面になればTenant Groupsの登録完了です。

キャプチャ:Tenant Groupsの登録完了画面

続いて、Tenantの登録をしていきます。Organization > Tenantsを選択し、右上のAddボタンをクリックします。
下記のような画面が現れるので、Nameとslugを画像の通り記入し、Groupに上記で作成したTenants Groupを指定して、Createボタンをクリックします。

キャプチャ:Add a new tenant

以下のような画面になれば登録完了です。
同じように、部門B, 部門Cも登録します。
以上で、Tenant GroupsとTenantの登録は完了です。

キャプチャ:Tenant GroupsとTenantの登録完了画面

動作例:Prefix, IP Addressの登録

続いて、PrefixとIP Address登録します。
PrefixとIP Addressについては、CSVでの一括登録を行います。

まず、Prefixの登録を行います。
10.0.0.0/16のPrefixから、各部門に/24の単位で割り当てていきます。
左部のバーより、IPAM > Prefixes > Importをクリックしてください。
表示されたボックスの中に、以下のCSVをコピー&ペーストします。その後Submitをクリックしてください。
ここでTenantを記入することで、PrefixとTenantの紐付けが行えます。

prefix,status,tenant
10.0.0.0/16,container,
10.0.1.0/24,active,部門A
10.0.2.0/24,active,部門B
10.0.3.0/24,active,部門C

続いて、IP Addressの登録を行います。
各部門に割り当てられた/24のprefixから、ユーザ毎に1IPずつ割り当てていきます。また、フィルタの試験のため、ダミーのアドレスの1IP(192.168.0.1/24)を登録します。
左部のバーより、IPAM > IP Addressess > Importをクリックしてください。
表示されたボックスの中に、以下のCSVをコピー&ペーストします。その後Submitをクリックしてください。
ここでTenantを記入することで、PrefixとTenantの紐付けが行えます。

address,status,tenant,description
10.0.1.1/24,active,部門A,ユーザA1
10.0.1.2/24,active,部門A,ユーザA2
10.0.1.1/24,active,部門B,ユーザB1
10.0.1.2/24,active,部門B,ユーザB2
10.0.1.1/24,active,部門C,ユーザC1
10.0.1.2/24,active,部門C,ユーザC2
192.168.0.1/24,active,,ダミー

PrefixとIP Addressの登録に完了すると、次のように一覧で表示されます。

キャプチャ:PrefixとIP Addressの登録完了画面
キャプチャ:PrefixとIP Addressの登録完了画面

ここで、部門に割り当てられたアドレスのみフィルタして表示させましょう。
IP Addressの一覧ページにて、上部のタブからFilterを選び、Tenantから「部門A」を選択し、Searchをクリックします。
すると、下記のように部門Aに紐づいたIP Addressのみが表示されます。

キャプチャ:部門Aに紐づいたIP Address

また、Tenants Groupでのフィルタをすることもできます。
Filterタブにて、Tenantの部門Aを消去し、Tenant Groupに「NTTPC」を選択し、Searchをクリックします。
すると、下図のようにTenants Group「NTTPC」の配下のTenant「部門A」「部門B」「部門C」に紐づくIP Addressの一覧が表示されます。(ダミーアドレスが表示されなくなったことをご確認ください。)

キャプチャ:Tenant「部門A」「部門B」「部門C」に紐づくIP Addressの一覧

このように、Tenant GroupやTenantを利用すると、PrefixやIP Addressを階層化してグルーピングして管理できるようになります。

終わりに

本記事では、NetboxによるIPアドレス管理について、NetboxのTenantの機能を利用して階層化して管理する方法について紹介いたしました。
NTTPCでも一部IPアドレスの管理をNetboxで行っていますが、本記事で紹介したようにTenantを利用したグループ化を利用しています。これにより、新しくPrefixを分割する際の階層化がやりやすく、またGUI上でのPrefix/IP Addressの視認性が上がりました。
また前記事でのスクリプトと組み合わせると、部門毎のIPアドレス払い出しも実現できるようになります。

本記事が、NWリソース管理のためにNetboxを検討している皆様の参考になれば幸いです。

技業LOG

この記事で紹介しているサービスは
こちら

Infosphere®

障害に強い安定稼働の法人向けインターネットサービス

Master'sONE®ネットワーク

設計 / 構築~保守 / 運用まで一元サポート。クラウド接続から社内ネットワークまで柔軟に"つながる"、
拡張性と可用性に優れたネットワークサービス

おすすめ記事

    お気軽にご相談ください

    • 「Infosphere」「Master'sONE」は、NTTPCコミュニケーションズの登録商標です。