概要  
コマンドで各種ネットワーク設定の設定や変更をするnetshコマンドのオプションの一つ。ルーティングとリモート・アクセス(RRAS)を実行するサーバー上でIP設定の追加,変更,削除ができる。また,RIPあるいはOSPFといったルーティング・プロトコルや,NATなどの用途ごとに多数のサブコンテキストが用意されている。ここでは,基本部分について解説する。なお,基本的にWindows 2000 ServerとWindows Server 2003向けのコマンドだが,一部のオプションはルーティングとリモート・アクセスが構成されていないサーバーあるいはWindows 2000 ProfessionalやWindows XPでも実行できる。

 netshコマンドのコマンド・モードとコンテキスト  

バッチ・モード:
通常のコマンドと同様に,コマンド・プロンプトの画面上から1行のコマンドを実行することで,必要な設定を実行するモード。

インタラクティブ・モード:
コマンド・プロンプト上で「netsh」と実行してから,専用のプロンプトで対話的に設定を変更するモード。必要なコンテキストに移動してから,そのコンテキストの設定を対話的に変更する。

スクリプト・モード:
コマンド・プロンプト上で「netsh exec」または「netsh -f」コマンドを使って,事前に用意したスクリプトを実行するモード。バッチ・モードに似ているが、複数の設定変更を1行のコマンドで実行できる。

コンテキストとサブコンテキスト:
netshコマンドは,広汎な設定項目に対応するために「コンテキスト」と呼ぶ設定のための名前空間をもっている。netshプログラム自身の設定をするnetshコンテキストがあり,コンテキストの配下にもコンテキストがある階層的な名前空間となっている。配下のコンテキストはサブコンテキストと呼び,Windows Server 2003 SP1の場合には以下のようなものがある。
(なし) netshプログラム自身の設定
aaaa IAS(RADIUS)サーバーの設定
bridge ネットワーク・ブリッジの設定
dhcp DHCPサーバーの設定
diag ネットワークを検査する設定
firewall Windowsファイアウォールの設定
interface ネットワーク・インタフェースの設定
ipsec IPsecの設定
ras RRASリモート・アクセスの設定
routinig RRASルーティングの設定
rpc リモート・プロシージャ・コールの設定
wins WINSサーバーの設定
winsock  Windows Socketプログラムの設定


上述したコンテキストの中のroutingの配下に,今回紹介するrouting ipなどのコンテキストが存在する階層構造になっている。さらにそのサブコンテキストとして以下のようなものがある。
autodhcp DHCPアロケータの設定
dnsproxy DNSプロキシに関するパラメータの設定
igmp マルチキャスト環境で使用されるIGMPに関する設定
nat ネットワーク・アドレス変換(NAT)に関する設定
ospf ルーティング・プロトコルのOSPFに関する設定
relay DHCPリレー・エージェントの設定
rip ルーティング・プロトコルのRIPに関する設定
routerdiscovery ルーター発見のための構成に関する設定

上位コンテキストから引き継いだコマンド:
netshでは,各コンテキストごとに実行できるコマンドが決まっており,他のコンテキストでは実行できない。しかし,インタラクティブ・モードではコンテキストの移動による不便を解消するため,例えば上位のコンテキストで実行できるコマンドのうちのいくつかは下位のコンテキストでも実行することができる。helpコマンドを実行すれば,上位から引き継がれて実行可能なコマンドと,自身のコンテキストで実行可能なコマンドの一覧が表示される。


 構文  

バッチ・モード:
netsh routing ip {set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|update サブコマンド|dump|reset|help}

または

netsh -c "routing ip" {set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|update サブコマンド|dump|reset|help}

インタラクティブ・モード:
netsh [-c "routing ip"]
routing ip
{set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|update サブコマンド|dump|reset|help}

または

netsh -a エイリアス・ファイル名

スクリプト・モード:
netsh {exec|-f} スクリプト・ファイル名

※resetコマンドはWindows 2000では利用できない
※ [-c "routing ip"]を指定した場合,インタラクティブ・モード内でのコンテキスト名指定は不要

 利用環境  
Windows 95 ×
Windows 98 ×
Windows Me ×
Windows NT 4.0 ×
Windows 2000 △
Windows XP △
Windows Server 2003 ○
※Windows 2000 ProfessionalとWindows XPでは一部のコマンドが実行可能

 netshのコマンド・オプション 
