2008年9月26日金曜日

cronとrun-partsを使って、任意の順番でスクリプトを実行する

Linux (確認はCentOS4と5) をインストールしたら、 "/etc/crontab" に最初からrun-partsの実行が登録してある。
※もしも入ってない場合は、特殊なケースかと思うけど、「crontab」 パッケージに入っているので入れます。
 

crontab はこんな感じ。


# run-parts
01 * * * * root run-parts /etc/cron.hourly
59 4 * * * root run-parts /etc/cron.daily
5 4 * * 0 root run-parts /etc/cron.weekly
9 4 1 * * root run-parts /etc/cron.monthly

 
 

run-parts ってなにさ


引数でディレクトリを指定すると、ディレクトリ内の実行可能ファイルを名前順に実行する コマンドです。
run-parts /etc/cron.daily」 と指定があったら、 "/etc/cron.daily/"以下の実行対象を全部ですが一つずつ実行してくれます。
サブディレクトリは無視、あと、ファイル名も使える文字が決まってたはず、"英数-(ハイフン)_(アンダーバー)"あたりだったかな。
 
この名前順という性質は利用できる。
 
 

運用専用ディレクトリを作る


さて、run-parts に食わせる運用的なスクリプトの入れ物を作ります。
大体下記のような構成のツリーを作りますね、共通場所とログ場所は好みですけど作っといたほうがあとあとメンテナンスしやすいと思う。
work/ (cronの実行ユーザが読めればどこでもいい)
├config/ -----★共通設定ファイル置き場、"."(ドットコマンド)でスクリプトから読み込む
├logfiles/ -----★共通のログフォルダ

├dailyjob/
-----★日次で実行したいスクリプト入れ
└weeklyjob/ -----★週次で実行したいスクリプト入れ

 
 

dailyjob には何をいれるの?


使い方の一例としてはこんな感じ。

dailyjob/ 中身の例は下記ファイルたち
├00_timestamp -----★ログファイルに時刻書き込み
├05_serverstats -----★サーバのステータス出力とか
│10_stopapp -----★バックアップしたいアプリを止める
├20_appbackup -----★アプリデータのバックアップ
├30_startapp -----★止めていたアプリをスタート
└40_logbackup -----★ログなどのバックアップ

 

このケースで想定しているのは
「バックアップ前に動いてるアプリは止める必要がある、アプリは影響ある部分のバックアップが終わったらすぐ再開して、影響がない部分はゆっくりバックアップすることにしたい。また、バックアップはサーバの情報取得とかぶると重いからいや。」
という状況。(欲張りかも…)
 
ファイル名を数字で始めているので、実行される順番をコントロールできる。
あとはそれぞれのスクリプトをしっかり作っておけばOK、別々にCronだと、実行時間がかぶったりしたときの調整が大変なので、私は最近こんな感じで設定。
 
後から追加("05_" なんかはそう) できるようにちょっと数字は飛び飛びで設定しておくのもよいかもしれない。
"00_timestamp" は趣味で。
 
 

config/ ディレクトリに共通で読ませるファイルを置く


これも趣味だけど、ここに置くファイルにログファイルのパスとか使いまわせるファンクションを定義したファイルを置いておき、全部のスクリプトから "."(ドットコマンド) で読ませるようにする目的で使います。
 
もっと分かりやすいやり方もあるんでしょうけど、自分がメンテする分には今のところこの構成が楽かな。
 
ほか、run-partsは全部のスクリプトに共通の引数を渡すことができるので、例えば実行されるスクリプト側で 2 を渡せばデバッグ出力ONとか、1 もらわないと何もせず終了するなども共通で設定しておくといいかも。

Firefox3を自動更新したらアドオンが無効になったので、互換性チェックを一時 的に無効にする

Firefoxの 3.0.2 のリリースがあったので更新チェックをかけた。
3.0.3 がすぐに出たけど同じ方法で keyconfig は使えた。

 

それはいいんだけど、ボサッとしてたら大事な大事なアドオン、「keyconfig」が "3.0.2では対応してない" と、無効になってしまった。
正確に言うと更新前の確認で "keyconfig無効になりますよー" と教えてもらったけど、ちょっと我慢すればkeyconfigの更新があるだろうと軽くUpdate。
 

FireFox の再起動後、、、
Donutライクなファンクションキーでのタブ移動※が無かったら30秒と堪えられなかったので この keyconfig を有効にする手段を探す。

※ [Ctrl + (TAB|Shift + TAB)] or [Ctrl + (PageUP|Down)] にも同様の機能の割当てがあるけど、しっくりこない。

 


アドレス欄にabout:configを入力して、適当に "addon" とか "check" で絞り込む。
extensions.checkCompatibility というのがヒット。キー名をGoogleって調べたらこれっぽいね。
キーがないケースもある模様、その場合は 真偽値(ブーリアン)で作れとある。うちにはあったが何かのアドオンが作ってくれたのかな?
 

という事で、extensions.checkCompatibility の値をダブルクリックして「false」に変更。めでたしめでたし。
 

この手は自己責任で。
誤動作しそうなアドオンは開発者さんからのバージョンアップ(対応)を待つことを推奨、どーしてもいるやつだけ救済する目的で使いましょう。危ないのはとりあえず手動で無効に設定。

2008年9月24日水曜日

Googleが10周年で記念サイトオープンだそうな

Google10周年とのことで、記念サイトで歴史が一望できる。

Google 10th Birthday
http://www.google.com/tenthbirthday/


 

当時はYahoo! のようなディレクトリ型検索しか使ってなかった。
昔のロゴをみて思い出したけど、確か Google を見て「GeoCities がまた何かくだらんこと始めた」と思った記憶がある。
 

出だしの G しか合ってないやんか自分。

ネットワークビジュアライザでRIP、CCNAとかの勉強で

CCNAやらテクニカルエンジニア(ネットワーク) (※次年度からネットワークスペシャリスト) を受けようかなと思っているのにネットワークをやってない。
まあそれなりに知ってるしと思って学習サイト ping-t のCCNA問題をやったら 動的ルーティングがぼろぼろ だった、
そうだね、やってないし。いつもスタティックだったな。
 

と言うことで Network Notepadを使ってネットワーク図という記事で作ったネットワーク図で、RIP設定のお勉強をしてみる。
 

テストに使ったのは
会社保有の「CCNAバーチャルラボ Network Visualizer 5.0」

 
 

ネットワーク図を引いて、必要な設定を洗い出そう


[caption id="attachment_928" align="alignnone" width="300" caption="画像:今回のネットワーク図"]画像:今回のネットワーク図[/caption]
単純なネットワークだ。今回はルータ同士をFastEthernetで繋ぐ。
 

各ルータの設定要件は…
    ■ルータA
  • インターフェイス0 に 192.168.30.1/24

  • インターフェイス1 に 192.168.10.1/24

  • RIPで192.168.10.0 の情報を流す



    ■ルータB
  • インターフェイス0 に 192.168.30.2/24

  • インターフェイス1 に 192.168.20.1/24

  • RIPで192.168.20.0 の情報を流す



こんなもんか、ちなみにルータはCiscoの2600が使える。
 
 

ルータに設定を突っこもう_とりあえず全部のインターフェースまで



ルータAの設定、斜体はレスポンス
ルータの名前を「RouterA」、イーサネット0と1にIPアドレスを振る。
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z
 
Router(config)#hostname RouterA
 
RouterA(config)#interface fastethernet 0/0
RouterA(config-if)#ip address 192.168.30.1 255.255.255.0
RouterA(config-if)#no shutdown
xx:xx:xx %LINK-3-UPDOWN: Interface Fastethernet0/0, changed state to up
xx:xx:xx %LINEPROTO-5-UPDOWN: Line protocol on Interface Fastethernet0/0, changed state to up
RouterA(config-if)#exit
 
RouterA(config)#interface fastethernet 0/1
RouterA(config-if)#ip address 192.168.10.1 255.255.255.0
RouterA(config-if)#no shutdown
xx:xx:xx %LINK-3-UPDOWN: Interface Fastethernet0/1, changed state to up
xx:xx:xx %LINEPROTO-5-UPDOWN: Line protocol on Interface Fastethernet0/1, changed state to up

RouterA(config-if)#exit

 

次はルータBの設定、斜体はレスポンス
ルータの名前を「RouterB」、イーサネット0と1にIPアドレスを振る。
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z

Router(config)#hostname RouterA

RouterB(config)#interface fastethernet 0/0
RouterB(config-if)#ip address 192.168.30.2 255.255.255.0
RouterB(config-if)#no shutdown
xx:xx:xx %LINK-3-UPDOWN: Interface Fastethernet0/0, changed state to up
xx:xx:xx %LINEPROTO-5-UPDOWN: Line protocol on Interface Fastethernet0/0, changed state to up

RouterB(config-if)#exit

RouterB(config)#interface fastethernet 0/1
RouterB(config-if)#ip address 192.168.20.1 255.255.255.0
RouterB(config-if)#no shutdown
xx:xx:xx %LINK-3-UPDOWN: Interface Fastethernet0/1, changed state to up
xx:xx:xx %LINEPROTO-5-UPDOWN: Line protocol on Interface Fastethernet0/1, changed state to up

RouterB(config-if)#exit

 
 

で、この時点でのホストA(192.168.10.2)からの到達製をチェック。
◎→ルータAのインターフェイス 192.168.10.1 当然
◎→ルータAのインターフェイス 192.168.30.1 まあ順当
×→ルータBのインターフェイス 192.168.30.2 ルータBは帰りのルート(192.168.10.0宛)が分からない
×→ルータBのインターフェイス 192.168.20.1 ルータAは行き先のルート(192.168.20.0宛)が分からない
×→ホストBのインターフェイス 192.168.20.2 同上
 

ちなみにルータAのルーティングテーブルを表示するとこうなっている。
RouterA#show ip route
 
Gateway of last resort is not set
C 192.168.30.0/24 is directly connected, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1

 

RIPを設定してみる


