毎度お世話になっています、伊藤です。
ルーティングデーモンと仮想IPアドレスを併用した時の
動きが妙な気がします。(routed 起動時に、自分の仮想アドレス
に対してアクセス出来ない、但し、他のマシンからは仮想アドレス
に対してアクセス出来る)
ちょっと長文で申し訳ありませんが、おつき合い頂ければと思います。
まず、最初は、ルーティングデーモンを未起動の状態です。
# pgrep routed
NICは、こんな感じです。
# ifconfig fxp0
fxp0: flags=88c3<UP,BROADCAST,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet6 fe80::208:dff:fe87:be0d%fxp0 prefixlen 64 scopeid 0x1
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
ether aa:bb:cc:dd:ee:ff
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
ルーティング情報は、こんな感じです。
# netstat -rn
192.168.1 link#1 UC 0 0 fxp0
192.168.1.1 00:08:0d:87:be:0d UHLW 1 2 lo0
次に、routed を -q オプションを付けて起動し、 fxp0 にもう1つアドレスを
振ります。
# routed -q
# ifconfig fxp0 192.168.1.2 netmask 255.255.255.255 alias
すると、コンソールに、
arp_rtrequest: bad gateway 192.168.1.2 (!AF_LINK)
というメッセージが出力され、ルーティング情報は、
# netstat -rn
192.168.1 link#1 UC 0 0 fxp0
192.168.1.1 00:08:0d:87:be:0d UHLW 1 2 lo0
192.168.1.2 192.168.1.2 UH 0 0 fxp0 =>
192.168.1.2/32 link#1 UC 0 0 fxp0
となります。
この状態で、192.168.1.2 に ping を打つと、自分自身に対して ping
しているにも関わらず、
# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
ping: sendto: Invalid argument
となり、コンソールには、
arplookup 192.168.1.2 failed: could not allocate llinfo
arpresolve: can't allocate route for 192.168.1.2
というメッセージが出力されます。
面白いことに、この状態で他のマシンから 192.168.1.2 に ping を打つと
ちゃんと応答を返します。
つまり、自分自身の仮想アドレスに自分自身のみが接続出来ないという
状態になっています。
routed を起動しない状態で同じことをすると、
ルーティング情報は、
192.168.1 link#1 UC 0 0 fxp0
192.168.1.1 00:08:0d:87:be:0d UHLW 1 2 lo0
192.168.1.2 00:08:0d:87:be:0d UHLW 1 2 lo0 =>
192.168.1.2/32 link#1 UC 0 0 fxp0
となり、自分自身からも、他のマシンからも192.168.1.2 へのping には
応答します。
ルーティング情報を route コマンドで削除すると、直後は ping OK と
なるのですが、暫くするとrouted がルーティング情報を追加して来る
為、また ping に応答しなくなってしまいます。
いくつかのマシンで試して見たのですが、
5.5R は、NG
CURRENTは、NG
5.1R は、OK
という結果でした。
ルーティングデーモンと、仮想アドレスを併用したいのですが、
私の手順の何が間違っているのでしょうか?