DNS-IP-Mapperのソースコードは、以下のGitHubリポジトリで確認できます:
https://github.com/kawamurashingo/DNS-IP-Mapper
はじめに
サービスのデプロイやインフラのセットアップ時、ドメイン名にIPアドレスを割り当てるのはルーチンワークです。特に多数のドメインを扱っている場合には、これらの割り当てを手動で管理し、追跡するのは大変な作業になることがあります。DNS-IP-Mapperは、指定されたサブネットから利用可能なIPアドレスを、完全修飾ドメイン名(FQDN)のリストに自動的に割り当てます。
前提条件
- シェル環境: Bash (推奨されるバージョンは4以上)。
-
コマンド:
host
コマンドが利用可能であること(通常はbind-utils
パッケージに含まれています)。
使い方
1. 準備:
FQDNファイル: IPアドレスが必要なFQDNのリストを持つテキストファイルを作成します。それぞれのFQDNを別の行に配置してください。
例 (fqdns.txt
):
db01.example.com
db02.example.com
web0[1-2].example.com
サブネットファイル: IPアドレスを選択するためのサブネットを含む別のテキストファイルを作成します。それぞれのサブネットを別の行に配置してください。
例 (subnets.txt
):
192.168.1.0/24
192.168.2.0/24
2. スクリプトの実行:
以下のコマンドでスクリプトを実行します:
./assign_ips.sh -f <FQDNファイルへのパス> -n <サブネットファイルへのパス> [-s <IPの開始範囲>] [-e <IPの終了範囲>]
オプション
-
-f
: FQDNファイルへのパス。 -
-n
: サブネットファイルへのパス。 -
-s
: IPアドレスの開始範囲を定義(デフォルトは1)。 -
-e
: IPアドレスの終了範囲を定義(デフォルトは240)。
例:
./assign_ips.sh -f fqdns.txt -n subnets.txt -s 10 -e 100
上記を実行すると、指定されたサブネットからFQDNに .10
から .100
の範囲のIPアドレスを割り当てることを試みます。
出力
結果は、次の形式で各FQDNに割り当てられたIPアドレスをリストします:
<fqdn>,<assigned_ip>
出力の例:
db01.example.com,192.168.1.10
db02.example.com,192.168.1.11
web01.example.com,192.168.1.12
web02.example.com,192.168.1.13
IPアドレスの利用可能性の判断基準は?
スクリプトは、IPアドレスの利用可能性を次の基準で判断します:
-
DNSチェック:
host
コマンドを使用して、IPアドレスに既にDNSレコードが存在するかどうかを確認します。 - Pingチェック: スクリプトはIPアドレスにpingを送ってその応答を確認します。
両方のチェックが失敗した場合(DNSレコードがなく、pingに応答しない場合)、IPアドレスは利用可能と見なされます。
注意点
- このスクリプトのバージョンは、CIDR値として24, 23, 22のみをサポートしています。
- 利用可能なサブネットから各FQDNにユニークなIPアドレスが割り当てられます。
DNS-IP-MapperでIPアドレスの割り当て作業を自動化し、シンプルにしましょう🌐