(なし)オプションをなにも指定しない場合,netshコンテキストでのインタラクティブ・モードとなる
-a エイリアス・ファイル名インタラクティブ・モードで入力するコマンド文字列を事前にエイリアス・ファイルとしてテキストで保存し,これを実行する。作業が終了するとコマンド・レベルに戻る。
-c "routing ip (コンテキスト名)"最初から特定のコンテキストを直接指定する場合に設定する。このオプションを指定しておくと,コマンド内やインタラクティブ・モード内でコンテキスト名を指定する必要がない。
{exec|-f} スクリプト・ファイル名スクリプト・ファイルを実行し,その設定内容を反映させる。スクリプト・ファイルは事前にdumpコマンドで出力できる。
?または/?netshコマンド・ヘルプと,netshコンテキストで実行可能なコマンド・ヘルプを表示する。
※筆者が確認した限りでは -r オプションでの "routing ip" コンテキストの実行は不可


 routing ipコンテキストのコマンド・オプション 
(なし)または?またはhelprouting ipコンテキスト・コマンドのヘルプを表示する
setIPルーティングの構成を設定する。以前の設定はコマンドの実行により上書きされる。なお,「set」や「set filter」などパラメータを指定しない,あるいは「?」を指定して実行すると,コマンド・レベルでのヘルプが表示される。

set filter [name=]インタフェース名 [filtertype=]{input|output|dial} [action=]{drop|forward} [fragcheck=]{enable|disable}
入力フィルタや出力フィルタを指定して,接続の許可および拒否といった動作を変更する。またインタフェースにおけるフラグメントを設定する。

set interface [name=]インタフェース名 [state=]{enable|disable}
指定したインタフェースの稼動,停止といった状態を設定する。

set loglevel [loglevel=]{none|error|warn|info}
記録するログのレベルをエラー,警告,情報のいずれかで設定する。「none」を指定すればログの記録を停止する。

set persistentroute [dest=]IPアドレス [mask=]サブネット・マスク [name=]インタフェース名 [nhop=]IPアドレス [proto=]{static|nondod} [preference=]整数値 [metric=]整数値 [view=]{unicast|multicast|both}
静的ルートを変更する。あて先のIPアドレスやサブネット・マスクを指定し,デマンド・ダイヤルアップの使用有無や優先順位(preference),メトリックおよび有効とするトラフィック(ユニキャスト,マルチキャスト,あるいは両方)を指定する。nhopでは次にホップする対象のIPアドレスを指定するが,ポイント・ツー・ポイントのインタフェース上で設定してはならない。

set preferenceforprotocol [proto=]{autostatic|local|netmgmgt|nondod|ospf|rip|static} [preflevel=]整数値
指定したルーティング・プロトコルに対する優先レベルを数値で設定する。

set rtmroute [dest=]IPアドレス [mask=]サブネット・マスク [nameorindex=]インタフェース名 [nhop=]IPアドレス [preference=]整数値 [metric=]整数値 [view=]{unicast|multicast|both}
インタフェース名または次ホップ数を指定し,ルート・テーブル・マネージャの非固定ルートを設定する。persistentrouteと同様の構文となる。

set scope [grpaddr=]IPアドレス [grpmask=]サブネット・マスク [scopename=]スコープ名
グループのIPアドレスとサブネット・マスクを指定して,マルチキャスト・スコープの名前を設定する。

add既に設定が行われている項目に対して追加で設定する。setとは違い,以前の設定を上書きしない。なお,setと同様にパラメータを指定せずに実行した場合には,コマンド・ヘルプを表示する。

add boundary [name=]インタフェース名 [grpaddr=]IPアドレス [grpmask=]サブネット・マスク
または
add boundary [name=]インタフェース名 [scopename=]マルチキャスト・スコープ名

マルチキャスト・スコープの境界をインタフェースに追加する。

add filter [name=]インタフェース名 [filtertype=]{INPUT|OUTPUT|DIAL} [srcaddr=]IPアドレス [srcmask=]サブネット・マスク [dstaddr=]IPアドレス [dstmask=]サブネット・マスク{[proto=]ANY|[proto=]{TCP|TCP-EST|UDP} [srcport=]整数値 [dstport=]整数値|[proto=]ICMP [type=]整数値[code=]整数値}
指定されたインタフェースへフィルタを追加する。フィルタの種類を入力/出力/ダイヤルから選択し,発信元とあて先のIPアドレスとサブネット・マスク,およびプロトコルの種類とポート番号(srcport,dstport)を指定する。指定したプロトコルがICMPの場合は,その種類とコードを数値で設定する。またIPアドレスとサブネット・マスクが0.0.0.0,およびプロトコルとICMPの種類(type)とコード(code)に「0」が指定された場合は,ANYとして扱われる。

