ネットワークコマンドで管理が変わる!


第16回 DHCPのスコープを管理するコマンド (その1)


今月のコマンド

add/show/delete scope

scope

set/show/delete optionvale

set/show/delete superscope


いよいよDHCPサーバー関連netshコマンドの最後として、スコープ関連のコマンドを紹介することにする。スコープとは、DHCPサーバーがそのネットワークでDHCPリクエストに対してどのように処理するかを定義した設定群である。例えば、営業部と経理部、その他のネットワークを、それぞれ別のスコープとして設定しておくと、DHCPサーバーが1つであっても、別のオプションをクライアントに渡すことができるなど、何かと便利になる。

なお、今回紹介するnetshサブコマンドもすべてWindows 2000 ServerおよびWindows Server 2003 (R2を含む) でのみ利用できる。Windows 2000 ProfessinalおよびWindows XP Professional/Home Editionでは利用できない。


---------------------------------------------------------------------------

DHCPサーバーにスコープを作成/確認/削除する

add scope

show scope

delete scope

---------------------------------------------------------------------------

スコープの作成

 スコープの作成にあたっては、あらかじめ綿密にスコープをどのように管理するかを決めておく必要がある。行き当たりばったりでスコープを作成すると後で面倒になる。

 スコープの作成にはadd scopeコマンドを使う。このコマンドはdhcp serverコンテキストで実行できる。add scopeコマンドの構文は次のとおり。

add scope ScopeAddress SubnetMask ScopeName [ScopeComment]


 パラメータのScopeAddressには作成したいスコープのIPアドレスを、SubnetMaskにはそのサブネットマスクを指定し、ScopeNameには作成するスコープの名前を指定する。またScopeCommentにはスコープの説明を指定することができる (省略可能)。スコープ名にはわかりやすい名前を付けるようにしよう。

 例えば、スコープ アドレスが10.2.2.0、サブネットマスクが255.255.255.0、スコープ名が「eigyo」でスコープの説明が「scope for eigyo」のスコープを追加するには次のように指定する。


例:add scope 10.2.2.0 255.255.255.0 eigyo "scope for eigyo"


スコープの確認

 スコープを作成した後、それが正しく作成されているかを確認するには、show scopeコマンドを使う。このコマンドもdhcp serverコンテキストで実行できる。show scopeコマンドの構文は次のとおり。

show scope


 パラメータはない。このコマンドを実行すると、作成されているスコープのスコープアドレス、サブネットマスク、状態、スコープ名、コメントが表示される。状態には、そのスコープが現在アクティブか無効かが表示される。


画面1● add scopeコマンドでスコープを作成し、show scopeコマンドで作成されたスコープを確認


スコープの削除

 スコープを削除する場合はdelete scopeコマンドを使う。このコマンドもdhcp serverコンテキストで実行できる。delelete scopeコマンドの構文は次のとおり。

delete scope ScopeAddress ForceFlag


 ScopeAddressには削除したいスコープのIPアドレスを指定し、ForceFlagには「DHCPNOFORCE」または「DHCPFULLFORCE」と指定する。これ以外を指定したときは削除に失敗する。「DHCPNOFORCE」を指定すると、スコープにアクティブなクライアントが存在しないときだけ削除できる。一方、「DHCPFULLFORCE」と指定すると、アクティブなクライアントが存在するときでも強制的に削除する。


画面2● delete scopeコマンドでスコープを削除し、show scopeコマンドで結果を確認


---------------------------------------------------------------------------

スコープコンテキストに移動する

scope

---------------------------------------------------------------------------

>スコープコンテキストに移動する

 現在のコンテキストをスコープのコンテキストに移動する場合はscopeコマンドを使う。このコマンドもdhcp serverコンテキストで実行できる。scopeコマンドの構文は次のとおり。

scope ScopeAddress


 ScopeAddressにはコンテキストを変更したいスコープのIPアドレスを指定する。コンテキストをスコープに変更するとプロンプトが「netsh dhcp server scope>(Windows Server 2003)、「dhcp server scope>(Windows 2000 Server) に変わる。


画面3● scopeコマンドでコンテキストをスコープに変更


---------------------------------------------------------------------------

スコープオプションを設定/表示/削除する

set optionvalue

show optionvalue

delete optionvalue

---------------------------------------------------------------------------

 前回サーバーオプションについて解説したが、同様のオプションをスコープで設定することができる。これはスコープオプションと呼ばれる。