手始めにルータBからRIPのアナウンスをさせる。
RouterB>enable
RouterB#configure terminal
RouterB(config)#router rip
RouterB(config-router)#network 192.168.20.0

 
そうするとRIPのパケットをブロードキャストし始める。
RouterB#debug ip rip
RIP protocol debugging is on
 
*9 23 23:16:58.221: RIP: sending v1 update to 255.255.255.255 via FastEthernet0/0 (192.168.30.2)
*9 23 23:16:58.221: RIP: build update entries
*9 23 23:16:58.221: subnet 192.168.20.0 metric 1
*9 23 23:16:58.221: RIP: sending v1 update to 255.255.255.255 via FastEthernet0/1 (192.168.20.1)
*9 23 23:16:58.221: RIP: build update entries - supressing null update

インターフェイス0 からは 192.168.20.0 の情報を、インターフェイス1からは何も送ってない。
この時点でルータAには192.168.20.0の宛先情報が届いているのが パケットモニタ で確認できるんだけど、このままでは受け入れずに破棄されてしまう。
 
 

で、ルータAにも同様にRIPを設定したら、ルータAのルーティングテーブルはこうなる。
RouterA#show ip route
 
Gateway of last resort is not set
R 192.168.20.0 [120/1] via 192.168.30.2, 00:00:20, FastEthernet0/0
C 192.168.30.0/24 is directly connected, FastEthernet0/0
C 192.168.10.0/24 is directly connected, FastEthernet0/1

 
ルータBはこう
RouterB#show ip route
 
Gateway of last resort is not set
R 192.168.10.0 [120/1] via 192.168.30.1, 00:00:17, FastEthernet0/0
C 192.168.20.0/24 is directly connected, FastEthernet0/1
C 192.168.30.0/24 is directly connected, FastEthernet0/0

 

Cはコネクテッド:接続しているネットワーク、RはRIPによって学習されたネットワーク、設定できている模様。
 
 

到達性を確認してみる


さて、ローカルだけのスタティックな設定では問題が2つあった。
ルータAは行き先のルート(192.168.20.0宛)が分からない
ルータBは帰りのルート(192.168.10.0宛)が分からない
 

これらはルーティングテーブルを見る限り、RIPによって解決された。
と言うことでホストAからの到達性を再度確認してみる。
 
◎→ルータAのインターフェイス 192.168.10.1 当然
◎→ルータAのインターフェイス 192.168.30.1 まあ順当
◎→ルータBのインターフェイス 192.168.30.2 ルータBは帰りのルート(192.168.10.0宛)をRIPによって学習した
◎→ルータBのインターフェイス 192.168.20.1 ルータAは行き先のルート(192.168.20.0宛)をRIPによって学習した
◎→ホストBのインターフェイス 192.168.20.2 同上
 
ホストAから登場するすべてのIPアドレスにPingが飛ぶのを確認した、オールグリーン。
次はRIPの要素を整理したい。そしてOSPFだな、とりあえずシングルサイトで。

2008年9月23日火曜日

なんとなくWindowsでC言語プログラミング_(2)

「なんとなくPシリーズ」タグを作って続行。タイトルは 続 → 新 → … と続けたかったがやめておく。
一応コンセプトとしてはC言語を勉強してLinuxカーネルソースに迫ろうとしているのだが、果たして。
 
 

前回のなんとなくWindowsでC言語プログラミングで思い出したものがある。
こんにちはマイコン」、1982年!の本。次は折角なのでそれっぽいことをやってみよう。
変数のお勉強でたしかこんなコード、N-88 Basic だっけ?
10 INPUT "ナマエ ヲ ニュウリョク";A$
20 PRINT A$;"ノ アホー"
(30 goto 20)
※3行目gotoもしたかったけど、今回大分話がそれていくのでパス。
 
キーボードから文字列の入力を促し、変数に代入。それを標準出力から表示する単純なプログラムだ。
これの下りは面白かった記憶がある。
 

ついでなのでbatで再現


[sourcecode language='bash']
@echo off
set /P name="ナマエ ヲ ニュウリョク"
:10
echo %name% ノ アホー
goto 10
[/sourcecode]
簡単だが、やはりこれでは展開がない。
 
 

それではCで再現


main(void)とコメントを覚えた。
[sourcecode language='c']
#include

int main(void) {
char name[8]; /*メモリ8バイト確保!*/
printf("ナマエ ヲ ニュウリョク");
scanf("%s",name); /*入力をnameのポインタのとこに並べる*/
printf("%sノ アホー\n",name); /*nameの中身を出力*/
return 0;
}

[/sourcecode]

収穫は変数の宣言とscanfのおかげでポインタがなんとなく分かった事。

実行してみる。
>inputter.exe
ナマエ ヲ ニュウリョクarashi
arashiノ アホー

上々。
 
char宣言で8バイトメモリを確保、アドレスの情報をポインタとしてnameに格納しているというわけかいな。
 

実験タイム1


ほなここで実験してみよう、変数2つ宣言したら並ぶの?
[sourcecode language='c']
#include

int main(void) {
char name[8]; /*メモリ8バイト確保!*/
char name1[8]; /*同様にname1を宣言する*/
printf("ナマエ ヲ ニュウリョク");
scanf("%s",name);
printf("%sサンハ テンサイ\n",name);
printf("%x\n",&name); /*nameのアドレス*/
printf("%x\n",&name1); /*name1のアドレス*/
return 0;
}

[/sourcecode]


>inputter.exe
ナマエ ヲ ニュウリョクsatoru
satoruサンハ テンサイ
12ff64
12ff6c


えーと、8バイトだからー。 12ff64 から 12ff6b までで8バイト、次は 12ff6c から、、合ってる。並んでるね。
 

実験タイム2


入出力で実験、入力してない変数を出力するとか。
[sourcecode language='c']
#include

int main(void) {
char name[8];
char name1[8];
printf("ナマエ ヲ ニュウリョク");
scanf("%s",name);
printf("%sサンハ テンサイ\n",name);
printf("%sノ アホー\n",name1); /*入力してないname1を出力する*/
return 0;
}
[/sourcecode]

実行する、まずは普通の入力
>inputter.exe
ナマエ ヲ ニュウリョクippata
ippataサンハ テンサイ
3n@ノ アホー

3n@ てなんじゃらほい。確保したメモリに元からあった情報と言うことらしいけど、まあ0で埋めるなりの初期化すれば問題ないことが分かった。
 

でも次の入力。20文字入れてみる。
>inputter.exe
ナマエ ヲ ニュウリョク123456789a123456789b
123456789a123456789bサンハ テンサイ
9a123456789bノ アホー

ああああぁ、は、はみ出したーー
scanf()に脆弱性が、っていうのはテクニカルエンジニアで習ったけどこういうことか、ものすごく納得。
とはいえ、狙ったコードの実行は至難の技にも見えるんだけど、どうなんだろう。なんか手法が確立されてるんだろうか。
 
 

そして脱線へ


これはどうやって動いているんだろうと思ったのでちょっと追う。
WindowsのCコンパイラは "/Fa" というオプションをつけたらアセンブリリストのファイルを作ってくれる。
で、作ってみた。ちょっと省略してこんな感じ。
_main PROC
; File c:\cprog\inputter.c
; Line 3
push ebp
mov ebp, esp
sub esp, 20 ; 00000014H
mov eax, DWORD PTR ___security_cookie
xor eax, ebp
mov DWORD PTR __$ArrayPad$[ebp], eax
; Line 6
push OFFSET $SG2471
call _printf
add esp, 4
; Line 7
lea eax, DWORD PTR _name$[ebp]
push eax
push OFFSET $SG2472
call _scanf
add esp, 8
; Line 8
lea ecx, DWORD PTR _name$[ebp]
push ecx
push OFFSET $SG2473
call _printf
add esp, 8
; Line 9
lea edx, DWORD PTR _name1$[ebp]
push edx
push OFFSET $SG2474
call _printf
add esp, 8
; Line 10
xor eax, eax
; Line 11
mov ecx, DWORD PTR __$ArrayPad$[ebp]
xor ecx, ebp
call @__security_check_cookie@4
mov esp, ebp
pop ebp
ret 0
_main ENDP
_TEXT ENDS
END

 

うーん。。まさにこれは全部書いてあるんだろうけど、次回だな。
 
 

しかし カーネル への道のはずなんだが。。。やっぱり遠回りなのでは。
そうだコンテキストスイッチというのはこれを切り替えているんだろうなと言うことでまとめよう。

2008年9月22日月曜日

なんとなくWindowsでC言語プログラミング

Linuxのカーネルコードを読みたいと思ったんだが、家にLinuxないしC読めない。
じゃあどうしよう。
 
 

まずMicrosoftがCの開発環境をタダで配っているので自宅のWindows XP SP2にインストールしてみる。

Microsoft Visual C++ 2008 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx


 

うむ、インストール問題無し。
 
では "hello.c" としてc言語のファイルを適当なテキストエディタで書く。
 

標準入出力の関数色々はいったヘッダファイル "stdio .h" を取り込んでー
正常終了に0を返す main 関数を一個書いて名前をつけて保存、"hello.c"
[sourcecode language='c']
# include

int main() {
printf("Hello Work!\n");
return 0;
}
[/sourcecode]

 

付属のCコンパイラらしきツール "cl.exe" でコンパイルしよう。
>cl hello.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.


hello.c
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.


/out:hello.exe
hello.obj

 

よし、 "hello.exe" が完成したぞ、早速実行だ。
>hello.exe
Hello Work!

 

ようし問題なし。
 
 

あとはシステムコールを把握するために C言語の勉強しながら "stdio.h" を読み解いてー
Windowsのカーネルソースを想像して、Linuxに当てはめてー
POSIXに思いを馳せて行けばよいのかしら。。。
 

!? 。これはもしやすごく遠回りしているのではなかろうか?

2008年9月21日日曜日

Microsoft Network Monitor 3.2 がリリースされているじゃないか

