【A10 Thunder】サーバ負荷分散(L4) 送信元NATと動作確認 5.2.0

A10 Thunder(vThunder、ACOS 5.2.0)でサーバに負荷分散するとき、サーバからの応答が必ず Thunder を通るように、送信元 NAT を使うことがあります。特にワンアーム構成では、サーバの応答が Thunder を通らずにクライアントへ返ってしまうため、送信元 NAT が必要です。この記事では、Thunder で設定できる3種類の送信元 NAT を設定し、セッションの表示で変換結果を確かめます。

この記事でわかること
  1. 送信元 NAT が必要な理由と、セッション表示の見方
  2. Source NAT Auto(Thunder のインタフェースのアドレスで変換)の設定
  3. Pool アドレス(指定した範囲のアドレスで変換)の設定
  4. Pool グループ(複数の Pool をまとめて変換)の設定
前提の構成

構成は 【A10 Thunder】サーバ負荷分散(L4)の基本設定と動作確認 5.2.0 のものを使います。先にこちらの記事をお読みください。

sg-web Web-01 10.0.200.100(TCP 80) Web-02 10.0.200.173(TCP 80) vThunder VIP 10.0.10.200(TCP 80) サーバ側 10.0.200.149 ラウンドロビン Internet Client IP は伏せています HTTP(TCP 80)
図1 検証構成

送信元 NAT の役割

送信元 NAT をしない場合、Thunder はクライアントの IP アドレスを送信元のまま、サーバへ要求を転送します。サーバは応答をクライアントの IP アドレスあてに返すため、サーバのデフォルトゲートウェイが Thunder でなければ、応答は Thunder を通りません。送信元 NAT をすると、サーバに届く要求の送信元が Thunder のアドレスになり、応答は必ず Thunder に返ります。

送信元 NAT なし サーバはクライアントの IP あてに応答を返す Web サーバvThunderクライアント 要求の送信元:クライアントの IP 応答の宛先:クライアントの IP送信元 NAT あり サーバは vThunder あてに応答を返す Web サーバvThunderクライアント 要求の送信元:vThunder のアドレス 応答の宛先:vThunder のアドレス
図2 送信元 NAT の有無と、サーバの応答の宛先

送信元 NAT をしない状態で、セッション(ADC ›› SLB ›› Session)を見ると、Reverse Dest がクライアントの IP アドレスになっています。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。クライアントのグローバル IP アドレスは伏せています。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Session
ProtocolForward SourceForward DestReverse SourceReverse Dest
Tcp(伏せています):5110210.0.10.200:8010.0.200.100:801(伏せています):51102
図3 送信元 NAT なしのセッション(実際の画面ではなく、表示のポイントを示したイメージです)
列意味
Forward Source/Destクライアントから届いた要求の送信元と宛先です。宛先は VIP(10.0.10.200:80)です。
Reverse Source/Destサーバから返ってくる応答の送信元と宛先です。Reverse Dest は、サーバから見た要求の送信元(応答の宛先)にあたります。
1 Reverse Dest送信元 NAT をしていないので、クライアントの IP アドレスとポートのままです。

送信元 NAT は、仮想サーバの仮想ポートごとに設定します。この記事では、次の3つの方法を確かめます。

方法変換後の送信元CLI
Source NAT AutoThunder のインタフェースのアドレスsource-nat auto
Pool アドレス指定したアドレス範囲source-nat pool Pool名
Pool グループ複数の Pool をまとめたものsource-nat pool グループ名

Source NAT Auto

Thunder のインタフェースのアドレスで変換する場合は、仮想ポートで Source NAT Auto を有効にします。Pool を作る必要がなく、いちばん手軽な方法です。

仮想ポートを開く

ADC ›› SLB ›› Virtual Servers で、仮想サーバ(vip-web)の Edit をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers
StatusNameActions
vip-web1Edit Clone
図4 仮想サーバの一覧(実際の画面ではなく、表示のポイントを示したイメージです)

