IPVS-NATでリアルサーバーから応答がない事象の解決方法

○ 事象
IPVS(LVS)(NAT/マスカレード構成)環境にて、端末からサービスIPにアクセスするとサーバーからの応答がない。
tcpdumpで調べると、応答パケットがリアルサーバーからアクセス元端末に戻っておらず、さらに調べると、IPVSを構築しているサーバーで応答パケット(戻りの通信)が破棄(遮断)されている。

□ アクセス端末
↓|
■×IPVS・ファイアーウォール
↓|↑
□ リアルサーバー

○原因
ファイアーウォールがIPVSを経由した応答パケットを認識していない!
ファイアウォールのルールが

iptables -P FORWARD DROP

iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -m state –state ESTABLISHED,RELATED -j ACCEPT
(eth0・・・WAN(入り口) eth1・・・LAN(リアルサーバー側)

であったりすると、通常のルーティングならファイアーウォールがアクセス先にHTTPアクセスがあったこを記憶して転送し、の応答が戻ってきたときにアクセス端末側に返す。
しかし転送にIPVSを噛ますとアクセスがあったという記憶をしていないらしい。
※正確に言うと、記憶している場所が違うので情報を取り出せない。
端末→IPVS→リアルサーバー・・・INPUTチェイン
端末←IPVS←リアルサーバー・・・FORWARDチェイン
なので、応答パケット(戻りのパケット)のダイナミックフィルタリングで許可がでず、PVSを構築しているサーバー上でパケットが破棄されてしまう・・・
詳細はこのURLのイントロダクション参照(英文)
http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.filter_rules.html
※要訳
IPVS-NATはnetfilter(iptables)の仕様上、経路追跡に問題がある。
カーネルにパッチを適用することによって問題が解決するらしい。
またはDSR構成にする。
と言われても、素のカーネルをコンパイルして(しかもパッチ適用)使用するのはすがに怖い!
かといてDSR構成にもできない(並行して、SSL証明書などの問題で
PoundやApacheをつかってURLベースのバランシングをしているなど・・・)
ではどうするか?
○解決方法
ダイナミックフィルタリングができないなら、静的フィルタリングで無理やり許可する!
IPVSサーバー上で、リアルサーバーからの転送通信を送信元のポートを特定して許可る。
たとえばSMTPなら

iptables -A FORWARD -i eth1 -o eth0 -p tcp –sport 25 -j ACCEPT
(eth0・・・WAN(入り口) eth1・・・LAN(リアルサーバー側)

これでめでたく開通。
セキュリティー上ちょっと怖いが・・・

qmail-scanner UTF-8 対応

qmail-scanner をUTF-8に対応させる方法
元々はEUC-JPにしか対応していないので、無理矢理./configureを実行すると以下のようなメッセージが表示させる

# ./configure (省略) –lang ja_JP.UTF-8 (省略) –add-dscr-hdrs yes –install
***** NOTE ******
Qmail-Scanner doesn’t have language translations for ja_JP.UTF-8,
– so defaulting to english…

○対処方法
UTF-8用のファイルをEUC-JPから変換して作成する。
以下のコマンドを実行

# cd qmail-scanner-2.02
# mkdir ./locale/ja_JP.UTF-8
# for file in $( ls ./locale/ja_JP.EUC/* )
# do
# iconv -f euc-jp -t UTF-8 ${file} | tee ./locale/ja_JP.UTF-8/${file##*/}
# done

./configure実行時に以下のオプションを指定

./configure (省略) –lang ja_JP.UTF-8 (省略)

Welcome to WordPress

WordPress の世界へようこそ。
このテスト用の投稿は、インストールが問題なく終了したことを意味しています。早速この内容を編集、もしくは削除してあなた自身のブログを始めてください。