add interface [name=]インタフェース名 [state=]{enable|disable}
指定したインタフェースでIP転送を有効または無効化する。

add persistentroute [dest=]IPアドレス [mask=]サブネット・マスク [name=]インタフェース名 [nhop=]IPアドレス [proto=]{static|nondod} [preference=]整数値 [metric=]整数値 [view=]{unicast|multicast|both}
指定したインタフェースに固定の静的ルートを追加する。構文はset persistentrouteと同じ。

add preferenceforprotocol [proto=]{autostatic|local|netmgmgt|nondod|ospf|rip|static} [preflevel=]整数値
ルーティング・プロトコルの優先レベルを追加する。構文はset preferenceforprotocolと同じ。

add rtmroute [dest=]IPアドレス [mask=]サブネット・マスク [nameorindex=]インタフェース(名前または) [nhop=]IPアドレス [preference=]整数値 [metric=]整数値 [view=]{unicast|multicast|both}
インタフェース名または次ホップ数を指定し,ルート・テーブル・マネージャの非固定ルートを追加する。構文はset rtmrouteと同じ。

add scope [grpaddr=]IPアドレス [grpmask=]サブネット・マスク [scopename=]スコープ名
マルチキャスト・スコープを追加する。構文はset scopeと同じ。

delete既存の設定項目を削除する。なお,パラメータを指定せずに実行した場合には,コマンド・ヘルプが表示される

delete boundary [name=]インタフェース名 [grpaddr=]IPアドレス [grpmask=]サブネット・マスク
または
delete boundary [name=]インタフェース名 [scopename=]マルチキャスト・スコープ

インタフェースからマルチキャスト・スコープの境界を削除する。構文はadd boundaryと同じ。

delete filter [name=]インタフェース名 [filtertype=]{INPUT|OUTPUT|DIAL} [srcaddr=]IPアドレス [srcmask=]サブネット・マスク [dstaddr=]IPアドレス [dstmask=]サブネット・マスク {[proto=]ANY|[proto=]{TCP|TCP-EST|UDP} [srcport=]整数値 [dstport=]整数値|[proto=]ICMP [type=]整数値 [code=]整数値}
指定したインタフェースからフィルタを削除する。構文はadd filterと同じ。

delete interface [name=]インタフェース名
指定されたインタフェースからIP転送を削除する。

delete persistentroute [dest=]IPアドレス [mask=]サブネット・マスク [name=]インタフェース名 [nhop=]IPアドレス
あて先のIPアドレスとサブネット・マスク,インタフェースを指定し,固定の静的ルートを削除する。次ポップのIPアドレスはポイント・ツー・ポイント上のインタフェースでは指定しない。

delete preferenceforprotocol [proto=]{autostatic|local|netmgmgt|nondod|ospf|rip|static}
指定したプロトコルに対する優先レベルを削除する。

delete rtmroute [dest=]IPアドレス [mask=]サブネット・マスク [nameorindex=]{インタフェース名|index} [nhop=]IPアドレス
インタフェース名または次ホップ数を指定してルートテーブルマネージャの非固定ルートを削除する。

delete scope [grpaddr=]IPアドレス [grpmask=]サブネット・マスク
または
delete scope [scopename=]スコープ名

IPアドレスとサブネット・マスク,またはスコープ名を指定してマルチキャスト・スコープを削除する。

dump現在の構成を含むスクリプトを作成する。出力結果をファイルに保存し,構成を復元する際に利用できる。
resetIPルーティングをリセットする。
show既存の構成を表示する。コマンドの後に「?」を指定して実行すると,各コマンドのヘルプが表示される。

show boundary
マルチキャスト・スコープの境界の情報を,インタフェース名(Interface),グループIPアドレス(Address),サブネット・マスク(Mask),スコープ名(Scope Name)で表示する。

show boundarystats [rr=]整数値
IPマルチキャスト境界の統計情報を,Ctrl+Cにより終了するまで「rr」の引数で指定した秒間隔で更新しながら表示する。