Virtual Port の一覧で、ポート 80 の Edit をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers ›› vip-web(Edit) ›› Virtual Port
Port / Port RangeProtocolActions
80tcp1Edit
図5 仮想ポートの一覧(実際の画面ではなく、表示のポイントを示したイメージです)

Source NAT Auto を有効にする

Source NAT Auto にチェックを入れ、仮想ポートと仮想サーバのそれぞれで Update をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers ›› vip-web(Edit) ›› Virtual Port 80(Edit)
Name 
Protocoltcp
Port or Port Range80
Connection Limit64000000
ActionEnable
Source NAT Pool 
1Source NAT Auto☑
Precedence☐
IP-RR☐
Service Groupsg-web
⋮ (中略)
Cancel2Update
図6 Source NAT Auto の設定(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Source NAT Autoチェックを入れます。サーバへ転送するときの送信元を、Thunder のインタフェースのアドレスに変換します。
2Update仮想ポートの画面で Update をクリックし、続けて仮想サーバの画面でも Update をクリックします。

セッションを確認する

クライアントからアクセスしたあと、セッション(ADC ›› SLB ›› Session)を見ると、Reverse Dest が Thunder のインタフェースのアドレス 10.0.200.149 になっています。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Session
ProtocolForward SourceForward DestReverse SourceReverse Dest
Tcp(伏せています):5119210.0.10.200:8010.0.200.173:80110.0.200.149:24130
Tcp(伏せています):5119610.0.10.200:8010.0.200.173:8010.0.200.149:24132
Tcp(伏せています):5119310.0.10.200:8010.0.200.100:8010.0.200.149:24131
図7 Source NAT Auto のセッション(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Reverse Dest(10.0.200.149)送信元が Thunder のサーバ側のインタフェースのアドレスに変換されています。ポート番号も Thunder が割り当てた番号(24130 など)に変わっており、同じアドレスで複数のセッションを区別しています。

CLI で設定する場合は、仮想ポートの配下で source-nat auto を設定します。

vThunder

vThunder(config)#slb virtual-server vip-web 10.0.10.200
vThunder(config-slb vserver)#port 80 tcp
vThunder(config-slb vserver-vport)#source-nat auto
どのアドレスが使われるか

Source NAT Auto では、サーバにつながる Thunder のインタフェースのアドレスが使われます。VRRP-A で冗長化している場合は、切り替わってもアドレスが変わらないよう、フローティング IP アドレスが使われます。

Pool アドレス

指定したアドレス範囲で変換したい場合は、Pool アドレスを使います。ここでは 10.0.200.10〜10.0.200.12 の範囲の Pool を作り、仮想ポートに適用します。

sg-web Web-01 10.0.200.100(TCP 80) Web-02 10.0.200.173(TCP 80) vThunder VIP 10.0.10.200(TCP 80) サーバ側 10.0.200.149 ラウンドロビン Internet Client IP は伏せています HTTP(TCP 80) 送信元 NAT10.0.200.10〜10.0.200.12
図8 Pool アドレスで送信元 NAT する構成

Pool を作成する

ADC ›› IP Source NAT ›› IPv4 Pools で Create をクリックし、次のように設定して Create をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› IP Source NAT ›› IPv4 Pools ›› Create
1Namesnat_pool_1
2Start Address10.0.200.10
End Address10.0.200.12
3Netmask/24
Gateway 
VRID 
Scaleout Device ID 
4IP-RR◉ Enable○ Disable
Cancel5Create
図9 Pool の作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1NamePool の名前。snat_pool_1 にします。
2Start Address/End Address変換に使うアドレス範囲の最初と最後。10.0.200.10 と 10.0.200.12 にします。
3NetmaskPool のアドレスのネットマスク。/24 にします。
4IP-RRPool のアドレスをラウンドロビンで順に使います。Enable を選びます。
5CreatePool を作成します。
Pool のアドレスについて

Pool のアドレスは、サーバから返ってくる応答の宛先になります。今回はサーバと同じセグメント(10.0.200.0/24)の空きアドレスを使っています。応答がこれらのアドレスあてに Thunder へ戻るよう、ほかの機器と重ならないアドレスを選びます。

仮想ポートに適用する

Source NAT Auto と同じ手順で仮想ポートを開き、Source NAT Pool で snat_pool_1 を選びます。前の手順で Source NAT Auto にチェックを入れた場合は、チェックを外します。仮想ポートと仮想サーバのそれぞれで Update をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers ›› vip-web(Edit) ›› Virtual Port 80(Edit)
Protocoltcp
Port or Port Range80
⋮ (中略)
1Source NAT Poolsnat_pool_1
2Source NAT Auto☐
Service Groupsg-web
Template TCP 
Persist Type○ Destination IP○ SSL SID○ Source IP
Cancel3Update
図10 仮想ポートへの Pool の適用(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Source NAT Pool送信元 NAT に使う Pool。snat_pool_1 を選びます。
2Source NAT Autoチェックを外したままにします。
3Update仮想ポートと仮想サーバのそれぞれで Update をクリックします。

セッションを確認する

セッションを見ると、Reverse Dest が Pool の範囲のアドレス(今回は 10.0.200.10 と 10.0.200.11)になっています。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Session
ProtocolForward SourceForward DestReverse SourceReverse Dest
Tcp(伏せています):5142810.0.10.200:8010.0.200.100:80110.0.200.11:2050
Tcp(伏せています):5142510.0.10.200:8010.0.200.173:8010.0.200.10:2049
図11 Pool アドレスのセッション(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Reverse Dest(10.0.200.10、10.0.200.11)送信元が Pool の範囲のアドレスに変換されています。IP-RR を有効にしているので、セッションによって使われるアドレスが分かれています。

CLI で設定する場合は、ip nat pool で Pool(snat_pool_1)を作り、仮想ポートの配下で source-nat pool に Pool の名前を指定します。

vThunder

vThunder(config)#ip nat pool snat_pool_1 10.0.200.10 10.0.200.12 netmask /24 ip-rr 

vThunder(config)#slb virtual-server vip-web 10.0.10.200 
vThunder(config-slb vserver)#port 80 tcp               
vThunder(config-slb vserver-vport)#source-nat pool snat_pool_1

Pool グループ

1つの Pool は連続したアドレス範囲です。飛び飛びのアドレスで変換したいときは、複数の Pool をまとめた Pool グループを使います。ここでは 10.0.200.13、10.0.200.15、10.0.200.17 の3つのアドレスで変換します。

sg-web Web-01 10.0.200.100(TCP 80) Web-02 10.0.200.173(TCP 80) vThunder VIP 10.0.10.200(TCP 80) サーバ側 10.0.200.149 ラウンドロビン Internet Client IP は伏せています HTTP(TCP 80) 送信元 NAT10.0.200.13/.15/.17
図12 Pool グループで送信元 NAT する構成

Pool を3つ作成する

Pool アドレスと同じ手順で、アドレスを1つずつ持つ Pool を3つ作ります。

vThunder 設定画面(GUI)画面イメージ
ADC ›› IP Source NAT ›› IPv4 Pools
Pool NameStart AddressEnd AddressNetmask
1snat_pool_group_member110.0.200.1310.0.200.13/24
snat_pool_group_member210.0.200.1510.0.200.15/24
snat_pool_group_member310.0.200.1710.0.200.17/24
図13 Pool の一覧(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Start Address=End Address最初と最後を同じアドレスにして、1つのアドレスだけを持つ Pool にしています。

Pool グループを作成する

ADC ›› IP Source NAT ›› Groups で Create をクリックし、次のように設定して Create をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› IP Source NAT ›› Groups ›› Create
1Pool Group Namesnat_pool_group1
2Group TypeIPv4
VRID 
3IPv4 Member☑ snat_pool_group_member1
☑ snat_pool_group_member2
☑ snat_pool_group_member3
Cancel4Create
図14 Pool グループの作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Pool Group NamePool グループの名前。snat_pool_group1 にします。
2Group TypeIPv4 を選びます。
3IPv4 Memberメンバーにする Pool。STEP 1 で作った3つの Pool にチェックを入れます。
4CreatePool グループを作成します。

Groups の一覧に、作成した Pool グループとメンバーが表示されます。

vThunder 設定画面(GUI)画面イメージ
ADC ›› IP Source NAT ›› Groups
NameMember List
snat_pool_group1snat_pool_group_member1, snat_pool_group_member2,
snat_pool_group_member3
図15 Pool グループの一覧(実際の画面ではなく、表示のポイントを示したイメージです)

仮想ポートに適用する

仮想ポートを開き、Source NAT Pool で snat_pool_group1 を選びます。一覧には Pool と Pool グループの両方が表示されます。仮想ポートと仮想サーバのそれぞれで Update をクリックします。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Virtual Servers ›› vip-web(Edit) ›› Virtual Port 80(Edit)
Protocoltcp
⋮ (中略)
1Source NAT Pool 選べる Pool と Pool グループ snat_pool_group_member1
snat_pool_group_member2
snat_pool_group_member3
snat_pool_group1
Source NAT Auto☐
Service Groupsg-web
⋮ (中略)
Cancel2Update
図16 仮想ポートへの Pool グループの適用(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Source NAT PoolPool グループ snat_pool_group1 を選びます。
2Update仮想ポートと仮想サーバのそれぞれで Update をクリックします。

セッションを確認する

セッションを見ると、Reverse Dest が Pool グループのアドレスになっています。今回の3つのセッションは、どれも 10.0.200.13 に変換されていました。

vThunder 設定画面(GUI)画面イメージ
ADC ›› SLB ›› Session
ProtocolForward SourceForward DestReverse SourceReverse Dest
Tcp(伏せています):5163010.0.10.200:8010.0.200.100:80110.0.200.13:2048
Tcp(伏せています):5162910.0.10.200:8010.0.200.173:8010.0.200.13:2049
Tcp(伏せています):5163310.0.10.200:8010.0.200.173:8010.0.200.13:2051
図17 Pool グループのセッション(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Reverse Dest(10.0.200.13)送信元が Pool グループのメンバー(snat_pool_group_member1)のアドレスに変換されています。同じアドレスでも、ポート番号(2048、2049、2051)でセッションを区別しています。

CLI で設定する場合は、ip nat pool-group で Pool グループを作って Pool をメンバーに登録し、仮想ポートの配下で source-nat pool に Pool グループの名前を指定します。

vThunder

vThunder(config)#ip nat pool snat_pool_group_member1 10.0.200.13 10.0.200.13 netmask /24
vThunder(config)#ip nat pool snat_pool_group_member2 10.0.200.15 10.0.200.15 netmask /24
vThunder(config)#ip nat pool snat_pool_group_member3 10.0.200.17 10.0.200.17 netmask /24

vThunder(config)#ip nat pool-group snat_pool_group1
vThunder(config-pool-group:snat_pool_group1)#member snat_pool_group_member1
vThunder(config-pool-group:snat_pool_group1)#member snat_pool_group_member2
vThunder(config-pool-group:snat_pool_group1)#member snat_pool_group_member3

vThunder(config)#slb virtual-server vip-web 10.0.10.200 
vThunder(config-slb vserver)#port 80 tcp    
vThunder(config-slb vserver-vport)#source-nat pool snat_pool_group1

まとめ

方法GUI の設定CLI(仮想ポートの配下)変換後の送信元
Source NAT Auto仮想ポートの Source NAT Auto にチェックsource-nat autoThunder のインタフェースのアドレス
Pool アドレスIP Source NAT ›› IPv4 Pools で作成し、Source NAT Pool で選ぶsource-nat pool snat_pool_1Pool の範囲のアドレス
Pool グループIP Source NAT ›› Groups で作成し、Source NAT Pool で選ぶsource-nat pool snat_pool_group1メンバーの Pool のアドレス

どの方法でも、変換されたかどうかはセッション(ADC ›› SLB ›› Session)の Reverse Dest で確かめられます。Reverse Dest がクライアントの IP アドレスのままなら、送信元 NAT は効いていません。

コメント