よい機能をつけてきた模様。WireShrkで十分?まあそう言わないで。
 

開発さんのブログ:Network Monitor 3.2 has arrived!
http://blogs.technet.com/netmon/archive/2008/09/17/network-monitor-3-2-has-arrived.aspx
 
ダウンロードは:Microsoft Network Monitor 3.2
http://www.microsoft.com/downloads/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&DisplayLang=en


 

更新の目玉はアプリ別のフィルタ標準搭載、開発さんのブログでは画像付きで紹介されてます。
Process Tracking: Now you can identify rogue applications sending network data! View all the processes on your machine generating network traffic (process name and PID). Use the conversation tree to view frames associated with each process.
引用:開発さんのブログより

 

ほかはAPIを実装したとかPCAP形式サポートとか。
 
 

WireShark (WinPCAP)入れたくないサーバとかではMS製のモニタ使うので機能アップは地味に嬉しいかも。

2008年9月19日金曜日

アプライアンスとCSRF(クロスサイトリクエストフォージェリ)

適当なアプライアンスのWEBインターフェイスを触っていると、WEB管理画面から色々できる事に関心する。システム関連の設定から再起動・シャットダウンまで可能で便利。
 
 

某アプライアンスを触っているとき、シャットダウンの許可確認ページが簡素な作りなことが気になった。
ソースを覗いてみると簡単なフォームだったので、試しに外部サイトにリンクを貼って、シャットダウンページのFormと同じリクエストがいくようにしてクリックしてみる。
 
結果、見事にシャットダウンした※。
あーこれCSRF(クロスサイトリクエストフォージェリ)とか言う奴だなと。リファラも何も見ちゃ居ない。
 

※CSRFなので既にそのブラウザで管理画面にログイン済み(Cookie有効状態)という条件です
 
 

しかしこれをとっ捕まえて「CSRFできるからさあ直せ!」と言うかとするとまた別の話。
不特定多数が利用することを前提としたWEBのASPサービスならまだしも、アプライアンスのUIにどこまで求めるかというのも難しい。
 
使ったらすぐログオフしたり、管理系は普段とは違うブラウザ使ったり、予防策を張れないでもない。
 
 

ただ、ログ収集系の機械とかだと、「HTMLのインジェクション発覚→管理者が画面開いただけでシステム操作が可能。
というシナリオがあるんですよね。
 

最近はどんな入出力にも、常にHTMLタグとSQLを突っ込もうとする輩がいるので、開発する人は気をつけていきましょう。

マウス嫌いシリーズ(1)_「ALT+スペース」@Windows

社内の小ネタ勉強会向けで考えたんだけど、ブログの記事にしてしまおう。
 

マウス触るの面倒くさいので何でもキーボード入力でやってしまいたいというシリーズ物、マウスなしでやるほうが早いことも多いし、にわかに玄人っぽい。
 

ということで初回は「ALT+スペース」
 

何ができるかというとアプリケーションの左上のアイコンをクリックしたら出てくるメニューを呼び出せる。
[caption id="attachment_822" align="alignnone" width="333" caption="画像:アプリのアイコンクリックメニュー"]画像:アプリのアイコンクリック[/caption]
ちなみに閉じてフォーカスを元に戻したい時はESCキーを2回。
 

ウィンドウの最大化⇔元に戻す、または最小化


「ALT+スペース」 そしておもむろに X キーでウィンドウが最大化、最大化状態からは 「ALT+スペース → Rキー」 で元に戻る。
カーソルキーで選んでエンターキーでもOK。
 









画像:最大化はXキー最大化はXキー
画像:元に戻すはRキー元に戻すはRキー

 

これだけでも結構助かる、コンマ数秒のプロセスでウインドウの最大化が完了するため、マウスに手を持っていく無駄が省ける。
 
 

ウィンドウの移動


「ALT+スペース」のメニューから M キーでウィンドウは移動モードになる。これもカーソルキーで選んでエンターキーでもOK。
ウィンドウの移動モードになったらカーソルキーの上下左右で好きな位置まで動かして、エンターキーで場所を確定しよう。
 





画像:ウインドウ移動縁撮りされてカーソルの形状が変わる

 

すこーしずらしたい時は多い、意識して使うとよいです。
 
 

ウィンドウのサイズ変更


キーボード操作でサイズ変更? 直感的には判らないかもしれないけど、操作が2ステップに分かれていることを理解すれば後は簡単。
「ALT+スペース」のメニューから S キーでウィンドウは移動モードになる。これもカーソルキーで選んでエンターキーでもOK。
 

さてウィンドウの移動モードを自在に使うにはステップの理解が必要、下記に挙げた順で間違いない。

  1. 上下、または左右のどの辺を動かすか決める

  2. 最初のキー入力は、動かしたい辺がある方向を入力
    →ウインドウの下側をつかんで狭くしたい場合は、まず下キーを押せということ。これでまず動かしたい辺が決定される、エンターキーなどは不要。

  3. 選択された辺を動かす


上下/左右はそれぞれ同時に指定できる、例えば下と右の辺を動かすとしたら、ウインドウの右下にカーソルが移動して操作できることを知らせてくれる。
 










画像:ウインドウサイズの変更縁撮りされてカーソルの形状が変わる
辺を指定したら、操作対象の辺の上にカーソルが飛ぶ
画像:役立つケースこんなとき便利

 
 

手始めに「ALT+スペース」の魅力について語ってみた。
次は「Shift + F10」くらいにしようかな。
 
少々マニアックな気もするが、ほぼマウスフリーな操作による生産性向上を目指すシリーズなので普通はマウスだろうというところを中心にやっていく予定。

XML WEBサービスはKeepAlive不要なのでOFFに

XML-RPC、XML WEBサービス、何やら色々と呼び方があってどう呼べばよいのかよく分からないけど、とにかくHTTPサーバ上のWEBサービスで、クエリ一丁レス一丁のやり取りについて。
HTTPベースのSOAPとかも含まれますね。
 

IISだと HTTP1.1の Keep-Alive がデフォルトで有効なのですけど、大概のXML-WEBサービスは一期一会、一撃離脱のやり取りをするので不要なのではないかと思う。
サイト単位で切替ができるので無効にしてしまいましょう。
 
 

まずはIIS6で。
[caption id="attachment_817" align="alignnone" width="500" caption="画像:IIS6での設定"]画像:IIS6での設定[/caption]
 

IIS7 だと、HTTP 応答ヘッダーの設定から。結構分かりにくい所にある。
[caption id="attachment_815" align="alignnone" width="401" caption="画像:IIS7での設定"]画像:IIS7での設定[/caption]
 
 

場合によっては普通のサイトでもOFFで丁度よいくらいという話もどこかで見た、最近Apacheはデフォルトで無効ですよね。

2008年9月18日木曜日

Network Notepadを使ってネットワーク図

ネットワーク図書くのにはVisioが便利。でも家に帰るとVisioなかったり、ステンシル使った絵をネットに公開してよいのか迷ったり。
そしてPowerPointはコネクタがくねくねして困る上、どっちにしろ自宅のPCには入ってない。
 

だが、「Visioが無いとNW図がかけないよー」と言うのもかっこ悪いので、フリーで配布されているツール”Network Notepad” を使えるようになっておこうと思った。
 

Network Notepad Homepage
http://www.networknotepad.com/index.htm



まあ Visio 少しは使えるし、弘法大師は筆を何とやら と言うので速攻使いこなせるだろうと思ったら、、、全然アカンかった。まだまだ修行が足りない模様。
 
 

だいぶ躓いたけども、しばらく触ってみて簡単なコツをつかめばなんとか図を引くことができるようになることが分かった。
自分が思ったコツを列挙しておく。
 

  • [file]→[setup]から表示を日本語にできる
     
  • 全体の移動は右ドラッグ
    まずコレを意識、最初から知っているだけで大きく違う

  •  
  • 機能の選択ボタンはトグル
    オブジェクト貼り付けたら、貼り付けトグルでクリックが全部貼り付けになる、
    貼り付け解除をすればよいと気づくまでパニクる

  •  
  • オブジェクトの選択もトグル
    複数選択が楽だけど、解除するときに迷う

  •  
  • オブジェクトの移動は物もテキストもShiftキー+左ドラッグ
    テキストの簡単移動は見栄えの調整しやすさに直結

  •  
  • テキストの上右クリックでフォント変更

  •  
  • リンクはオブジェクトを右クリックして目標まで引く
    目標の上で小さい四角が出たら、クリックすればリンクとして線を引ける、
    空白をクリックしたら曲がり角が作成できる

 
これだけつかめば図を書くためには困らないと思う。
あとは 日本語ヘルプページ を読めばOK。
 
 

出来上がったサンプルがこんな感じ。
 
[caption id="attachment_807" align="alignnone" width="300" caption="画像:簡単なネットワーク図"]画像:簡単なネットワーク図[/caption]
 

これでネットワーク試験関連の勉強記事が書きやすくなった。上の図はそのままRIPの練習記事に使いまわすため作成。
最近ブログ更新にかまけて試験勉強サボってので、たまに両立っぽい記事を持ってきたい。

2008年9月17日水曜日

IIS7用のWEBDAV拡張はDownloadCenterから追加する_その他も

機能追加の一覧にWEBDAVがないと思ったら、あとから追加リリースしてるのね。
 
追記:FTP7もかよ!
 

MSブログの記事:WebDAV Extension for Windows Server 2008 RTM is released!
http://blogs.msdn.com/robert_mcmurray/archive/2008/03/12/webdav-extension-for-windows-server-2008-rtm-is-released.aspx
 
ダウンロード先:Microsoft WebDAV Extension for IIS 7.0 (x86)@IIS Download Center
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1621


 

何気に IISのポータルサイト は重要なんですよね。
 
 

追記:FTPの新バージョン (FTPSとかに対応)も追加で入れないといけないのカー。しかも古いFTP自分で消さないといけない。
WindowsServer2008 の IIS7 って... 未完成部分多すぎ? クライアント証明書のマッピングも、IIS6では GUI あったのに IIS7では WMIかコンフィグ直接編集しろってなってる。
…評価版だからかな。

