ひとつの NIC に大量のアドレスを割り当てるツール「Addresses」

Windows でも Linux でも、ひとつの NIC に複数の IP アドレス(俗に「セカンダリアドレス」と呼んでいると思います。三つ目、四つ目のアドレスでも「セカンダリアドレス」と呼んでいます)を割り当てることが出来ます。

この機能を利用すると、ロードバランサーでの負荷分散試験時に複数の IP アドレスで Web サーバをホストしたい・・・ということが簡単に出来ます(NIC に複数のアドレスを割り当て、それらのアドレスで Web サーバを Listen するだけです)。

ただ、Linux はともかく、Windows の GUI でセカンダリアドレスを大量に設定する・・・というのは骨が折れます。 WMI を使えば Windows でもスクリプトから大量のセカンダリアドレスを設定することは出来ますが、毎回、設定するのは面倒です。そこで、CSV ファイルに書き出したアドレスを NIC に設定してくれるツールを作ってみました。.NET Framework 2.0 で動作します。

予め、以下のような CSV ファイルを用意しておきます。最初のカラムがアドレス、次のカラムがサブネットを意味します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
10.0.0.1,255.255.255.0
10.0.0.2,255.255.255.0
10.0.0.3,255.255.255.0
10.0.0.4,255.255.255.0
10.0.0.5,255.255.255.0
10.0.0.6,255.255.255.0
10.0.0.7,255.255.255.0
10.0.0.8,255.255.255.0
10.0.0.9,255.255.255.0
10.0.0.10,255.255.255.0
        ・
        ・
        ・

起動直後はこのような画面になります。

file

中央部分に用意しておいた CSV ファイルをドラッグ&ドロップすると中身が読み込まれ、このような画面になります。CSV ファイルの中身が IP アドレスか、否か、程度はエラー処理させていますが、エラー処理を作りこんでいるわけでは無いので、いたずらしてはイケマセン。

file

「Set Address(es)」ボタンをクリックすると、実際にアドレスが設定されます。"ipconfig" コマンドで設定を確認すると、このようになっているはずです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
> ipconfig

Windows IP Configuration

Ethernet adapter ローカル エリア接続:

   Connection-specific DNS Suffix  . : 
   IP Address. . . . . . . . . . . . : 10.0.0.110
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.109
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.108
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.107
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.106
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.105
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.104
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IP Address. . . . . . . . . . . . : 10.0.0.103
   Subnet Mask . . . . . . . . . . . : 255.255.255.0