S.C. MAGI-SYSTEM 日記
Diary
2009年になって、実に3年ぶりに更新再開。

hns - 日記自動生成システム - Version 2.19.9

2005年03月20日() [n年日記]

[天気:晴れ](家) 起床:11:00 就寝:29:00

#1 [*BSD] IPsec その弐

さて 昨日 試した Transport モードにはいくつか問題点があります。
問題点という言い方はちょっと語弊があるのですが、例えば無線LANを使っていて その経路をIPsec化することでセキュアにしようとか考えていると困ることがあるのです。
Transport モードは基本的に Peer to Peer のIPパケットしかIPsecに通しません。
つまり、昨日の例で言うと 192.168.0.1 と 192.168.0.2 の間のデータしかIPsecが適用されないのです。
より正確に言うならば、IPパケットのsrcとdstが 192.168.0.1 あるいは 192.168.0.2 でないといけないのです。
例えば下記のような構成を考えたとき、
               +------------------+                 +----------------+
 (Internet)--[NAT]  Server  [192.168.0.1]-----[192.168.0.2]  Client  |
               +------------------+                 +----------------+
Server <=> Client 間の通信は確かに暗号化されます。
ですが、Client から Server を 経由 しての Internet へのアクセスは、src = 192.168.0.2 ですが dst = (あるグローバルIP) となってしまうので IPsec の適用外になってしまうのです。
これを解決するためには、Transport モードではなく Tunnel モードを使う必要があります。
Tunnel モードでは
               +-----------------+              +-----------------+
 (Internet)--[NAT]  Server  [10.0.0.1]-----[10.0.0.2]   Client    |
               |  [192.168.0.1]  |              |  [192.168.1.1]  |
               +-----------------+              +-----------------+
上記のように、Serverセグメント (192.168.0.0/24)、Clientセグメント (192.168.1.0/24)、 そしてTunnelセグメント (10.0.0.0/24) といった具合にネットワークを分けないといけません。
そして
  • Server
    # route add -net 192.168.1.0/24 10.0.0.2
    
  • Client
    # route add -net 192.168.0.0/24 10.0.0.1
    # route add default 192.168.0.1
    
という具合に routing する必要があります。
こうすると 192.168.0.1 <=> 192.168.1.1 の間の通信は基本的に 10.0.0.1 <=> 10.0.0.2 の経路を通ることになり、この経路が IPsec により暗号化されることで Client から Server を経由する通信が全て暗号化させることができます。
一般に IPsec を利用した VPN というと、この Tunnel モードが用いられるのにはこういう背景があるんですね。
んで、具体的な設定ですが…

ちょっと今日はツラいので、明日の分として書きます。(笑)

#2 [MacOSX] vim + skkfep

今さらですが 私家版DarwinPortsskkfep内蔵jvimvariant を作りました。
Machontosh% port build +skkfep
とすることで、skkfep内蔵jvimをお手軽にコンパイルできます。
skkserv の ports と一緒にどうぞ。

2004年03月20日() [n年日記]

[天気:雨のち曇り](家) 起床:16:30 就寝:26:00

#1 [Web][*BSD] Apache 2.0.49

Apache の 2.0.49 が リリース されました。
これに合わせて www.magisystem.netのWebサーバもアップデートしました。

また、せっかくなので性懲りもなく worker MPM に挑戦してみました。
worker MPM を使う際は mod_cgi に代わって mod_cgid を使う とのことなので、その通りに設定。
一応 cgid を通して suexec 環境での CGI が実行されることは確認しました。
ただそのリクエストを受けたスレッドが死ぬまでの間、肝心の CGI の プロセスは Zombie になったまま終了しないのです。
それほどリクエストの多いサイトでもないので Zombie が残っていても それほど影響はないのですが、 それを言うと prefork ではなく worker である必要性もない訳で。(笑)
結局 worker は使えないという結論に今回も達しました。
やっぱり thread 周りがきちんと動作することに期待できるのは 5.x 系 *1 なんだろうか?
*1: 今は 4.9-RELEASE です。

#2 [Web][*BSD] もじゅーる だいえっと