Microsoft FTP Publishing Service for IIS 7.0 (x86)
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1619

Apacheのアクセス許可にKerberos認証を使う

メモエントリ
Apache2.0系でしかうまくいかない、サブドメインの使いかた不明。
 

少々昔に設定したけど、書いておかないとしたことすら忘れそう。
Apacheで作ったWEBサーバの認証をKerberos認証にするというやり方。まあWindowsの ActiveDirectory に投げるというだけなんですが、既存の認証基盤をつかえておトク。

確か当時はここを参考にした。
個人サイト:ActiveDirectory+Linuxによる部署内サーバ構築
http://rina.jpn.ph/~rance/server/index.html
Microsoft:Providing Active Directory authentication via Kerberos protocol in Apache
http://support.microsoft.com/?scid=kb%3Ben-us%3B555092&x=15&y=13


Apacheの追加モジュール


設定したのはApache2.0.54です、 mod_auth_kerb をyumで入れました。
 

httpd の conf.d の下に "auth_kerb.conf" ファイルができる、有効な中身はこれだけ。
LoadModule auth_kerb_module modules/mod_auth_kerb.so
 

ActiveDirectory側の準備


不要
 
 

Kerberosクライアントの設定


"/etc/krb5.conf" を編集する。なかったら「krb5-workstation」が入ってないので入れておく。
例は ActiveDirectory 側のドメイン名が "example.local" の環境を対象とした場合、該当のディレクティブの太字箇所を書き換える。
途中のサーバ名は環境に合わせて、1台でもOKだけど名前解決はできるようにリゾルバを設定しておく必要がある。


[libdefaults]
default_realm = EXAMPLE.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
 
[realms]
ICRAFT.LOCAL = {
kdc = server01.example.local:88
kdc = server02.example.local:88
admin_server = server01.example.local:749
}
 
[domain_realm]
.example.local = EXAMPLE.LOCAL
example.local = EXAMPLE.LOCAL



レルムのところだけで十分かもしれない。
 
 

Kerberos認証用、keytabファイルの作成


場所はApacheが読めるところに "auth_kerb.keytab" ファイルを作る。 例えば"/usr/lib/httpd/modules/auth_kerb.keytab" のような感じ、中身は一行。

HTTP/web01.example.local@EXAMPLE.LOCAL
前半はApacheを入れたサーバのFQDN. 使っている環境はグローバル環境にあるのでドメインがne.jp. なんだけどそれでもいい、実は何でもいいのかもしれない。ファイルいらないという噂も。。
 
 

Kerberos認証できるか試してみる


ActiveDirectory上のユーザとパスワードで認証できるか試してみる、kinit ユーティリティを使う。
# kinit testuser
Password for testuser@EXAMPLE.LOCAL:[パスワードを入力]

何も起こらなければ成功、チケットが発行されているはず。
一応klistで確かめられる。
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: testuser@EXAMPLE.LOCAL



有効期限とかが出てくるので、それを見ると認証チケットができているようなことが確認できる。
 
 

Apacheのコンフィグ


Basic認証などを書く所でこうする。
AuthType Kerberos
AuthName "Kerberos authentication"
Krb5Keytab modules/auth_kerb.keytab
KrbVerifyKDC off
KrbMethodNegotiate off
KrbSaveCredentials off
require valid-user

これでWEBサーバにアクセスしたら、設定したディレクトリで "Kerberos authentication" の入力ダイアログが出て、ActiveDirectoryに存在する アカウント/パスワード で認証してくれる。
 
もちろんSSLは使っておこう。
 
 
 


設定自体はすぐなんだけど、ActiveDirectory上のユーザは全部認証できるのがいまいち。
応急処置としては、USER環境変数をとっ捕まえて REWRITE すればいいのかな。

2008年9月16日火曜日

CygwinでX端末っぽく、XアプリケーションをWindows上で

普段Linuxでサーバを作るとき、 色々と面倒くさいので X-Winow System はインストールしない。
でもちょっと使いたいときがある。例えば Xen の管理画面とか。
 

そこで、X上で動作するアプリケーションは Xサーバさえあれば動くんだろうということから、普段使うWindowsの端末にXサーバ立てておけばいいんじゃないのというお話。
Cygwin と Openssh を使います。
 


X端末ってサーバ機能なのに端末っていうからややこしい。。。
 
 

下準備、使われる側のssh設定、X11Forwardingを有効にする


外のXサーバ使ってよいという設定を Xアプリケーションがインストールされている側 で行う。
/etc/ssh/sshd_config (※インストール先は各自適当に)
X11Forwarding yes
これでOK、SSHはリロードしておく。
 
 

Cygwinを入れておく


ほとんどデフォルトでいいので割愛。
たださっき確認したら、デフォルトだと OpenSSHとOpenSSLが外れていたのでそこだけ注意。
 
 

CygwinのターミナルからXオプションでSSH接続


あとはCygwinのXを起動して、X(ラージエックス) でssh接続。
※もちろんLinux同士でもOKなので、XありLinux → XなしLinuxでも同じことが可能。
[caption id="attachment_767" align="alignnone" width="492" caption="画像:CygwinのXコンソールから 「-X」 でSSH"]画像:CygwinのXコンソールから" -X" でSSH[/caption]
 

これだけで、接続先のXアプリケーションを起動したら、Xサーバのデフォルトディスプレイとして Cygwin を使ってくれる。
 
 

Xアプリケーションのサンプル


サンプルとして、FireFoxとXENのGUI管理コンソールを手元に引っ張ってみる。
Windowsと分かるようにデスクトップ丸ごとアップ。
 

[caption id="attachment_774" align="alignnone" width="300" caption="画像:リモート側のFireFoxをローカルに"]画像:リモート側のFireFoxをローカルに[/caption]
「名前をつけて保存」、とかするとリモート側のファイルシステムが出てくる。CPUやらのリソースもリモート持ち。
 

[caption id="attachment_772" align="alignnone" width="300" caption="画像:リモート側のXEN管理画面をローカルに"]画像:リモート側のXEN管理画面をローカルに[/caption]
 

画像縮小しすぎたかもしれないけどまあ分かりますよね?
背景がメモ帳なのはデスクトップが汚いからです・・

2008年9月12日金曜日

IE7は長時間利用で必ずクラッシュ?WindowsXPとWindwsServer2003のKB

9/10に妙なKBが公開されている、KB956625。
 

Windows XP または Windows Server 2003 を実行しているコンピュータで Internet Explorer 7 の長時間にわたって実行後、Internet Explorer が不安定になったまたはがクラッシュします。(機械翻訳タイトル)
http://support.microsoft.com/kb/956625
原題:After you run Internet Explorer 7 for a long time on a computer that is running Windows XP or Windows Server 2003, Internet Explorer becomes unstable or crashes


 

「Internet Explorer 7 は長いこと使うとクラッシュしますよ。」って事かいな。Vistaや2008は大丈夫で、あくまで XP と 2003 が対象。
 
症状に心当たりがある場合は、上記のリンクから修正ファイルを貰って適用することができるようです。
 
 

個人的には長く立ち上げてたらどのブラウザも落ちる(プラグインやら使ってるとですけど)と思っているので、今頃何を言い出すのよという感覚だけども、配布元に改めてクラッシュしますよと言われるとちょっと妙な感覚。
 

次の月例アップデートに混ぜてくるだろうから放っておいてもいいかもしれない。うちの XP は IE7 入れてないし。
 
 
 


patchmanagement.orgが情報元でした。

2008年9月11日木曜日

stunnel で何でもSSL経由にしたらいい

TCPでポートをリッスンしてるサーバプログラムは
  -例えばTCP/25でメール送信を受け付けている SMTP、TCP/110 のPOP3
stunnelを使って、クライアントからサーバまでの通信をSSLで暗号化、stunnel から ローカルのTCP/25やTCP/110 に通信を投げれば下記のように通信途中が暗号化される。
 
[PC] →→ SSMTP(SMTPS) →→【[Stunnel]→→SMTP(Sが取れる)→→[SMTPサーバ]】
【】がサーバ内部
 
 
Stunnel がTLS/SSLの暗号・複合のところをやって、あとはサーバ内でアプリケーションプロトコルを使った通信をする、また暗号化して戻してくれる。
 

今や大概サーバアプリ側でTLS/SSLを備えているけど、コンパイルしなおしとか面倒な作業が居る場合は Stunnel でやってしまう。

Stunnel配布サイト
http://www.stunnel.org


 
 

簡単に使い方のメモ
 

Stunnel用の証明書作成


まずはSSL通信に必要な 証明書セット→pemファイルが必要。
既存のものがあればそれを使うといいけど、証明書セットがない場合は自作する。
過去記事:OpenSSLでお手軽に自己証明書(1)_make一発で作ればいい。"/etc/stunnel/pem/stunnel.pem" とでもして保管する。
 

コマンドラインで実行


「pem」 「SSLで待ち受けたいポート」 「本来のポート」 がそろえばサーバのSSL化は完了する。
 

465番ポートで SMTP を受けたい
# stunnel -p /etc/stunnel/pem -d 465 -r 25 &

 

995番ポートで POP3 を受けたい
# stunnel -p /etc/stunnel/pem -d 995 -r 110 &

 

上記実行したら、メーラとかで SSMTP(SMTPS)、POP3S の設定を試してみる。証明書の文句があるかもしれないが証明書の有効性を無視するように設定すればメールの送受信が行える。SSL化・暗号化はこんなもんで実装可能。
 
しかしこの例だと&(アンパサンド)でバックグラウンド実行してるだけだから、制御端末落としたら(ログアウトとか)止まっちゃう。
メールサーバのログには 全部ローカルホストからの通信が記録されていて、何がなんだか見づらくて仕方ない。
stunnel のコンフィグを書いて、デーモン起動でもいいけど、xinetd を経由するのがいいかも。
 
 

