![]() |
running-dog.net。しかし、自分が一番落ち着かない。かけまわっている子犬のような状態。そんな毎日をブログで綴ってみました。 FreeBSD・PC・UNIX・プログラム・MacOSX・iPhone3G ネタなど技術的・趣味的なネタについて色々書いてみたいと思います。 また、最近は Microsoft Windows ネタも増えてきたかなぁ。などとも思っておりますが、併せて宜しくお願いします。 |
|
カテゴリー:プログラム
検索
カテゴリー
フィードを取得
Special Thanks.
Please click now!!
apache で Proxy を作ってみた。(2)
前回書いた続編と言うか・・。
一応、apache を Proxy として利用できるようになり、コメントで hagyさん から、mod_mem_disk と mod_mem_cache の両方を書いたときの動作確認してよー。って言われたので、そのテストをしようと思った矢先・・。
テスト環境では、キャッシュしようと思っていたデータがベーシック認証の中にあったのでありました。つまり、キャッシュしてはいけないデータなので apache Proxy はデータをキャッシュしてくれないんですね・・。
フリーソフトウェアのほとんどの Proxy サーバはベーシック認証やダイジェスト認証の中にあるコンテンツについて、セキュリティの観点によりキャッシュサーバでは絶対にキャッシュしない。と言うポリシーのもとで作成されているみたいです。apache の場合、ドキュメントにちゃんと書いてあります。
http://httpd.apache.org/docs/2.2/ja/mod/mod_cache.html#cacheignorecachecontrol
NetApp 社の NetCache もしかりですが、設定が用意されているみたいで on no-cache とか on uncond-cache がそれにあたります(当然、設定 GUI からもできるとは思いますが;-)。
さてと。どーすんべなぁ。とか思って、一応 apache のソースを眺めたらわりと簡単にソース修正できそうだったので変更してしまいました。以下はそのパッチです。
|
ふぅ。これでキャッシュ用 Proxy サーバはなんとかでき上がりました。では続いて懸案であった、mod_mem_disk と mod_mem_cache の両方を書いたときの動作確認をしたいと思います。
が・・。どう言うわけか mod_mem_cache の設定を書いていると httpd が Segmentation fault(11) してしまいます(今回は prefork で make したので一個のプロセスが Segmentation fault を起こすのみで、全ての httpd は死んではいないため port:80 では LISTEN が可能状態です)。一番最初、キャッシュしていない状態でアクセスがあった場合はマスターサーバから、仮に「A」と言うコンテンツを取ってきてキャッシュして、そしてクライアントに返します。
次に別のクライアントがコンテンツ「A」を取りに来たとき、httpd がこの時に Segmentation fault(11) で落ちてしまう。と言う状態に陥ったのでありました。なので、コンテンツは DISK 上(もしくはメモリ上)に溜まるけど、利用されることは無い。と言う感じですね。
#ちなみに mod_mem_cache で溜まったキャッシュの情報ってどうやって確認するのだろう・・。メモリ利用量のみで判断するのかなぁ?
mod_mem_cache を削除して mod_mem_disk の設定のみを書いたときは正しくキャッシュできて、 Segmentation fault(11) もせず、キャッシュされたデータも再利用できることを確認しました。なので運用的にはキャッシュデータは DISK のみに保存する。と言う方向で行きたいと思います。
ごめんねー。hagyさん。
それにしても、色々詳しく調べるまで、ベーシック認証配下のコンテンツはキャッシュしない。と言うのを知らなかったなぁ。まぁ、考えてみれば当たり前だよなー。認証の奥にある情報が実は Proxy キャッシュサーバの中に残っていた。なんてのは怖いことだもんなぁ。
iPod Touch のメールを ssh トンネルで。
前回のブログで iPod Touch を JailBreack したと書いた。でもってメールソフトは iPhone のファームから抜いて iPodTouch にインストールした。
メールソフトも利用できて大変嬉しいのだけど、うちのメールサーバは ssl に対応していないので POP もしくは IMAP4 の時に生パスワードが流れてしまう。
iPod Touch の性格上、野良 AP (そこいらに落ちているアクセスポイントのこと)を利用する場合も多々有るわけで、そう言うのを利用するとアクセスポイントを置いた人が tcpdump を仕掛けていないとも限らないし、ポートスキャンしてくるかもしれない。なので、POP/IMAP4 の時は是非とも暗号化して利用したいものです。
幸い、JailBreack した iPod Touch には ssh が入っているのでこれを利用して POP サーバ、もしくは IMAP4 サーバに ssh トンネルを掘ることが可能です。
と、言うことで簡単に ssh トンネルを掘るスクリプトを書いてみました。利用方法は以下の通り。
1. POP/IMAP4 サーバ上に自分のアカウントが存在し ssh ログインできること。
2. メールのアカウント設定で POP/IMAP4 サーバではなく localhost に接続するようにすること。
3. ターミナルから stun.sh が実行できること。
これだけです。まぁ、1. はちょっと敷居が高いかも。けど、それがクリアできれば特に問題は無いでしょう。以下の URL からダウンロードできます。
http://www.icmpv6.org/Prog/MacOSX/stun.sh
利用方法ですが、以下の通り。
1. コマンドオプションは三つ。s(start) t(stop) c(check)。
2. s オプションで Mail を kill してから ssh トンネルを掘りますが、接続できた時はパスフレーズを聞いて来るので入力。
3. t オプションで Mail と ssh トンネルのプロセスを殺します。
4. c オプションで Mail と ssh のプロセス番号を表示します。
注意点としては、ssh トンネルを掘る前に Mail が起動していると POP/IMAP4 サーバに接続できません。なので、s オプションの時に Mail を kill しています。c オプションで ssh プロセスの番号が Mail より若いことを確認します。
後、一回スリープしたら ssh セッションが切れるので毎回 t して s してあげる必要があります。
こんな所でしょうか。ダウンロードしたら stun.sh の上の環境変数にサーバ名とユーザ名を指定してください。default で localhost の port:143 を使うようにしています。
もしダウンロードした人がいたらコメントなど頂ければと思います。
Count.cgi と IPv6 の関係。
ウェブページのカウンターとしては Count.cgi と言うのが有名なんですが、まぁ、以下の URL のプログラムです。
http://www.muquit.com/muquit/software/Count/Count.html
僕もその昔、ASP にいた頃良くメンテしていました。
で、このカウンター、同一のアクセスもとから何回もアクセスがあるとカウンターが上がらないようにするオプションがあるんだけど、conf/count.cfg の count_reload=No かな。リロードしてもカウンタ-アップしないうにするオプションです。
しかし、IPv6 のアドレスからアクセスすると、この設定が有効にならないのねぇ・・。
カウンターの元データとなる Counter/data/file.dat にはカウンター数と最後にアクセスのあった IPv4 アドレスを保持します。このファイルに掲載されている IPv4 アドレスからアクセスがあるとカウンタアップしないんだけど、IPv6 アドレスからのアクセスだと count_reload=No が有効にならないのでガンガンカウンター値が上がってしまうX-(。
こらー、IPv6 対応させる必要があるかなぁ・・。どなたかチャレンジして、FreeBSD の ports でええので対応しませんか?:D:D