set optionvalue」コマンドはスコープオプションを設定し、「show optionvalue」コマンドは現在設定されているスコープオプションを表示するコマンドだ。さらに「delete optionvalue」コマンドは設定されているスコープオプションを削除する。いずれもdhcp server scopeコンテキストで実行できる。

 サーバーオプションとの違いは、実行するコンテキストの違いによる。つまり、dhcp serverコンテキストで実行した場合はサーバーオプションになり、dhcp server scopeコンテキストで実行した場合はスコープオプションになる。また構文にも若干の違いがある。

 サーバーオプションはすべてのスコープに対して適用されるが、スコープオプションはそのスコープでのみ適用される。両方で同じオプションが設定されている場合は、スコープオプションでの設定が優先して適用される。つまり、特定のスコープでのみ適用したいオプションはスコープオプションで設定し、すべてのスコープで適用したいオプションはサーバーオプションとして設定すればよいことになる。


スコープオプションを設定する

 set optionvalueの構文は次のとおり。

set optionvalue OptCode DataType [user=UserName] [vendor=VendorName]
OptValue


 パラメータのOptCodeには設定したいオプションのオプションコードを指定し、DataTypeにはそのデータタイプを指定する。またOptValueにはクライアントに渡すオプション値を設定する。Userおよびvendorパラメータは省略可能。設定可能なオプションおよびオプションコード/データタイプ/オプション値は前回のサーバーオプションの表を参照していただきたい。

 例えば、ルーターのIPアドレスを設定する場合は次のように指定する (複数のIPアドレスはスペースで区切る)


例:set optionvalue 003 IPADDRESS 10.1.1.1 10.1.1.2 10.1.1.3


DNSドメイン名を指定する場合は次のように指定する。


例:set optionvalue 015 STRING idg.co.jp


 これらの設定はGUIでも同様に可能だ。特にBINARY値のオプションをコマンドで設定するのは難しいので、その場合はGUIで設定したほうがよい。


>スコープオプションの確認

 設定したスコープオプションはshow optionvalueコマンドで確認できる。show optionvalueコマンドの書式は次のとおり。

show optionvalue {user=UserName} [vendor=VendorName]


 パラメータはすべて省略可能だ。


画面4● set optionvalueコマンドでスコープオプションを設定し、show optionvalueコマンドで設定内容を確認


>スコープオプションの削除

 設定してあるスコープオプションを削除する場合は、delete optionvalueコマンドを使う。書式は次のとおり。

delete optionvalue OptCode
[user=UserName]
[vendor=VendorName]


 やはりvendorおよびuserパラメータは省略できる。


画面5● delete optionvalueコマンドでスコープオプションを削除し、show optionvalueコマンドで結果を確認


---------------------------------------------------------------------------

スーパースコープを設定/表示/削除する

set superscope

show superscope

delete superscope

---------------------------------------------------------------------------

 Windows DHCPサーバーには複数のスコープを1つにまとめて管理できるスーパースコープがある。スーパースコープを作成すると、複数のスコープをあたかも1つのスコープであるかのように扱うことができる。なにもスーパースコープを使わなくても最初から1つのスコープを作っておけばよいのではと思うかもしれないが、例えば、あるスコープで予定していたリース数を上回る数のIPアドレスをリースする必要が生じた場合、運用中のスコープを作成し直すのは難しいだろう。そこで、既存のスコープとは別のスコープをセカンダリスコープとして作成し、既存のプライマリスコープと一緒にスーパースコープにしてやれば、既存のスコープを変更することなく、IPアドレスを増やすことができる。


>スーパースコープの作成と参加/削除

 スーパースコープを作成しスコープを参加させるには「set superscope」コマンドを使う。このコマンドはdhcp server scopeコンテキストで実行する必要がある点に注意して欲しい。set superscopeコマンドの構文は次のとおり。

set superscope SuperscopeName Flag


パラメータSuperscopeNameにはスーパースコープの名前を指定する。Flagには「1」または「0」を指定する。1は指定したスーパースコープが存在しない場合は作成し、現在のスコープをそのスーパースコープに参加させる。0は現在のスコープをスーパースコープから削除する。

 例えば、スコープ「eigyo1」を「eigyo」スーパースコープに参加させるには、dhcp server scopeeigyo1」コンテキストで次のように指定する。


例:set superscope eigyo 1


 同様に、スコープ「eigyo2」を「eigyo」スーパースコープに参加させるには、dhcp server scopeeigyo2」コンテキストで次のように指定する。


例:set superscope eigyo 1


>スーパースコープの確認

 作成したスーパースコープを確認するにはshow superscopeコマンドを使う。このコマンドはWindows Server 2003 (R2を含む) でのみ利用できる。Windows 2000 Serverでは利用できない。また、このコマンドは、dhcp server scopeコンテキストではなく、dhcp serverコンテキストで実行することに注意して欲しい。構文は次のとおり。パラメータはない。

show superscope


画面6● set superscopeコマンドでスーパースコープを作成・参加し、show superscopeコマンドで結果を確認


