Windows版squid

■こんな人向け
 ・ブラウザのキャッシュや履歴はすぐ消すけど、アクセス履歴が見たい。
 ・FLVやSWFをはじめ、リダイレクトがどうなっているのか知りたい。
 ・不審なサイトに行ってないか後でじっくり確認したい。
 ・for WinXPHome or XPPro

■Windows版squidを導入する
 以下を参考

http://squid.robata.org/squid_nt.html

※通常UNIX系の移植版のツールはスペースの入らない場所にインストールする。
 例えば以下のパスに。

%SystemDrive%:\squid

★システムドライブの確認方法

> set | find "SystemDrive"

★基本的に上記で充分。
 タスクがあるとしたら。。。

 ・ログのフォーマットの変更
 ・ローテーション回数の変更
 ・ローカルネットのACLのアドレス変更
  ※セグメントが変わるなら都度確認する(WLANでDHCPでIPを取りに行くetc)

■メモ帳でローテーション用のバッチファイルを作る
 
> notepad rotate.bat

@echo off
cd %SystemDrive%:\squid
sbin\squid.exe -n "Squid" -k rotate

■バッチ実行時に表示しないためのvbsを用意する

> notepad rotate.vbs

CreateObject("WScript.Shell").Run "%SystemDrive%:\squid\rotate.bat",0

■起動する度にローテーションする

 rotate.vbsのショートカットを[スタートアップ]フォルダに配置する

■cronNTでスケジュール化

 cronNTのダウンロード

 http://www.vector.co.jp/soft/dl/winnt/util/se232096.html

※Readmeを読めばサービス登録も簡単なので、特に説明はしない。

★登録したcronNTサービスを開始

> net start "cronNT"

★cronNTのサービスが動いているか確認

> net start | find "cronNT"

★cronNTサービスを止める停止する

> net stop

GUIの方が良い人は、「services.msc」でも起動して下さい。。。

■crontab.iniの編集

 ※crontab.iniも充分な書式の説明がコメントにあるので説明はしない。
 以下は毎分実行するテスト中の設定

> notepad 
*: * * * * WScript "%SystemDrive%::\squid\rotate.vbs"

■トラブルシュート

 ・squidローテーションの単体実行
 ・バッチの単体実行
 ・vbsの単体実行
 ・スタートアップからの単体実行
 ・再起動時にローテーションされているか
 ・指定時間にローテーションされたログがあるか
 ・crontab.iniと呼ばれるコマンドのパスは絶対パスか環境変数で使える場所にあるか
 ・「eventvwr.msc /s」のアプリケーションログにcrontabサービス起動のログはあるか
 ・cronNTのログにサービスの起動ログ、実行ログはあるか

★crontab.log

10/22 20:13:00 >スケジュール 1 を実行しています。。
10/22 20:13:00 >ooooooo コマンドを実行しました。[>> WScript "$SystemDrive%:\squid\squid_rotate_noprompt.vbs" ]

■サービス登録は「sc」コマンドで登録しても良い。

★サービスの存在確認

> sc getkeyname "cronNT"
[SC] GetServiceKeyName SUCCESS Name = cronNT

★設定確認
 変更する時は「services.msc」から行なった方が良い

■変更できる内容

> sc config /?
Modifies a service entry in the registry and Service Database.
SYNTAX:
sc <server> config [service name] <option1> <option2>...
CONFIG OPTIONS:
NOTE: The option name includes the equal sign.
type= <own|share|interact|kernel|filesys|rec|adapt>
start= <boot|system|auto|demand|disabled>
error= <normal|severe|critical|ignore>
binPath= <BinaryPathName>
group= <LoadOrderGroup>
tag= <yes|no>
depend= <Dependencies(separated by / (forward slash))>
obj= <AccountName|ObjectName>
DisplayName= <display name>
password= <password>

> sc qc cronNT
[SC] GetServiceConfig SUCCESS

> sc getkeyname "Squid"
[SC] GetServiceKeyName SUCCESS Name = Squid

SERVICE_NAME: cronNT
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\cronNT\cronNT.exe
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : cronNT
DEPENDENCIES : RPCSS
SERVICE_START_NAME : LocalSystem

> sc qc Squid
[SC] GetServiceConfig SUCCESS

SERVICE_NAME: Squid
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 2 AUTO_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : D:\squid\sbin\squid.exe --ntservice:Squid
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Squid
DEPENDENCIES : Tcpip
: AFD
SERVICE_START_NAME : LocalSystem


■イベントログにあるのがなんだか気になったので。

---
イベント ID (0) (ソース cronNT 内) に関する説明が見つかりませんでした。
リモート コンピュータからメッセージを表示するために必要な
レジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。
この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。
詳細については、ヘルプとサポートを参照してください。
次の情報はイベントの一部です: Service started.
---

※別のサービスでも出ているので、念のため確認。
 要約すると、利用しているOSでは対応できないイベントログという意味。

【保存済みの FRS、DNS、およびディレクトリ サービスのイベント ログやイベントを Windows XP の非ドメイン ドメイン コントローラで表示する方法】

http://support.microsoft.com/kb/294893/ja


■mmcで試す。

> mmc /a eventvwr.msc /auxsource=localhost

きちんと見れるので、問題無し。

■問題が無いので、crontab.iniの設定を日単位でローテーションするよう変更

0 0 * * * WScript "squid_rotate_noprompt.vbs"

■不要になったスタートアップのショートカットを削除。

後片付けも終了。