xinetd 経由にする


Stunnel側の準備


xinetd用のコンフィグを用意する、"/etc/stunnel/" にでも。
あとこの例では "/var/log/stunnel/" を事前に作っておく必要がある。
 
pop3s.stunnel.conf
#pop3s to local 110
cert = /etc/stunnel/secure.stunnel.pem
# debug = 7
output = /var/log/stunnel/stunnel_pop3s.log
connect = 110


smtps.stunnel.conf
#smtps to local 25
cert = /etc/stunnel/secure.stunnel.pem
# debug = 7
output = /var/log/stunnel/stunnel_smtps.log
connect = 25

debug の項目は調査するときなどにコメントアウトをはずして様子を見るため。普段は普通のログでいい。
SMTP は 587 でやったりもする。
 

xinetdの設定


まず "/etc/service" にpop3s と smtps のポート割り当てが書いてなかったら追記しておく、最後尾でもどこでもOK。
 
で、 "/etc/xinetd.d/" 以下にファイル作成

pop3s
service pop3s
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/stunnel
server_args = /etc/stunnel/pop3s.stunnel.conf
log_on_success += USERID
log_on_failure += USERID
}

smtps
service smtps
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/stunnel
server_args = /etc/stunnel/smtps.stunnel.conf
log_on_success += USERID
log_on_failure += USERID
}

ファイル作成が終わったら xinetd をリロードする。
メーラなどで確認すればSSMTP(SMTPS)、POP3S で送受信できるのが分かり、出力を指定したログファイルにちゃんと外部との通信ログが記録されていることが確認できるはず。
通信できなかったら エラーログを確認したり、hosts.allow とかTCPラッパーの設定を疑う。
 

ついでに logrotate もしておく


"/etclogrotate.d/" 下の適当なファイルを stunnel の名前でコピー
ローテ対象ログ;"/var/log/stunnel/*log"
リロードプロセス:"xinetd"
 
compress や世代管理は好みで。

hosts.allow、hosts.deny を使うサーバプログラムを見分ける

メモエントリ
 

hosts.allow、 hosts.denyはTCPラッパーの設定ファイル。サーバプログラムによってこれを使ったり使わなかったりする。
要はバイナリがTCPラッパーのライブラリにリンクしてれば使ってるだろうという見分け方をする。
 

netstat コマンドでサーバプログラムのバイナリ名を調べる


netstat はpオプションでポートをリッスンしているプログラムを表示してくれる。(Windowsのnetstatだったらbオプション)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
(中略)
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2327/vsftpd
(以下略)

丁度いいのがいた、この vsftpd はどうなのか調べる。
 
 

ldd コマンドでリンクしているライブラリを一覧表示


libwrapが居るかな?
# ldd `which vsftpd`
libssl.so.4 => /lib/libssl.so.4 (0x0088d000)
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00b60000)
(以下略)

いた。
このvsftpd は hosts.allow、 hosts.deny を使うので、hosts.deny にALL 指定とかしてるサーバでは、どこかに allow を明示する必要があると。
バイナリにパスが通ってなかったら ldd に渡す引数でフルパス指定が必要。
 

ソースからコンパイルするならコンフィグヘルプを見ると、 libwrap 使うか選べるようになってる事がある。

2008年9月10日水曜日

Google Chromeアップデート、暫くちゃんとチェックしないといけないと思うこ の頃

Google Analytcs の解析結果を見ると "Google Chrome" が居てる。
私は起動してみただけだけど、身内とか結構試しているんじゃないだろうか。
 

でも来てるバージョン多くね?
0.2.149.27
0.2.149.29
0.2.151.0
 

確認してみると、最初のリリース "0.2.149.27"、脆弱性の修正版が今朝(9/9)リリース "0.2.149.29" という具合。 "0.2.151.0" はUser-Agent にイタズラ? それともGの中の人か…
 
と思ったら、Portable Chrome 0.2.151.0 とかいう奴なのかもしれない。USBで使えるChromeとな。窓の杜にて紹介発見
 
 

ちょっとそれたけど、出たばかりのブラウザは私はよー使わん。特にGoogleは設定を適切にしておかないと、デフォルトで情報をダラダラ横流しする余計なお世話機能をつける、よく言えばオープンな空気歓迎なイメージがある。
 

まぁそれでも使うというのも分かるので、使うなら下記をチェックして脆弱性対策バージョンのリリースはしっかり追うべき。特に暫くは「脆弱性発見⇒修正リリース」の流れは山ほどあるでしょうね。私は当分使う気はないけどなんとなく追っかける。
 

Google chrome ヘルプサイトのトラブルシューティング一覧
http://groups.google.com/group/google-chrome-help-troubleshooting/topics
 
その中の記事:Version 149.29 released!
http://groups.google.com/group/google-chrome-help-troubleshooting/browse_thread/thread/f9798ac4cffc1733


 

普通のニュースサイト追っかければ十分かもしれないが、まあエラー情報とかもトラブルジューティングフォーラムに載っていると言うことで。
 

Google Chrome 公式

2008年9月9日火曜日

イベントログを詳細付きでCSVに出力、ツール追加なし@WindowsServer

イベントログをゆっくり見ようと思ったら、CSV→Excelとかにしたくなる。
しかし標準のイベントビュアー付属のファイル出力機能を使っても、スカスカなものが出来上がる。はっきり言って使い物にならない。
こんなときLogParserがやっぱり便利なんだけど、入れてないサーバもある。
人様のサーバだったりすると勝手に入れるのはアカンし、よい場合でもLogParser落として入れてパス通して… といちいちやるのも結構面倒、急いでいるときはなおさら。
 
 

ってことで、"eventquery.vbs":リンク/TechNet の使い方をメモ。
あまり使わないのでいつも使い方を忘れて何度も日時で引っかかる。このツールでは「年/月/日」ではなくて「月/日/年」で指定するんだぞ自分よ。あと一日の始まりは「12:00AM」だからよろしく。
 
 

?オプションで起動してヘルプを出す
>cscript %systemroot%\system32\eventquery.vbs /?

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.


EVENTQUERY.vbs [/S システム [/U ユーザー名 [/P パスワード]]] [/V] [/FI フィルタ]
[/FO 形式] [/R 範囲] [/NH] [/L ログ名 | *]

説明:
EVENTQUERY.vbs スクリプトにより、管理者は 1 つ以上のイベント
ログ中のイベントとイベントのプロパティを一覧表示できます。

パラメータ一覧:
/S サーバー 接続先のサーバーを指定します。

/U [ドメイン\]ユーザー コマンドが実行されるユーザー
のコンテキストを指定します。

/P パスワード 指定のユーザー コンテキストの
パスワードを指定します。

/V 詳細情報を表示します。出力時に詳細情報を
画面に表示するように指定します。


/FI フィルタ クエリによりフィルタして取り込むまたは
除外するイベントの種類を指定します。

/FO 形式 出力を表示する形式を指定します。
有効な形式は "TABLE"、"LIST" および
"CSV" です。

/R 範囲 一覧表示するイベントの範囲を指定します。
有効な値:
'N' - 最近の N 個のイベントを一覧表示します。
'-N' - 最古の N 個のイベントを一覧表示します。
'N1-N2' - N1 から N2 のイベントを一覧表示します。

/NH "列ヘッダー" が出力に表示されないように指定
します。
"TABLE" および "CSV" の形式にのみ有効です。

/L ログ名 照会するログを指定します。

/? このヘルプ/使用法を表示します。

有効なフィルタ 使用できる演算子 有効な値
------------- ------------------ ------------
DATETIME eq,ne,ge,le,gt,lt MM/dd/yy(yyyy),hh:mm:ssAM(/PM)
TYPE eq,ne SUCCESS, ERROR, INFORMATION,
WARNING, SUCCESSAUDIT,
FAILUREAUDIT
ID eq,ne,ge,le,gt,lt 負でない整数(0 - 65535)
USER eq,ne 文字列
COMPUTER eq,ne 文字列
SOURCE eq,ne 文字列
CATEGORY eq,ne 文字列

注意: フィルタ "DATETIME" は "開始日- 終了日" のように指定可能です。
この形式では "eq" 演算子のみ利用可能です。

例:
EVENTQUERY.vbs
EVENTQUERY.vbs /L system
EVENTQUERY.vbs /S system /U user /P password /V /L *
EVENTQUERY.vbs /R 10 /L Application /NH
EVENTQUERY.vbs /R -10 /FO LIST /L Security
EVENTQUERY.vbs /R 5-10 /L "DNS Server"
EVENTQUERY.vbs /FI "Type eq Error" /L Application
EVENTQUERY.vbs /L Application
/FI "Datetime eq 08/15/02,03:15:00AM-08/15/02,03:15:00PM"
EVENTQUERY.vbs /FI "Datetime gt 07/04/02,04:27:00PM"
/FI "Id gt 700" /FI "Type eq warning" /L System
EVENTQUERY.vbs /FI "Type eq error OR Id gt 1000 "

 

特に難しい使い方はしない、冒頭の日時の指定さえ迷わなければ問題ない。
とりあえず今日(2008年9/9)のイベントログを表示してみる。
コマンドプロンプトから、
>cscript %systemroot%\system32\eventquery.vbs /FI "Datetime ge 09/09/2008,12:00:00AM"

これで今日記録されたイベントログだけ出力される、これだけだと詳細は出ないしフォーマットはCSVではないけど。
eventquery.vbs は System32 においてあるので、cscriptから立ち上げるためフルパスで指定してます。
 
 

イベントログの詳細を含めてCSVにしたい場合


>cscript //nologo %systemroot%\system32\eventquery.vbs /FI "Datetime gt 09/09/2008,12:00:00AM" /V /FO CSV

"/V" で詳細込み、"/FO CSV" でCSVフォーマット指定と。後はこれをリダイレクトでファイルに落とせばOK。
"/FI" はフィルタ。条件を複数指定したいときは "/FI 条件1 and 条件2" と書いてもいいし、 "/FI 条件1 /FI 条件2" としてもOKみたい。or は前者でしか使えないかも、オプション複数は and だった。
 
 


