ルータの冗長化の方式としてVRRPとHSRP(Cisco only)がある。
これは、通常「マスター側ルータ」がarp応答するのに対し、マスターダウン時には「スタンバイ側ルータ」がarp応答するようになって対応するというもの。
で、これにNATを組み合わせて下図のように組もうとすると、問題が起こった。
+-----------+ +-----+ 192.168.1.251 +-------+ 192.168.10.251
|my server |-----|L2 SW|------------------|Master |-----
|192.168.1.1| | | Virtual Router +-------+
+-----------+ | | (192.168.1.254)
| | +-------+
| |------------------|Standby|-----
+-----+ 192.168.1.250 +-------+ 192.168.10.250
NAT変換:
192.168.1.1 <=> 192.168.10.1
VRRPの場合の設定(f0が外側)
Router1(config)# track 1 interface f0 line-protocol
Router1(config)# int f1
Router1(config-if)#vrrp 1 ip 192.168.1.254
Router1(config-if)#vrrp 1 priority 150
Router1(config-if)#vrrp 1 track 1 decrement 100
Router1(config-if)#ip nat inside
Router1(config)# int f0
Router1(config-if)#ip nat outside
Router2(config)# int f1
Router2(config-if)#vrrp 1 ip 192.168.1.254
Router2(config-if)#ip nat inside
Router2(config)# int f0
Router2(config-if)#ip nat outside
Router1/2共通(config)# ip nat inside source static 192.168.1.1 192.168.10.1
問題は、Standby側のルータがNAT設定したIPのarpに応答してしまい、duplicate addressとなってしまう問題。
HSRPでは、NATのredundancyオプションを利用して回避できる。(NATのredundancyオプションにstandbyで設定した名前を指定する)
HSRPの場合の設定(f0が外側)
Router1(config)# track 1 interface f0 line-protocol
Router1(config)# int f1
Router1(config-if)#standby 1 ip 192.168.1.254
Router1(config-if)#standby 1 priority 150
Router1(config-if)#standby 1 track 1 decrement 100
Router1(config-if)#standby 1 preempt
Router1(config-if)#standby 1 name hsrp1
Router1(config-if)#ip nat inside
Router1(config)# int f0
Router1(config-if)#ip nat outside
Router2(config)# int f1
Router2(config-if)#standby 1 ip 192.168.1.254
Router2(config-if)#standby 1 preempt
Router2(config-if)#standby 1 name hsrp1
Router2(config-if)#ip nat inside
Router2(config)# int f0
Router2(config-if)#ip nat outside
Router1/2共通(config)# ip nat inside source static 192.168.1.1 192.168.10.1 redundancy hsrp1
VRRPでも、descriptionを設定してredundancyやればできるはずなんだけど、できなかった。
久々のネットワークねたでした。