Loadbalancer を使用した場合、client は ACE の vip 宛てに access し、server からの返信 packet も ACE が address を変換 (server ip address -> ACE vip) してくれるため、client が server address を知る必要がありません。 つまり、client の routing table に server network がのっている必要はありません。
client から ACE vip 宛ての access の場合、ACE が NAT してくれるため、server address を知る必要はないのですが、server から client に syn packet を送信した場合、ACE は server address を変換してくれないため、client は知らない network から packet を受信することになってしまいます。
# 構成
# client から ACE vip に syn を送信した場合の connection table
# client 側の vlan771 は client address(192.168.71.11) と vip(192.168.71.100) を使用
ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 91 2 in TCP 771 192.168.71.11:43939 192.168.71.100:80 SYNSEEN 92 2 out TCP 772 192.168.72.11:80 192.168.71.11:43939 INIT ACE20/Admin# |
# server から client に syn を送信した場合の connection table
# client 側の vlan771 でも client address(192.168.71.11) と server address(192.168.72.11) を使用
ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 28 1 in TCP 772 192.168.72.11:39782 192.168.71.11:80 SYNSEEN 29 1 out TCP 771 192.168.71.11:80 192.168.72.11:39782 INIT ACE20/Admin# |
client からの access 同様、server からの access に対しても ACE が address を変換してくれれば、こういった問題は発生しません。
これを可能にする設定が source nat (SNAT) で、下記のように設定します。
# ACE 設定
ACE20/Admin# sh run Generating configuration.... hostname ACE20 boot system image:c6ace-t1k9-mz.A2_3_1.bin access-list all line 8 extended permit ip any any rserver host sv1 ip address 192.168.72.11 inservice rserver host sv2 ip address 192.168.72.12 inservice serverfarm host sf rserver sv1 inservice rserver sv2 inservice class-map match-all rserver 2 match source-address 192.168.72.0 255.255.255.0 class-map match-all vip 2 match virtual-address 192.168.71.100 any policy-map type loadbalance first-match lb class class-default serverfarm sf policy-map multi-match client-vips class vip loadbalance vip inservice loadbalance policy lb loadbalance vip icmp-reply policy-map multi-match server-snat class rserver nat dynamic 1 vlan 771 access-group input all interface vlan 771 ip address 192.168.71.250 255.255.255.0 nat-pool 1 192.168.71.100 192.168.71.100 netmask 255.255.255.255 service-policy input client-vips no shutdown interface vlan 772 ip address 192.168.72.250 255.255.255.0 service-policy input server-snat no shutdown |
ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 36 1 in TCP 772 192.168.72.11:59577 192.168.71.11:80 ESTAB 37 1 out TCP 771 192.168.71.11:80 192.168.71.100:59577 ESTAB ACE20/Admin# |
上記は、server ip address を vip に変換しましたが、client 側に SNAT を設定すれば、client ip address を nat-pool で設定した address に変換することができます。 そうすることで、server 側も client 側の network を知る必要がなくなります。
下記にも設定例が記載されているので、合わせてご参照ください。
http://www.cisco.com/en/US/docs/interfaces_modules/services_modules/ace/vA2_3_0/configuration/security/guide/nat.html#wp1025068
ACE20/Admin# sh run Generating configuration.... hostname ACE20 boot system image:c6ace-t1k9-mz.A2_3_1.bin access-list all line 8 extended permit ip any any rserver host sv1 ip address 192.168.72.11 inservice rserver host sv2 ip address 192.168.72.12 inservice serverfarm host sf rserver sv1 inservice rserver sv2 inservice class-map match-all vip 2 match virtual-address 192.168.71.100 any policy-map type loadbalance first-match lb class class-default serverfarm sf nat dynamic 1 vlan 772 serverfarm primary policy-map multi-match client-vips class vip loadbalance vip inservice loadbalance policy lb loadbalance vip icmp-reply access-group input all interface vlan 771 ip address 192.168.71.250 255.255.255.0 service-policy input client-vips no shutdown interface vlan 772 ip address 192.168.72.250 255.255.255.0 nat-pool 1 192.168.72.100 192.168.72.100 netmask 255.255.255.255 no shutdown |
ACE20/Admin# sh conn total current connections : 2 conn-id np dir proto vlan source destination state ----------+--+---+-----+----+---------------------+---------------------+------+ 523 1 in TCP 771 192.168.71.11:38530 192.168.71.100:80 ESTAB 524 1 out TCP 772 192.168.72.11:80 192.168.72.100:38530 ESTAB !___ client 側: 192.168.71.11 <-> 192.168.71.100 !___ server 側: 192.168.72.11 <-> 192.168.72.100 ACE20/Admin# ACE20/Admin# sh xlate NAT from vlan771:192.168.71.11 to vlan772:192.168.72.100 count:1 ACE20/Admin# |