追記:
前は上記の内容で 年/月/日 の指定を MM/DD/YY で書いていたが、Wshの仕様でYYが2桁だと正確な年にならない、詳しくはコメントで。
指摘を貰ったので本文修正しました。





 



 
しかし、過去記事を並べてみて思う。

  1. WindowsバッチファイルでYYYYMMDD で日付を文字列にして条件指定とファイル名に使う

  2. この記事の "eventquery.vbs" でイベントログを1日分ダンプする。

  3. Forfilesコマンドで古いログを自動で削除 する


アラ、これは便利なものができたかもしれない。ログローテーションバッチ。
普段使ってるのはVBScriptで書いてるけど、この流れならソラで書ける。
セキュリティ認証とかのため、とりあえずでよいからログの保管、というポリシーが必要な場合に片手間で仕込めますね。
 
 

丸々1日分のログをとる場合、日付が変わってからVBScriptなどで前日の文字列作成するのが普通なのかもしれないしそんなに手間でもないが、バッチでも次の方法でいけるかな?
 
タスクスケジューラで「毎日23:59」にバッチ開始、日付文字列を変数に格納してログファイル名やらをまず作成。
eventqueryの直前に、リソースキットだったかサポートツールだったかについてくる、
sleep 60」 で。
 

2008年9月7日日曜日

うちのXPがいつの間にかAAAAレコードを問い合わせるようになった

その時は WireShark を起動したままFireFoxでネットを見ていた、よくある話です。
 

ふとwiresharkをDNSの通信だけ表示するようにしたら、FireFoxでWEBサイトを見るときに、
「AAAAリソースレコード問い合わせ→「Server Fail」(またはCNAME)」
というプロセスをいちいち踏んでから、改めてAを問い合わせて目的のWEBサーバにアクセスしている事に気付いた。
これではDNSサーバに負担がかかる(下記資料リンクを参照)じゃないの。

参考資料:IPv6/IPv4 TCP フォールバックと IPv6 DNS クエリ 現状と今後
http://www.nttv6.net/200512-fallback.pdf

 

あれ?何で?と思いNICのプロパティでIPv6プロトコルの状態を見てみると、インストールはされているが無効になってる。
そういえばちょっと用があってインストールして、用が済んだので無効にした、という覚えがある。
 

じゃあ何でFireFoxはAAAAを問い合わせるんだろうと思い、「どういうことよFireFox」という気分で、何をトチ狂ったかFireFoxのソースを取りに行った。
後から思うと調べる順番がおかしいが、ちょっとソースも見てみたかったので仕方ない。
 
 

さて、プログラムも読めないのにソースを展開、調査してみる。
きっとIPv6の有効状況を調査して、AAAAトライ → A なロジックがあるに違いない。無効にしているのに何故かそっちに行っているに違いない、と思った。(冤罪ですよ念のため)
 
ふむ…
"mozilla\netwerk\dns\src\nsHostResolver.cpp"ファイルの
"nsHostResolver::ResolveHost" あたりが怪しい…
 
……
(ノ-Д-)ノΞ┻┻ < 読めんわー!
 
 
 
 

気を取り直してIE6を立ち上げると、こいつもAAAAから聞く。
ああ、もうOSのリゾルバがそうなってるんだな。。。とやっと気づく。
 

Microsoftで情報を探すと、"The Cable guy"に気になる記事。

  1. The Cable Guy – 2006 年 5 月 Windows Vista で IPv6 を構成する
    http://www.microsoft.com/japan/technet/community/columns/cableguy/cg0506.mspx


 

関連の箇所を引用する。
Windows XP とは異なり、Windows Vista の IPv6 はアンストールできません。しかし、次の操作の 1 つを行うことにより、Windows Vista の IPv6 を無効にすることができます。
 
●[Connections and Adapters] フォルダで、すべての接続およびアダプタのプロパティを取得し、[この接続は次の項目を使用します] の下の [Internet Protocol version 6 (TCP/IPv6) component] のとなりのチェックボックスを外します。この方法は LAN インターフェースの IPv6 を無効にしますが、トンネル インターフェースまたは IPv6 ループバック インターフェースの IPv6 は無効にしません。
(略)
●次の 0xFF に設定されたレジストリ値 (DWORD タイプ) を追加します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
この方法はすべての LAN インターフェース、接続およびトンネル インターフェースの IPv6 を無効にしますが、IPv6 ループバック インターフェースは無効にしません。このレジストリ値を有効にするためには、コンピュータを再起動する必要があります。

 

あー…
IPv6はインストールしてしまったらNICのバインドを外しても、ループバックが有効だからIPv6のアドレスもまだ持ってるのか、これは迂闊。
何のことはなく、IPv6が有効だからDNSの問い合わせでまずAAAAをとろうとしていたことが判明。
 
 

冒頭の資料(3年前!)ではないけど、この一連の 一人相撲 調査でIPv6対応を推進していかなくてはいかんと思った。
がんばれ「IPv6普及・高度化推進協議会!」共存でいいから。

2008年9月6日土曜日

Active Directory Application Mode についてどうでもいい疑問

Active Directory Application Modeって言うのがあるんですが。
 

Windows Server 2003 Active Directory Application Mode 日本語版
http://www.microsoft.com/japan/windowsserver2003/adam/default.mspx


 

Active Directory Application Mode (ADAM) はシステム サービスとしてではなく、ユーザー サービスとして走る Lightweight Directory Access Protocol (LDAP) のディレクトリ サービスです。
引用:Windows Server 2003 Active Directory Application Mode 日本語版

 

分かる。Windowsで動くLDAP、ADの実績から言ってレプリケーションとか安定しそうですよね。
とりあえずはBecky!用にでもアドレス帳あたり作ってみようかと思うんですが、ちょっと疑問。
 
普段のアレは何モードなんだろう。。Active Directory 本気モード?

2008年9月5日金曜日

ネットワーク機器の設定に3CDaemonが便利です

ネットワーク機器メーカの有名どころ 3com が配布している3CDaemonが地味に便利。
 
何に使うかと言うと、
3CDaemon vers 2.0 rev 10 - a TFTP, FTP, Syslog server and TFTP client for Win32
http://support.3com.com/software/utilities_for_windows_32_bit.htm

 

TFTP、SYSLOGとFTPがセットになってとてもおトクなツール。
これまで別々のソフト(TFTPD,Kiwi Syslog Daemon,FilezillaまたはIIS)で使っていたが、先日某アプライアンスメーカの技術者の方がこのツールを使っていたのを見て、早速使ってみた。
 

このツール一つあれば、ルータとTFTPでファイルの受け渡し、sysylog飛ばして挙動を見つつコンフィグ調整ができる、なにより設定が超シンプル。
本体だけだとログがすぐ流れてしまうし、syslogでないと詳細出さない機器もある。これは暫く必携ツールの一つにしておく。
各機能は本当にシンプルだけど、ネットワーク機器相手なら必要十分。他で必要な凝った設定は前述のソフトを使ってやればいい。
 

ただデフォルトで全部のサーバが有効なのは気に入らない、起動時にOFFでソフトが立ち上がるように設定を変更しておいたほうがよいですね。
 
 

FTPはちゃんと使ってないけど、anonymous が使えるから便利そうだ。

Linuxサーバ作業中にWindowsファイルサーバを見に行く

Linuxサーバで作業中、ファイルを他から転送する1000の方法のうちの一つ、
smbclient を使ってWindows(またはSamba)の共有フォルダに繋げる。」 をメモ。
 

smbclient が入ってない場合は、samba-clientパッケージに含まれているのでyumなどで入れてしまう。
例えば人の端末を借りていて、scpとかでこちらから送信するといった端末側の装備に依存する手段がすぐ用意出来ない場合に使えてよい。
 
 


ドメインが「icraft.local」、ユーザアカウントが "sawano" だったら、 "icraft" をワークグループに指定してSambaのクライアントで共有に繋ぐ。
共有サーバの情報はIPでもいいしNetBIOS名でもOK。※CIFSがあるので
下記のようにすれば共有フォルダに繋がって、 smb: のプロンプトが出ます。
 
$ smbclient //[IPかNETBIOS名]/[共有名] -U sawano -W icraft
Password:
 
smb: \>

[]のところは適宜おきかえ、サーバ「sv001」の「Share」というフォルダなら、パスのところは "//sv001/share" になりますね。
 
 

繋がったら後はFTPの要領、使えるコマンドは"?(はてな)"入力で一覧が出る。
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
md mget mkdir more mput
newer open posix posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
!

 

GET と PUT だけできれば問題ない、あとはls、cd。

ついでに ! を使うとローカルPCへの操作になります、
> ls だと 共有サーバ側のファイル一覧
> !ls だと ローカル側で作業中のディレクトリ内ファイルリスト、GETしたらここに落ちるし、ここのファイルをPUTできる。

2008年9月4日木曜日

分散ファイルシステム2つを比べてみる

関西レンタルサーバ会関連の方にHadoopというのを教えていただいた。
えらく感動したので、分散ファイルシステム(Distributed File System:以下DFS)について自分の理解を含めて記事に。
 


DFS、基本は「名前空間管理機構+実ファイル格納場所」


DFSは仮想的なディレクトリツリーを管理して、実ファイルの場所を知っている"名前空間管理サーバ"と、実際のファイルデータを格納する"実データサーバ"から構成されている。
※呼び方は一般的を目指した適当です、実データのほうはソフトによって ターゲットサーバ とか チャンクサーバ とか呼ばれます。
 
クライアントはファイルのパスを "名前空間管理サーバ" に問い合わせ、実際のファイルデータ格納先にデータを取得しにいくという動き。
 

DNSの名前解決や仮想メモリのマッピングがよく似ている。それどころか単一HDD(FilrSystem)にファイルを保管するときもポインタと実データという組み合わせがほとんど。
基本は特に変わってなく、むしろデータ扱いのお手本のような動作をしている、そんなDFSのメリットは拡張性と耐障害性。
 
