Linuxでiptablesを使ってDSRする



1. リアルサーバ側にもグローバルIPを振る必要がある(IPが少ないところは結構きついかも).

リアルサーバでは、VIPをループバックインターフェースにIP aliasすればいいので、リアルサーバの数だけグローバルIPアドレスを消費するってことはないような。(誤読してるかも

ただ、この方式だと、VIPの数だけいちいちリアルサーバにIP aliasして回らないといけないので、わりと大規模(VIPがたくさんある or リアルサーバがたくさんある)だとめんどくさいことこの上ない。

で、リアルサーバでこんなiptablesのルールを設定すれば、IP aliasしないでDSRできそうというのが主題。

VIP=10.1.1.0/24
iptables -t nat -A PREROUTING -d $VIP -j REDIRECT

多分、これでいけると思うんですけどちと自信なし。検証 and 詳しい説明はまた後日(するかもしれないししないかもしれない)。

(8/25追記)
こんなに簡単! Linuxでロードバランサ (1)の構成で、HTTPアクセスするクライアントがVIPと同じセグメントにいるとすると、

[lv1]
iptables -t mangle -A PREROUTING -d 10.10.31.100 -j MARK --set-mark 1
ip rule add prio 100 fwmark 1 table 100
ip route add local 0/0 dev lo table 100
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

[w101,w102]
iptables -t nat -A PREROUTING -d 10.10.31.100 -j REDIRECT

[クライアントPC]
ip route add to 10.10.31.0/24 via 10.10.31.11

なん感じでDSRできたす。

詳しくはきっと後日DSASの中の人が教えてくれるんではないかと・・・
(/8/25追記)


iptablesの状態遷移の図示したものでは、

がわかりやすいす。

iptablesそのものについてはここがおすすめ。

iptablesは悪魔的にいろんなことができるす。たとえば、負荷分散とは関係ないけど、ssh の brute force アタックパケットの制限 -- DOS 的パケットをフィルタリングするとか。

最後に負荷分散とか冗長構成関係の書籍を。

サーバ負荷分散技術

サーバ負荷分散技術

CDNプロトコル入門

CDNプロトコル入門