先程入れ換えた Apache ですが worker MPM ができなかった腹いせ(?)に、使っていない Module を可能な限り無効化してダイエットしてみることにしました。
ちなみに私は Apache を FreeBSD ports から入れていますが、この際 /etc/make.conf
.if ${.CURDIR} == "/usr/ports/www/apache2"
WITH_SUEXEC=	yes
WITH_IPV6_V6ONLY=	yes
WITHOUT_SSL=	yes
.endif
として suexec の有効化、IPv4 と IPv6 の共用 Socket の無効化、 そして SSL の無効化を入れて make しています。
さて FreeBSD ports から入れた Apache はデフォルトでは
melchior% /usr/local/sbin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
core、prefork MPM と他のモジュールを動的ロードするための mod_so だけが static にコンパイルされ、残りは全て動的モジュールとなっています。
まあ、他のモジュールも static にしたければ make の際に
melchior# make WITH_STATIC_MODULES="ssl rewrite include"
とすることで上の例では mod_ssl、mod_rewrite、mod_include を static に することができます。
ちなみに FreeBSD ports の Apache で有効になっている動的モジュールは
melchior% grep ^LoadModule /usr/local/etc/apache2/httpd.conf | awk '{print $2}'
access_module
auth_module
auth_anon_module
auth_dbm_module
charset_lite_module
include_module
deflate_module
log_config_module
logio_module
env_module
mime_magic_module
cern_meta_module
expires_module
headers_module
usertrack_module
unique_id_module
setenvif_module
mime_module
status_module
autoindex_module
asis_module
info_module
suexec_module
cgi_module
vhost_alias_module
negotiation_module
dir_module
imap_module
actions_module
speling_module
userdir_module
alias_module
rewrite_module
とこんなにあります。(笑)
では、この中で必要だと思われるものとそうでないものを仕分けしてみます。 必要だとする理由も併記しておきましょう。
access_module
アクセス制限をする Allow, Deny に使う
auth_module
Basic認証に使う (必要だが、場合によってはいらないかも)
auth_anon_module
Basic認証と組み合わせて、anonymous accessを可能とする
auth_dbm_module
Basic認証でパスワードを保存するファイルに DBM を用いる
charset_lite_module
サーバ側で文字コード変換を行える (experimental)
include_module
SSI*2 を行う (必要だが、場合によってはいらないかも)
deflate_module
サーバ側で送信するデータを圧縮。細い回線では役立つ (必要だが、場合によってはいらないかも)
log_config_module
サーバのログを取る設定に関するモジュール
logio_module
ログを取る際に転送した Byte 単位で記録する
env_module
環境変数の設定
mime_magic_module
MIMEヘッダを file magic から推測する
cern_meta_module
mrtgなどMetaデータを使う場合にいる (必要だが、場合によってはいらないかも)
expires_module
設定ファイルで Expire を指定できる
headers_module
カスタムな HTTP ヘッダを送れる
usertrack_module
Cookie のログを取る (必要だが、場合によってはいらないかも)
unique_id_module
CGI用に unique_id を提供 (必要だが、場合によってはいらないかも)
setenvif_module
httpd.conf内で Module の有無で分岐を書く際にも使える
mime_module
MIMEの設定
status_module
Apacheのstatus-infoを出せる…が、.htaccessから設定できちゃうので無効にした方がいい。
autoindex_module
Options Indexes に必要
asis_module
こちらもカスタムな HTTP ヘッダを返すのに使う
info_module
status_module のように info を出せる
suexec_module
CGIのsuexec環境の提供
cgi_module
CGIの実行環境
vhost_alias_module
VirtualHostごとにAliasを変える
negotiation_module
コンテントネゴシエーション
dir_module
DirectoryIndex など / に index.html を返す処理をする
imap_module
IMAPの提供
actions_module
特定のパスへのリクエストをCGIに投げる
speling_module
間違ったURIに対して自動でspell修正してくれる
userdir_module
ユーザのpublic_htmlをチルダで参照できるようにする
alias_module
Alias ディレクティブを使う
rewrite_module
rewriteという強力な機能を提供
ふぅ…長い。
詳しい内容は Apache の ドキュメントを参照してもらうとして、 上で で示した必要そうなものだけをまとめてみるとこうなります。
melchior% grep ^LoadModule /usr/local/etc/apache2/httpd.conf
LoadModule access_module libexec/apache2/mod_access.so
LoadModule auth_module libexec/apache2/mod_auth.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule deflate_module libexec/apache2/mod_deflate.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache2/mod_cern_meta.so
LoadModule usertrack_module libexec/apache2/mod_usertrack.so
LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
LoadModule suexec_module libexec/apache2/mod_suexec.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
先程 33 もあったものが 19 まで減りました。
実際にメモリ占有量がどれだけ変わったのかは正確には計算していませんが、 モジュールの数が半分近くまで減ったのですから 1 プロセスあたりで 30% くらいはメモリ消費が減ったのではないでしょうか。
たかが 30% と思うかもしれませんが、裏を返せば今までのスペックでも 1.6倍 の数の httpd を走らせられるということになります。

アクセス過多になるようなサーバを個人で運営している人なんてほとんどいない かもしれませんが、このようにモジュールを減らすことでサーバの状態を 改善できるかもしれませんね。
*2: Server Side Includes

2003年03月20日(木) [n年日記]

[天気:晴れのち曇り](家) 起床:11:30 就寝:27:00

#1 [MacOSX] iTerm 0.6.5

iTerm の0.6.5正式リリースが出ました。
VT100 エミュレーションを始め、機能や安定性が向上しています。
一番嬉しいのは、新たに "Prompt when quitting or closing window" という項目 *1 が環境設定に追加されたことですね。
セッションを開いた状態で、誤って Command + w を押してウィンドウを閉じてしまうというミスを避けられるようになりました。
*1: どうやら日本語のメッセージは間に合わなかったのかな?

#2 [MacOSX] Camino Nightly Build

再び自分で build しました。
正確には昨日作ったものなのですが、かなり安定動作します。
いつも通り dmg を用意してあるので、興味のある方はどうぞ。


最近の日記
2019年06月24日
10年振り
2009年12月31日
定期アップデート
2009年04月03日
定期アップデート
2009年03月22日
定期アップデート
2009年01月26日
pomera
2009年01月23日
今日のBOT
2009年01月22日
BOT
2009年01月20日
Seagate HDD
PowerPCの備忘録
RSS feed
abuse
2009年01月19日
Windows 7 beta
2009年01月16日
perl-after-upgrade
2009年01月14日
アクセスカウンタ
2009年01月13日
ひとまず完了
2009年01月12日
7.1-RELEASE(適用)
2009年01月10日
hns 2.19.9
2009年01月09日
recursion no
以上、3 日分です。
先月 2019年08月 来月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project