>スーパースコープの削除

 スーパースコープを削除するにはdelete superscopeコマンドを使う。このコマンドは、dhcp server scopeコンテキストではなく、dhcp serverコンテキストで実行することに注意して欲しい。構文は次のとおり。

delete superscope SuperscopeName


パラメータSuperscopeNameには削除するスーパースコープの名前を指定する。

スーパースコープを削除してもスコープ自体は削除されない。単独のスコープになるだけだ。


画面7● delete superscopeコマンドでスーパースコープを削除し、show superscopeコマンドで結果を確認<



netshサブコマンドリファレンス

netshサブコマンドは、実行できるコンテキストが異なる。そのため、ダイレクトコマンドモードの場合、-cオプションによって実行可能なコンテキストを指定する必要がある。シェルモードの場合は、実行できるコンテキストに移動してからコマンドを実行するか、コンテキスト名をコマンドといっしょに指定して実行する必要がある。


add scope

スコープを作成する

[構文]

add scope ScopeAddress SubnetMask ScopeName [ScopeComment]

[パラメータ]

ScopeAddress

作成するスコープのIPアドレスを指定する。

SubnetMask

作成するスコープのサブネットマスクを指定する。

ScopeName

作成するスコープの名前を指定する。

ScopeComment

スコープの説明を指定する (省略可能)

[実行できるコンテキスト] dhcp server


show scope

スコープを表示する

[構文]

show scope

[パラメータ]

なし。

[実行できるコンテキスト] dhcp server


delete scope

スコープを削除する

[構文]

delete scope ScopeAddress ForceFlag

[パラメータ]

ScopeAddress

削除するスコープのIPアドレスを指定する。

ForceFlag

次のいずれかを指定する。これ以外を指定するとエラーになる。

DHCPNOFORCE:スコープにアクティブなクライアントが存在しないときだけ削除する。

DHCPFULLFORCE:アクティブなクライアントが存在するときでも強制的に削除する。

[実行できるコンテキスト] dhcp server


scope

スコープコンテキストに変更する

[構文]

scope ScopeAddress

[パラメータ]

ScopeAddress

コンテキストを変更するスコープのIPアドレスを指定する。

[実行できるコンテキスト] dhcp server


set optionvalue

スコープのオプションを設定する

[構文]

set optionvalue OptCode DataType [user=UserName] [vendor=VendorName] OptValue

[パラメータ]

OptCode

定義されたオプションの一意のコード。

DataType

定義されたオプションのデータの種類。次の値のいずれかを指定する。

BYTEWORDDWORDSTRINGIPADDRESS

user

このコマンドが適用されるユーザークラスの名前を指定する。省略した場合は既定のユーザークラスが使われる。

vendor

このコマンドが適用されるベンダクラスの名前を指定する。省略した場合はDHCPスタンダードオプションクラスが使われる。

OptValue

OptCodeで識別されるオプションの値を指定する。DataTypeの形式で入力する。

[実行できるコンテキスト] dhcp server scope


show optionvalue

スコープで定義されているオプションを表示する

[構文]

show optionvalue [user=UserName] [vendor=VendorName]

[パラメータ]

user

スコープで設定されているユーザークラスで利用可能なオプションをすべて表示する。省略した場合は既定のユーザークラスが使われる。

vendor

スコープで設定されているベンダクラスで利用可能なプションをすべて表示する。省略した場合は既定のベンダクラスが使われる。

[実行できるコンテキスト] dhcp server scope


delete optionvalue

指定したスコープオプションを削除する

[構文]

delete optionvalue OptCode [user=UserName] [vendor=VendorName]

[パラメータ]

OptCode

削除するオプションのオプションコード。

user

オプションが関連付けられているユーザークラスの名前。指定する場合は "user=" タグが必要。デフォルトはset userclassで設定されたグローバルユーザーの名前。

vendor

オプションが関連付けられているベンダクラスの名前。指定する場合は "vendor=" タグが必要。デフォルトはset vendorclassで設定されたグローバルベンダの名前。

 [実行できるコンテキスト] dhcp server scope


set superscope

スーパースコープを作成・参加/削除する

[構文]

set superscope SuperscopeName Flag

[パラメータ]

SuperscopeName

スコープを参加/削除するスーパースコープの名前を指定する。

Flag

次のいずれかを指定する。

1:指定したスーパースコープが存在しない場合は作成し、現在のスコープをそのスーパースコープに参加させる。

0:現在のスコープをスーパースコープから削除する。

[実行できるコンテキスト] dhcp server scope


show superscope

スーパースコープを表示する

[構文]

show superscope

[パラメータ]

なし。

[実行できるコンテキスト] dhcp server


delete superscope

スーパースコープを削除する

[構文]

delete superscope SuperscopeName

[パラメータ]

SuperscopeName

削除するスーパースコープの名前を指定する。

 [実行できるコンテキスト] dhcp server