HDD一つならファイルがどこにあるかと言う情報は一つ、実データの場所も一つ。しかもそれらは1箇所にまとまっていて、手違いで洗濯機に放り込んだら復活は厳しいでしょう。
 
それをディレクトリの構造だけ知ってるサーバと、データだけ持ってるサーバに分けてみる。
ディレクトリの構造は単純な情報、小さなメタデータなので複数のサーバで共有しておける。そして各ディレクトリについて保管先のサーバ情報が必要なのだが、複数もってもよいわけで。
「AAと言うディレクトリはサーバ1号と3号にある」としておけばDFSは両方にデータを書くし、使う側もどれかを適当に選択して使う。
これならサーバが一台くらい火を噴いても、ファイルシステムはびくともしない。
 
 

DFSをまとめると、
ツリーは一つ、でもぶら下がっているデータが複数の場所に格納してあって、コピーもあちこち保管されてるからどれ使ってもOK、少しくらいならぶっ壊れてもOK。という仕組みだ。
クライアントからはいつまでも単一のツリーで変わらないが、保管先を増やせば容量が増える、レプリケーション先を増やせば耐障害性があがる、過去の様々な問題をクリアするべく考えられている。
 
 

WindowsServer2003(R2)以降のDFS


初めて触ったDFS、 ActiveDirectory(以下:AD) スゴー と思った。
分散だけなら一応ADなくてもできるけど、レプリケーションはAD必須だった気がする。
 
特徴として、見た目が既存の共有ファイルシステムと変わらない、名前空間の管理にADを使えば管理も楽ちん。
ツリーの分散はディレクトリ単位で行う、レプリケーションもディレクトリ単位だけど、レプリカされるディレクトリは同時に書くのではなく、更新があったら差分を転送するだけなのでパフォーマンスはよい。

ちゃんと知りたかったら下記とか見たほうがいいです
参考/@IT:強化された分散ファイル・システムDFS

 
 

以前ファイルサーバの移行をする必要があったときに、いかにシームレスにやるか考えた結果利用したのですが、まぁ殆どほったらかし。
ファイルが2重化されるまで待って新しいサーバ(DFS仮想パス)を案内、マルチマスタのレプリケーションなので、いつまでも古いほうが使われてデータの整合性が取れなくなるとか心配もなく、ファイルサーバ更改のアナウンスが浸透するまでまた暫くほったらかし。
ほとぼり冷めたら古いほうをDFSから切り離して移行完了と。古いサーバもしばらく撤去しなかったのでそのままレプリケーションをしてファイルの冗長性を確保。なんと素敵な移行計画でしたでしょうか。

 
ただ私の設定詰めやらネットワーク環境の把握が甘いのか、Windows以外のクライアントではどうもきっちりとDFSの名前空間が使えない点で困った。
サーバに直接接続できる共有パス(UNCとか)を使えば名前空間関係ないので普通に利用できるし、直接ターゲット側をいじってもレプリケーションはできるから気にしないでいいんですが。
 
 

印象としてはADを使った社内ネットワークインフラと親和性が高い、レプリケーションは時間帯で帯域幅を制限できるし、マスタは中央だけどパフォーマンス向上のためVPNで繋いだ事業所にレプリカを設置など、工夫次第でとても便利に使えそうだ。
 
あと重要なのが名前空間がぶっ壊れた場合、元がWindowsの普通のフォルダなので直接見ればファイルはちゃんと残っている。この辺があるのでそこそこ気軽に導入できるでしょう。
 
 

GFS、HDFSに見られるDFS


再度書くけど、関西レンタルサーバ会関連の方にHadoopというのを教えていただいた。
 
GFSは "Google File System" 、HDFSは "Hadoop Fire System"で、Googleの基盤を支えるGFSの仕様を参考にオープンソースでHDFSが作られたらしい。
 

株式会社 Preferred Infrastructureさんの解析発表 ⇒ と解析資料
CodeZineの構築記事
業務の待ち時間に上記リンクを見た瞬間、実際にCentOS5上にHDFSを作ってみた(興味を煽られたため作らざるを得なかった)、ファイルシステムそのものを形成するという仕様にとても驚いた。
 
特徴、名前空間が仮想なら、実データも領域が仮想化された空間に格納される。通常のファイルシステムと全然違うので、クライアントからのファイル操作もAPIを通じて行われる。
例えばls をしたければ付属のファイル操作コマンドを "-ls" オプションで実行するといった具合。
最初から大規模なアプリケーションを動かすことを前提に作られていて、アレコレも各サーバに散らばせている、物理サーバを意識しなくともよい作りといえばよいのかな。
 
詳しく書くと長くなりすぎるのでHadoopに興味があるなら前述のリンク先がお勧め、しっかり理解できる。レプリケーションの考え方とか単純にすごい。
 
 

このHDFSはそれに依存するhBaseというDBの仕組みがある。広大につくったHDFSの記憶域上に作るテーブル群、DFSの特徴である拡張性と耐障害性に優れたDBを使うことができるようになる。
 
正直これは凄い、と思う反面、検索エンジンくらいしか使い道が思いつかない。。
次点でログ収集&解析サーバか。クライアントさえ入れておけばサーバ何台増設しようと同じ設定でログを集積することができるかも。
 
ファイルシステム操作が独自のAPIなので普通のアプリケーションからは使いにくい、まさに大規模向けというかGoogleが自分で使うために作り出した仕組みのように思える。
中途半端に使い始めて、名前解決サーバがイカレたらどうなるんだろう、WindowsのDFSのようにはいかないだろう、というか諸行無常?
 
一言でまとめるとWEBアプリ向けだ。多分。
 
 

しかし折角Hadoopのような面白い仕組みがあっても普通のファイルシステムでない時点で、プログラムが作れないと何もできない気になるのはインフラばっかりやっているからでしょうね。
インフラ理解して作れるだけのエンジニアというのも中途半端だなぁと考えつつも、アプリは作れる人が作ってくれるのでまあいいかとも思う。
できないところは誰かに補ってもらう、これってやっぱり楽しいと思う。
 
 
 

↓GFSを知ったので次はこれを読みたい。

 
 

しかし文字ばっかりのエントリになったな。。。

2008年9月3日水曜日

情報処理推進機構_2008年9月の呼びかけ

情報処理推進機構 セキュリティセンター(IPA/ISEC)が2008年8月のコンピュータウイルス・不正アクセスの届出状況をまとめて公開。

コンピュータウイルス・不正アクセスの届出状況[8月分]について
http://www.ipa.go.jp/security/txt/2008/09outline.html



1. 今月の呼びかけ

「 心当たりのないメールは、興味本位で開かずにすぐ捨てよう! 」
― 迷惑メールから始まる様々な被害が増えています ―
 
引用:コンピュータウイルス・不正アクセスの届出状況[8月分]について

 

毎月恒例のレポートですが、目玉として流行に沿った情報をアドバイス・確認手順など案内されていて面白い。
読んでるだけでもそれなりに知識がつくのでお勧め。
 

記事中に社内や客先の情報セキュリティ教育に役立ちそうな情報が沢山あります。
(ご参考)
「メールの添付ファイルの取り扱い5つの心得」
 http://www.ipa.go.jp/security/antivirus/attach5.html
「パソコンユーザのためのウイルス対策 7 箇条」
 http://www.ipa.go.jp/security/antivirus/7kajonew.html
「ワクチンソフトに関する情報」
 http://www.ipa.go.jp/security/antivirus/vacc-info.html
「Microsoft UpdateとWindows Updateの利用の手順」(マイクロソフト社)
 http://www.microsoft.com/japan/athome/security/mrt/wu.mspx
「迷惑メール対策」(経済産業省)
 http://www.meti.go.jp/policy/consumer/tokusyuu/meiwakumail-main.htm
「迷惑メール情報提供受付」(財団法人 日本産業協会)
 http://www.nissankyo.or.jp/spam/index.html
「迷惑メール相談センター」(財団法人 日本データ通信協会)
 http://www.dekyo.or.jp/soudan/index.html
 
引用:コンピュータウイルス・不正アクセスの届出状況[8月分]について

 

他、セキュリティ関連の情報はサイト内も教育的な内容が盛りだくさんなので結構皆で読んで欲しい。
 
 

正直なところ情報処理推進機構って試験くらいしか意識してなかったけども、やはり色々推進してるんですね。

WindowsServer2008でパフォーマンスカウンタログをCSVで保存

メモエントリ
 

社内から質問があった、
「WindowsServer2008でネットワークのトラフィックが見たい」
管理ツールの 信頼性とパフォーマンス が手軽でいいと思うよ。CSVに保存すればゆっくり見れるよ。
 

技術じゃない相手だったのでちゃんと説明してあげたかったけど、忙しかったのでスクリーンキャプチャしてメールで投げた、折角なのでアップ。
 

手順書向けスクリーンキャプチャの話
「Alt+PrintScreen」で現在アクティブなウインドウだけスクリーンキャプチャできるのはよく知られているけど、リモートデスクトップで同じ事やろうとしたら "リモートデスクトップのウインドウ" がクリップボードに張り付いてしまう。
「Ctrl+Alt+テンキーの"-(マイナス)"」をするとリモート先のアクティブウインドウだけコピーできる。
効率が段違いなので覚えておきたい。
ほか、@IT:リモート・デスクトップの便利なショートカット・キーに沢山載っています。

 

しかし画像ベースだと検索に引っかからないので、投稿する分にはあとで不便かもしれないなぁ。
 

以下キャプチャした画像達

「Google Chrome」、GoogleがWEBブラウザを配ると

注目高いですよね「Google Chrome」。
いまさらSawanoBlogで取り上げなくてもいいぐらい色んな所で記事になっているが、ここはあえて作成。しかし趣向は変える。
追記:ベータ版の配布はじまってる
http://www.google.com/chrome

 