show filter [name=]インタフェース名
パケット・フィルタの情報を,入力フィルタ(Input),出力フィルタ(Output),デマンド・ダイヤル・フィルタ(Demand Dial),フラグメント・チェック(Frag. Check)の有効/無効,インタフェース(Interface)で表示する。

show interface [name=]インタフェース名
インタフェースの情報を表示する。名前を指定せず,すべてのインタフェースに関する情報を表示する場合は,インタフェースが有効か無効の状態(State),ループバック/内部/専用といったインタフェースの使用法(Type)とインタフェース名を表示する。また,「name」を指定し特定インタフェースの情報を表示する場合は,ユニキャスト/マルチキャスト/一般といったインタフェースの使用法(Type),インタフェース情報を識別するベンダー(Vendor),インタフェースのプロトコル情報(protocol)が表示される。

show loglevel
設定されているログ・レベルを表示する。ログを記録しない(none),エラー,警告,情報メッセージのログが記録されるかどうかを示す。

show mfe [grpaddr=]IPアドレス [grpmask=]サブネット・マスク [srcaddr=]IPアドレス [srcmask=]サブネット・マスク [type=]{active|negative|both} [rr=]整数値
マルチキャスト転送エントリ(MFE)を表示する。グループIPアドレスとサブネット・マスク,発信元IPアドレスとサブネット・マスク,MFEのうちアクティブなものとネガティブなもののどちらか,およびその両方を表示するかを「type」で,また更新間隔(秒)を「rr」で指定することができる。

show mfestats [grpaddr=]IPアドレス [grpmask=]サブネット・マスク [srcaddr=]IPアドレス [srcmask=]サブネット・マスク [type=]{active|negative|both} [stats=]all [rr=]整数値
マルチキャスト転送エントリ(MFE)の統計情報を表示する。構文はshow mfeとほぼ同じで,MFE統計情報の詳細すべてを表示するための「stats」が追加されている。また,MFEの他に着信パケット数やバイト数が表示される。

show persistentroutes [name=]インタフェース名
静的に設定された固定のルートを表示する。「netstat -r」や「route print」で表示されるような項目のほかに,どのプロトコルによりルートが追加されたか,ルートの優先順位,ユニキャストかマルチキャストか,といった情報も表示される。

show preferenceforprotocol
すべてのプロトコルと,それぞれに設定された優先レベルを表示する。

show protocol
構成されたすべての IP プロトコルを,ユニキャスト/マルチキャスト/一般といった使用法(Type),情報を識別するベンダー(Vendor),IPプロトコル情報(protocol)で表示する。

show rtmdestinations [operator=]{matching|shorterthan|longerthan} [dest=]IPアドレス [mask=]サブネット・マスク [view=]{unicast|multicast|both} [proto=]{autostatic|local|netmgmgt|nondod|ospf|rip|static}
ルーティング・テープルのあて先を表示する。「operator」で指定したあて先と一致(matching)/短いルート(shorterthan)/長いルート(logerthan)を表示するように変更できる。そのほかにもユニキャスト/マルチキャストや追加したプロトコルといった条件で表示するルートを指定できる。

show rtmroutes [operator=]{matching|shorterthan|longerthan} [dest=]IPアドレス [mask=]サブネット・マスク [view=]{unicast|multicast|both} [proto=]{autostatic|local|netmgmgt|nondod|ospf|rip|static}
ルーティング・テーブルのルートを表示する。構文はshow rtmdistinationsと同じ。

show scope
マルチキャスト・スコープを,開始IPアドレスとサブネット・マスク,スコープ名で表示する。

updateインタフェースを指定して,自動静的ルートを更新する。

update [name=]インタフェース名
指定したインタフェースの自動静的ルートを更新する。


 使用例1:HTTP以外を拒否するようにIPルーティングを設定する(クリックで詳細表示)  
netsh routing ip set filter name="ローカル エリア接続" filtertype=input action=drop
netsh routing ip add filter name="ローカル エリア接続" filtertype=input srcaddr=0.0.0.0 dstaddr=0.0.0.0 dstmask=0.0.0.0 proto=tcp srcport=0 dstport=80

 使用例2:IPルーティングの静的ルートの追加と削除をする(クリックで詳細表示)  
netsh routing ip add persistentroute dest=あて先IPアドレス mask=あて先サブネット・マスク name="ローカル エリア接続" nhop=ゲートウエイ
netsh routing ip delete persistentroute dest=あて先IPアドレス mask=あて先サブネット・マスク name="ローカル エリア接続" nhop=ゲートウエイ