IPエイリアスの設定でハマった
eth0のIPがAAA.BBB.CCC.DDDの時に、
sudo ifconfig eth0:0 AAA.BBB.CCC.EEE
とかIPエイリアスを設定して、複数のIPを持たせたりするのにハマったのでメモ。
特にこれといった設定をしていない、一般的なネットワークでifconfigすると、
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:AAA.BBB.CCC.DDD Bcast:AAA.BBB.CCC.255 Mask:255.255.255.0
こんな感じになってます。
上記の設定をすると、
eth0:0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:AAA.BBB.CCC.EEE Bcast:AAA.BBB.CCC.255 Mask:255.255.255.0
なんてのが追加されて、1つのNICに複数のIPでアクセスできるようになります。
ところが、世の中にはブロードキャストやサブネットマスクを変更している場合というのがあります。ブロードキャストの末尾が255じゃなかったり、サブネットマスクがもっと大きな値(小さい場合はきっと少ない)になってたり。そういうところで、冒頭のコマンドでIPエイリアスを設定するとえらいことになります。
eth0にグローバルIP、eth1にローカルIPを持たせた環境でやったら、eth0, eth0:0はもちろん、eth1のローカルIPでも接続出来なくなってしまいました。単にifconfigでIPエイリアスを振っただけだと、eth0:0のブロードキャストとサブネットマスクが上に示したようなデフォルトの値になってしまい、ネットワークの設定によっては問題が発生してしまうようです。
それでもグローバルはおろか、ローカルIPでもpingもsshも通らなくなった時は相当焦りましたが… 結局、30分ほどしてダメ元でもう一回試したらアクセス出来ました。ブロードキャストのIPが無効だったから、それを諦めるまで待ったみたいな形になるんでしょうか? よく分かってません。
まぁ、とにかくそういう環境でIPエイリアスを設定する場合は、
sudo ifconfig eth0:0 AAA.BBB.CCC.EEE broadcast XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX
てな具合にブロードキャストとかサブネットマスクも指定しとけってこった。eth0の設定を引き継いでくれるんじゃね? とか何となく思ってると痛い目に遭うぞ。