で、Google公式ブログの投稿 「A fresh take on the browser 」と、日本語訳の → 「ブラウザでの新たな試み」 とリンクを張ってみる。
 

さてこの公式ブログの記事達、記事へのリンク一覧が半自動でできているって事は、この投稿へのリンクも一定期間Google公式ブログの注目記事に並ぶのかな?
ってことは物見遊山で公式の記事を見ている人がこのブログに来たりするわけか、実際私が結構あのリストを叩いて色々開いたので効果無しって事は無かろう。実験がてらに投稿しておこう。
 
 

ちゃんとブラウザの話も。
タスクマネージャがついててタブを個別にKillできたりはいいですよね。
あとWebKitなんですよね、Safariとかの。そーなんだー。
 

Googleには検索はもちろん、WEBアプリやAPIと色々お世話になっている、やっぱりそれらが快適に動くことを重視したコードでできていそうな気がする。
オープンソースっていうからにはその辺もプログラムが読める人らに使われていくかと思うと、、、どうなるんだろう。
 

ただGoogleは規模の大きさゆえか、GmailやらDocsやら結構やらかすことがあるので私はちょっと試して暫く使わないかも。
 
 



追記:投稿したとたんにリンクが貼られた。ブログのpingって強力なんだなぁ。
 
それならもう少し書いておこう。
Googleが提供するサービスはどれも「ツールとして」非常に有用だと常日頃思ってます、もっと使いこなせると便利なのだろうと、ある種の羨望を持つくらい魅力的だ。
 
ただやっぱりWEBベースって使いにくいんですよ。。私の感性が古いのかな。
そこへ今度はGoogleがWEBブラウザとはいえローカルのアプリケーションを配ると聞いて、「Google世界のC/S環境」という想像をしてしまった。シンクライアントでもいいや。そこで標題の「GoogleがWEBブラウザを配ると」なのです。
 

"POST" ⇒ "BIOS" ⇒ "Google Chrome!"
 

おー怖。

2008年9月2日火曜日

Windows NT バックアップ/復元ユーティリティ _ WindowsServer2008用の NTBackupリストアツール

今更だけど WindowsVista と WindowsServer2008 では標準バックアップがNTBackupじゃ無くなってる。Windows Server バックアップだ。
 
NTBackup形式のイメージも展開くらいは対応してるだろうと漠然と思っていたら、Windows Server 2003 SP1 から Windows Server 2008 への機能の変更点のドキュメントにちゃんと書いてあった。ユーティリティがいるのね。
 
 

Windows NT バックアップ/復元ユーティリティ
http://www.microsoft.com/downloads/details.aspx?FamilyID=7da725e2-8b69-4c65-afa3-2a53107d54a7&displaylang=ja


 

インストール(要:「リムーバブル記憶域マネージャ」の機能追加) して起動してみる。
[caption id="attachment_596" align="alignnone" width="500" caption="画像:復元ツール、本当に復元ウィザードしかない(涙)
バックアップも使わせて欲しかった…"]画像:復元ツール[/caption]
 
 

一応WindowsServer2008版のNTBackup.exe かと思ってプロセス名を見ると、「NtBackup-RestoreUtility.exe」 となんとも色気のない名前だった。

2008年9月1日月曜日

startコマンドで優先度を変更してタスク実行@WindowsServer

サーバ管理のために作ったバッチファイルがやたら重くて、肝心のサーバアプリケーション(IISやファイル共有など)にレスポンス低下などの影響を及ぼすことがある。
 
運用管理を楽にしようと集計などの自動化を図っても、サーバレスポンス低下によるユーザの苦情に追われるようになっては始末が悪い。WindowsServer標準の startコマンド(参考:TechNet) を使ってみると、そんな軽い二律背反な状況を回避できたりする。
 
 

要はバッチの優先度を低くして実行するだけなんですが、これが意外と効く。少なくともCPUのリソースをバッチが大きく食っているならかなり顕著に効果が出ます。
Startコマンド のヘルプを下記に一部抜粋。
 

> start /?
指定されたプログラムまたはコマンドを実行するためにウィンドウを開きます。
(略)
B 新しいウィンドウを作成せずにアプリケーションを起動します。
(略)
/LOW IDLE 優先度クラスでアプリケーションを起動します。
/NORMAL NORMAL 優先度クラスでアプリケーションを起動します。
/HIGH HIGH 優先度クラスでアプリケーションを起動します。
/REALTIME REALTIME 優先度クラスでアプリケーションを起動します。
/ABOVENORMAL
ABOVENORMAL 優先度クラスでアプリケーションを起動します。
/BELOWNORMAL
BELOWNORMAL 優先度クラスでアプリケーションを起動します。
(略)

 

お勧めは BELOWNORMAL(通常以下)、これで十分です。
たとえばタスクに登録したジョブがCPUを100%使っている状況でも、IISにリクエストがくればさくっと割り込みして処理してくれます。
 
 

一応叩き方の例を、
 

// バッチまたはコマンドを実行
> Start /B /BELOWNORMAL hogehoge.bat

 
// 応用、VBScriptを実行
> Start /B /BELOWNORMAL Cscript hogehoge.vbs

 
 

効果の保証はしないけど、特定のケースで実際役に立っています。

DNSSECのサーバ対応の状況

一つ前の投稿でIPv6について書いたのけど、インターネットのインフラ関連としては DNS → DNSSEC のほうが優先してやらないといけないともっぱらの評判。
 

普段使っているDNSサーバ(コンテンツサーバ)がDNSSEC に対応しているか見た。というかMicrosoftDNSのヘルプを見ていたらDNSSECの実装について記述があったから驚いて並べてみただけなんですが。
 






















表:DNSSEC実装方式と対応の状況_2008年8月
サーバRFC2535方式DS方式
MicrosoftDNS
(WindowsServer2003)
×
MicrosoftDNS
(WindowsServer2008)
×
BIND9

※ほかは今のところ使った事がないので載せない。
 
 

実はDNSSECちゃんとを調べるまで方式2つあるという認識ではなかった、記事では何度か読んでるはずなのに。必要に迫られてない事は忘れるということか。
 
で、RFC2535方式は面倒なのでDS方式が考えられて、そのまま採用の見込みと。Windowsアカンやないの。
実装しないわけにいかないでしょうから、WindowsServer2008のSPとかに期待でしょうかね。
 
 

リゾルバはどうするんだろう。。。

IPv6インターネット、ISP以外はとりあえず公開サーバまで対応させておいたら いい?

日経NETWORK2008年9月号を読んでいる。
特集1は何も対策しなければIPv4が枯渇するということを前提に、延命として キャリアグレードNAT 、 移行期間(ただしとても長くなるだろう)のIPv4/IPv6のデュアルスタック を経て、、その先はなるようになるんじゃないの。
という記事だった。
 

日経NETWORK
fujisan.co.jpから定期購読
 

インターネットでのIPv6利用については不勉強だったのだが、ISPが苦労しそうな内容についてまとめて理解することができた。閉域のASPを含むマルチプレフィックスの扱い(参考リンク:IPv6普及・高度化推進協議会)など色々問題があるのだなぁ。
 
 

IPv6対応は


しかし個人的にIPv6インターネットへの対応を考えると、ネットワークは回線業者から払いだしてもらうのが前提の今の環境では特に腰を据えて取り組むようなものでもないのだろうなと思う。普及するならしたころに乗っかれば十分。
 
一応ルートDNSサーバがもうIPv6でレコードを返すようになっているので、使いたいところは使ってOKだと思う。
 
ただ、今グローバルIP(v4)を引いて公開しているサーバは、割と早目にIPv6を引きこんで対応させておくべきなのかとも思う。理由も一応挙げておくけど、そのうち見解は変わるかもしれない。
 
 

デュアルスタックのPCはAAAAレコードをDNSに問い合わせるのか?


以降の内容は多分に想像含むので注意。
さて、しばらくしてIPv6インターネット普及がもっと本格化、移行期間としてデュアルスタックをやりだすことになるとします。
 
IPv6、IPv4の両方を持つ端末は、まずIPv6でDNSサーバに問い合わせを行うでしょう。
このときはAAAAレコードを問い合わせるのか?と思ったので少し考えてみる。
 
手元のIPv4環境の FireFox と オプションなしDig の名前解決をキャプチャしてみたら、Aレコードの問い合わせだった。(DNSクエリのフラグが "0x00 0x01"、ついでにAAAAは "0x00 0x1c")
確かデュアルスタック環境では "AAAAが見つからなかったら次はA" という挙動をするらしい。(これは近く実際に試してみたい。)
なので公開サーバにIPv6を振っておかないと、毎回 AAAA → A のオーバーヘッドが発生ってことになるのかしら。ネガティブキャッシュがあるといってもちょっとカッコ悪いし無駄なトラフィックが増える。
 
ということから外部向けのDNS(コンテンツ)、WEBサーバあたりは IPv6 振ってあげたいなーと思う次第なのですよね。
 
 

NSは込み込みANSWER


ついでにNS(フラグ 0x00 0x02)も考えてみると、digで見る限りは結構前から「ADDITIONAL SECTION」でAとAAAAを両方返してくれる、クライアント側の実装によるけど妙なオーバーヘッドはなさそう。
IPv6含むレコードのリストをもらったらIPv6で、IPv4だけのレコードをもらってもすぐにIPv4のスタックで目的のDNSサーバに再帰問い合わせを行うのでしょう。
なのでDNSサーバ自体はIPv6対応でなくてよいけど、SOAを持つゾーンのAAAA は返してあげたい。ということは一応ローカルもそうかな。
 
 
 
 

途中から色々興味が湧いて調査しつつ書いたので締まりのない記事になったがとりあえずこのへんで。。。
 
v6も色々言われますが、v4なくならないとかv6普及するとかしないとかはインフラ使うだけの私あたりのレイヤではどうでもよいんですよね、技術にはとても興味あるけれど。
ただ人気のサイトとかを持つサーバは義務としてIPv6への対応をしておくべきだと思いました。