ネットワークコマンドで管理が変わる!
第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 scope「eigyo1」コンテキストで次のように指定する。
例:set superscope eigyo 1
同様に、スコープ「eigyo2」を「eigyo」スーパースコープに参加させるには、dhcp server scope「eigyo2」コンテキストで次のように指定する。
例: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
定義されたオプションのデータの種類。次の値のいずれかを指定する。
BYTE、WORD、DWORD、STRING、IPADDRESS
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