「使ってみる」というか、まだ使おうとして調査中の話。
netsh は Windows 2000, XP, 2003 Server 等で利用可能なコマンド。
ネットワーキングに関する設定、例えばインターフェイス設定やパケットフィルタリング、ポート転送までコマンドラインで設定可能(対話式/設定ファイルによる一括設定の両方とも可能)
去年の今頃に客先で結合テストをしてたとき、オラクルの接続エラーとか netsh を使ったバッチを作って切り替えながらテストしてた。特定のアドレスだけを対象にしたフィルタリングができるから、Googleで調べ物しながら平行してテストできたりで便利だった。
ただし設定がシビアというか、多分自分の知識が足りてないというのが原因なんだろうけど、きっちり設定しないと思った通りに動いてくれない。で、いま「netsh routing ip add filter name="ローカル エリア接続" までは分かるんだけど、続きはどうだったっけ?」なんて思い出しながら調べてるところ。help や ? でヘルプドキュメントは表示されるんだけど、その通りだとうまく動かない記憶があって、実際まだヘルプ通りの設定でフィルタリングできてない^^;
ちなみに現在のIPフィルタリング設定を表示したい時は、netsh routing ip dump と入力すればOK。
厳選じゃないけど適当に検索したサイトを幾つか。
@IT - Security Tips > Windowsをリブートせずにパケットフィルタリング
おっと、これみて大事なことを忘れてたのに気付いた。
RRAS(サービス)が起動してないとフィルタリングできないんだった^^;;;
自分のPCを確認したらサービス起動してなかったし><w
IPsecとパケットフィルタリング
SaKuRa WORKS - Works [Windows2000実験室:IPアドレスお手軽変更術]
netsh portproxy をつかって、TCP ポートリレーをする方法
@IT - Windowsファイアウォールの管理 - netshによる設定
****
WPE(Winsock Packet Editor)はまだ使った経験もないから、もっと簡単にw
これは実はゲームのチート行為で使われるツールらしい。このツールを知ったのも、2chのRyzmeスレッドでチートの話題が出てたとき。これでパケットを改ざんすれば、BadをPerfectに変換することも簡単とのこと。
取り敢えずWPEってツールを覚えておくためにダウンロードだけ済ませておいて実行まではしてなかったんだけど、今日仕事でお客さんの担当者から、「通信モジュールの改造部分、テストどうしましょうかねぇ。さすがにこれだけ変えるとなると、きっちりテストし直さないとねぇ。。。」って相談を受けて思い出したw
てことで、またまたGoogleさんのお世話になり、検索、ダウンロードして動かしてみた。
ターゲットとなるアプリケーションを指定 → フィルタ設定でパケットの照合パターンを指定 → 合致した場合、パケットのどこをどう変更するかを指定
みたいな流れになる。もっと機能は多いかもしれないけど、上記は今のところの理解。これもテスト対象のアプリケーション外部で電文の特定部分を変更できるってことで、使えそうだね。
ファイル置き場 チートツールという性質上、ダウンロード後は必ずウィルスチェック!
****
追記: netshの設定ができた :)
例1. フィルタリング設定
netsh routing ip set filter "ローカル エリア接続" output forward
netsh routing ip add filter "ローカル エリア接続" output 発信元IP-Addr 255.255.255.255 到達先IP-Addr 255.255.255.255 tcp 0 80
解説)
まずデフォルト設定(というよりポリシーと呼ぶらしい)として、インターフェイスからみて送信方向(output)に流れるパケットのうち、フィルタリング条件に合致しないものは全て転送(forward)するよう設定。
次に、発信元IPアドレスの任意のTCPポート(0)からの送信(output)パケットのうち、到達先IPアドレスのTCP80番ポートが宛先に指定されているパケットを破棄(デフォルト設定forwardの反対動作となる)するようなフィルタを追加。
ちなみに自分は発信元IPに127.0.0.1(ループバックIP)を指定して「フィルタリングできねぇ~」って悩んでたw ちゃんと使用するインターフェイスに割り当てられているIPアドレスを指定すること。
あと今回の場合は発信元が自分のPC側だと分かり切っているから、発信元IPアドレスとサブネットマスクには0.0.0.0(任意)を指定する方が楽だし使い回しが利くような気もする。
例2. フィルタリング解除
netsh routing ip delete filter "ローカル エリア接続" output 発信元IP-Addr 255.255.255.255 到達先IP-Addr 255.255.255.255 tcp 0 80