ネットワークコマンドで管理が変わる!
第15回 netshでDHCPサーバーを管理しよう (その4)
今月のコマンド
set optionvalue
show optionvalue
delete optionvalue
set dnscredentials
show dnscredentials
delete dnscredentials
今回紹介するnetshサブコマンドもすべてdhcp serverコンテキストで利用できるコマンドだ。また、いずれのコマンドもWindows 2000 ServerおよびWindows Server 2003 (R2を含む) でのみ利用できる。Windows 2000 ProfessinalおよびWindows XP Professional/Home Editionでは利用できない。
---------------------------------------------------------------------------
DHCPサーバーオプションを設定/表示/削除する
set optionvalue
show optionvalue
delete optionvalue
---------------------------------------------------------------------------
>サーバーオプションを設定する
Windows DHCPサーバーは、クライアントからのIPアドレス要求の際に、DNSサーバー名などのオプション値を同時に渡すことができる。これらのオプション値はサーバーオプションまたはスコープオプションで設定できる。
「set optionvalue」コマンドはサーバーオプションを設定し、「show optionvalue」コマンドは現在設定されているサーバーオプションを表示するコマンドだ。さらに「delete optionvalue」コマンドは設定されているサーバーオプションを削除する。
これらのオプションはすべてのスコープに対して適用されるが、スコープで同じオプションが設定されている場合は、スコープオプション (スコープオプションについては後で解説する) での設定が適用される。つまり、特定のスコープでのみ適用したいオプションはスコープオプションで設定し、すべてのスコープで適用したいオプションはサーバーオプションとして設定すれば、スコープごとに設定する手間が省けるということになる。
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で設定したほうがよい。
画面1● set optionvalueコマンドでサーバーオプションを設定しshow optionvalueコマンドで設定内容を確認
表●
サーバーオプションとして設定可能なオプションの一覧
>サーバーオプションの確認と削除
設定したサーバーオプションはshow optionvalueコマンドで確認できる。show optionvalueコマンドの書式は次のとおり。
show optionvalue [{all | {user=UserName | vendor=VendorName}}]
パラメータはすべて省略可能だ (画面1)。
設定してあるサーバーオプションを削除する場合は、delete optionvalueコマンドを使う。書式は次のとおり。
delete optionvalue OptCode
[vendor=VendorClass] [user=UserClass]
やはりvendorおよびuserパラメータは省略できる (画面2)。
画面2● delete optionvalueコマンドでサーバーオプションを削除し、show optionvalueコマンドで結果を確認
---------------------------------------------------------------------------
DHCPサーバーによるDNS動的更新の資格情報を設定/表示/削除する
set dnscredentials
show dnscredentials
delete dnscredentials
---------------------------------------------------------------------------
>DNS動的更新の資格情報を変更する
小規模ネットワーク環境では、DHCPサーバーをドメインコントローラと同一マシンで実行したい場合があるだろう。ドメインコントローラでもDHCPサーバーを稼動させることは可能だが、推奨はされない。
その理由は、デフォルトでは、DHCPサーバーはホストしているコンピュータアカウントを資格情報として動作するため、ドメインコントローラ上でDHCPサーバーを稼動すると、資格情報としてドメインコントローラのコンピュータアカウントを使用する。しかし、ドメインコントローラはレプリケーションを行うActive Directory統合ゾーンへの完全なアクセス権を持っているので、もしDHCPサーバーがクライアントの代わりにDNSレコードを動的に登録するように構成されていると、Active Directory統合ゾーンに格納されているすべてのレコードを更新することができる。そのため、クライアントの設定によってはレコードが勝手に上書きされてしまう危険がある。悪意のある者がクライアントPCを乗っ取れば、簡単にActive Directoryを操作できてしまうわけで、セキュリティ的には非常に危険だ。
これを防ぐには、ドメインコントローラ上でDHCPサーバーを稼動させないのが一番だが、どうしてもドメインコントローラ上でDHCPサーバーを稼動させたい場合は、DHCPサーバーのDNS動的更新に使用する資格情報を別のアカウントに変更すればよい。
DNS動的更新に使用する資格情報を変更するためのコマンドが「set dnscredentials」コマンドだ。また、現在の資格情報を表示するコマンドが「show dnscredentials」コマンドであり、設定されている資格情報を削除するコマンドが「delete dnscredentials」コマンドになる。
Windows Server 2003 (R2を含む) の場合は、これらのコマンドと同じことがGUI画面でもできるが、Windows 2000 Serverの場合は、GUIでの設定ができないので、netshコマンドが唯一の方法になる。
set dnscredentialsコマンドの構文は次のとおり。
set dnscredentials UserName Domain Password
パラメータPasswordに「*」を指定した場合はパスワードを入力するプロンプトが表示され、ここでの入力は画面に表示されない (画面3)。
画面3● set dnscredentialsコマンドでDNS動的更新の資格情報を変更しshow dnscredentialsコマンドでその結果を確認
>DNS動的更新の資格情報を確認/削除する
現在設定されているDNS動的更新の資格情報を確認するには、show dnscredentialsコマンドを使う。パラメータはない。
show dnscredentials
また、現在設定されているDNS動的更新の資格情報を削除するには、delete dnscredentialsコマンドを使う。構文は次のとおり。
delete dnscredentials DhcpForceFlag
パラメータDhcpForceFlagに「DHCPFULLFORCE」と指定すると、資格情報が削除される。それ以外を指定すると削除されない。
画面4● delete dnscredentialsコマンドでDNS動的更新の資格情報を削除しshow dnscredentialsコマンドでその結果を確認
netshサブコマンドリファレンス
netshサブコマンドは、実行できるコンテキストが異なる。そのため、ダイレクトコマンドモードの場合、-cオプションによって実行可能なコンテキストを指定する必要がある。シェルモードの場合は、実行できるコンテキストに移動してからコマンドを実行するか、コンテキスト名をコマンドといっしょに指定して実行する必要がある。
set optionvalue
DHCPサーバーのオプションを設定する
[構文]
set optionvalue OptCode DataType [user=UserName] [vendor=VendorName] OptValue
[パラメータ]
OptCode
定義されたオプションの一意のコード。
DataType
定義されたオプションのデータの種類です。次の値のいずれか。
BYTE、WORD、DWORD、STRING、IPADDRESS
user
このコマンドが適用されるユーザークラスの名前を指定する。省略した場合は既定のユーザークラスが使われる。
vendor
コマンドが適用されるベンダクラスの名前を指定する。省略した場合はDHCPスタンダードオプションクラスが使われる。
OptValue
OptCodeで識別されるオプションの値を指定する。DataTypeの形式で入力する。
入力例
set optionvalue 003 IPADDRESS 10.1.1.1 10.1.1.2 10.1.1.3
コード003 (ルーター) でデータの種類がIPADDRESSのオプションの値を10.1.1.1、10.1.1.2、10.1.1.3に設定する。
set optionvalue 003 IPADDRESS vendor=Vendor1 10.1.1.1 10.1.1.2 10.1.1.3
同じような操作をベンダクラスVendor1に対して行う。この例では、Vendor1クラスは既にtype 003 (コード 003) でデータの種類がIPADDRESS として定義されている必要がある。
[実行できるコンテキスト] dhcp server
show optionvalue
DHCPサーバーで定義されているオプションを表示する
[構文]
show optionvalue [{all | {user=UserName | vendor=VendorName}}]
[パラメータ]
all
サーバーで設定されているオプションを表示する。これはユーザーとベンダクラス両方を含む。
user
サーバーで設定されているユーザークラスで利用可能なオプションをすべて表示する。省略した場合は既定のユーザークラスが使われる。
vendor
サーバーで設定されているベンダクラスで利用可能なプションをすべて表示する。省略した場合は既定のベンダクラスが使われる。
[実行できるコンテキスト] dhcp server
delete optionvalue
指定されたオプションをDHCPサーバーから削除する
[構文]
delete optionvalue OptCode [vendor=VendorClass] [user=UserClass]
[パラメータ]
OptCode
削除するオプションのオプションコード。
user
オプションが関連付けられているユーザークラスの名前。指定する場合は "user=" タグが必要。デフォルトはSet userclassで設定されたグローバルユーザーの名前。
vendor
オプションが関連付けられているベンダクラスの名前。指定する場合は "vendor=" タグが必要。デフォルトはSet vendorclassで設定されたグローバルベンダの名前。
入力例
delete optionvalue 18
このコマンドはオプションコードが018のオプションを削除する。
[実行できるコンテキスト] dhcp server
set dnscredentials
DNS動的更新に使用する資格情報を設定する
[構文]
set dnscredentials UserName Domain Password
[パラメータ]
UserName
DNS動的更新に使用されるユーザー名。
Domain
上のユーザー名が属するドメイン。
Password
上ユーザーのパスワード。
入力例
set dnscredentials MyUserName MyDomain MyPassWord
DNS動的更新に使用する資格情報を指定した値に設定する。
set dnscredentials MyUserName MyDomain *
上の例と同じだが、パスワード入力画面が表示される。
[実行できるコンテキスト] dhcp server
show dnscredentials
DNS動的更新に使用する資格情報を表示する
[構文]
show dnscredentials
[パラメータ]
なし
[実行できるコンテキスト] dhcp server
delete dnscredentials
すべてのDNS動的更新に使用する資格情報を削除する
[構文]
delete dnscredentials DhcpForceFlag
[パラメータ]
DhcpForceFlag
このパラメータとして “DHCPFULLFORCE” を入力した場合は資格情報が削除される。それ以外を入力した場合は操作が中止される。
[実行できるコンテキスト] dhcp server