リアルサーバにループバックIPを振るかと思いますが、
その際にARPに反応しないよう以下の設定を、
/etc/sysctl.confにするといつくかのサイトに書かれていました。
================================
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
================================
こちらの意味は具体的にどういったものでしょうか。
以下のサイトに英文で説明が載っていたのですが、
よく理解できませんでした。
http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html#2_6_arp_announce
わかる方いらっしゃいましたらよろしくお願いします。
google翻訳です。(メチャクチャな翻訳ですが・・)
http://translate.google.com/translate?u=http%3A%2F%2Fwww.austintek.com%2FLVS%2FLVS-HOWTO%2FHOWTO%2FLVS-HOWTO.arp_problem.html%232_6_arp_announce&langpair=en%7Cja&hl=ja&ie=UTF8:title
arpに応答させないのは、MACアドレスを覚えさせないようにする為です。
arpに返答してしまうと、MACアドレスを覚えてしまい、ipとmacアドレスが関係付けられてしまい
負荷分散させたときに、送りたい機器へ通信がいかなくなります。
(ipがなんであれ、通信は下位層のmacアドレスで行われていますので)
※これでは説明が足りないでしょうか・・
なんか説明しにくい・・
すみません。_(_^_)_ 理解できていませんでした。
えっと、
・arp_ignore=1
→arpのリクエスト元IPアドレスが、それを受診したインターフェースのipアドレスだった場合のみ
arpリプライを返すように設定する。
だから負荷分散のvip宛てarpリクエストに対してarpリプライを返さない。
・arp_announce=2
arpリクエストを送信場合、送信元のipアドレスとして、送信先に一番近いインターフェースに設定
されているipアドレスを使うように設定する。
だから負荷分散のvip側を基点として(送信元アドレス)通信する場合、通信開始時に送信される
arpリクエストの送信元ipとして、vipではなく、インターフェースのipアドレスを使う。
と、言う意味になります。
下記ページに参考になるものがあります。
CentOS5.0とLVS(Linux Virtual Server)でWeb負荷分散装置を作る - sous le grand arbre
※質問への回答は、回数がもったいないと思いますので、「この質問・回答へのコメント」をONにされたほうが良いかと思います。
ご回答ありがとうございます。
実は参考ページはすでに見つけていて、
そのページではインターフェースを「all」に対してのみ設定しているようなのですが、
私が例に出した設定のように、
ほかのページでは「all」のほかに「eth0」や「lo0」にも設定していたりするのですが、
「all」で設定すれば、
「eth0」や「lo0」も含まれると思ったのですが、
そういう意味ではないのでしょうか??
またarp_ignoreとarp_announceがほかの値の場合の意味もわかりましたら教えていただけると助かります。
よろしくお願いします。
arpに応答させないようにする理由はわかるのですが、
/etc/sysctl.confに設定しているものの具体的な意味が知りたいのです。