【BIG-IP LTM】アドレス変換(NAT) と動作確認 Version: 16.1.2

BIG-IP で設定するアドレス変換(NAT)の種類と、それぞれの設定・動作を確かめます。BIG-IP からサーバ(Node)に振り分けるとき、サーバの応答を必ず BIG-IP に戻すために、送信元アドレスを変換(SNAT)することがあります。BIG-IP をネットワークの片側だけにつなぐワンアーム構成では、サーバの応答が BIG-IP を通らないので、送信元の変換が必要です。

この記事でわかること
  1. NAT List:宛先アドレスを 1 対 1 で変換する
  2. SNAT:特定の送信元からの通信の送信元アドレスを変換する
  3. NAT List と SNAT の動作をキャプチャと統計で確かめる
  4. SNAT Pool:Virtual Server の通信の送信元を Pool のアドレスに変換する
  5. Auto Map:Virtual Server の通信の送信元を Self IP に変換する
前提の記事

この記事は、次の記事で作った構成(Virtual Server Web-VS:10.0.1.100、Web-01:10.0.2.24、Web-02:10.0.2.71)を使います。

BIG-IP 16.1.2 で検証しています。16.1 系はすでに F5 のサポート期間が終わっているので、これから構築する場合はサポート中のバージョンを選んでください。クライアントのグローバル IP アドレスは伏せています。

送信元の変換が必要な理由

サーバは、受け取ったパケットの送信元アドレスに向けて応答します。送信元がクライアントのアドレスのままだと、サーバの応答はデフォルトゲートウェイを通ってクライアントに直接返り、BIG-IP を通りません。BIG-IP は自分が転送した接続の応答を受け取れないので、通信が成り立たなくなります。

送信元を BIG-IP のアドレスに変換しておけば、サーバの応答の宛先が BIG-IP になり、応答は必ず BIG-IP を通って戻ります。

SNAT なし応答が BIG-IP を通らないBIG-IPクライアントサーバSNAT あり応答は BIG-IP を通って戻るBIG-IPクライアントサーバ
図1 送信元を変換しないと、サーバの応答が BIG-IP を通らない

BIG-IP のアドレス変換には、次の4つがあります。

種類変換するもの対応適用する範囲
NAT List宛先(外から NAT Address 宛ての通信)と送信元(Origin Address から出ていく通信)1 対 1BIG-IP 全体
SNAT指定した送信元(Origin)からの通信の送信元多 対 1BIG-IP 全体
SNAT PoolVirtual Server 宛ての通信の送信元を、Pool に登録したアドレスに多 対 1(または多 対 多)適用した Virtual Server
Auto MapVirtual Server 宛ての通信の送信元を、BIG-IP の Self IP に多 対 1適用した Virtual Server

BIG-IP 全体で変換する(NAT List/SNAT)

Virtual Server に関係なく、ルータのように BIG-IP を通る通信をアドレス変換したいときは、NAT List や SNAT を使います。

NAT List(1 対 1 NAT)

NAT List は、NAT Address と Origin Address を 1 対 1 で対応づけます。クライアントが NAT Address 宛てに送ると、BIG-IP は宛先を Origin Address に変換して転送します。逆に Origin Address から出ていく通信は、送信元が NAT Address に変換されます。ポート番号は変換しません。ここでは、NAT Address 10.0.1.101 と Web-01(10.0.2.24)を対応づけます。

クライアントBIG-IP LTMNAT Address10.0.1.101Web-01Origin 10.0.2.24宛先:10.0.1.101宛先:10.0.2.24NAT List:宛先を 1 対 1 で変換
図2 NAT List で宛先を変換する

Local Traffic ›› Address Translation ›› NAT List を開き、右上の Create をクリックします。

画面イメージについて

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

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Address Translation : NAT List ›› New NAT…
General Properties
1NameNATLIST-1
2NAT Address10.0.1.101
3Origin Address10.0.2.24
StateEnabled
Configuration
Traffic Group☑ Inherit traffic group from current partition / path
traffic-group-1 (floating)
ARP☑ Enabled
VLAN / Tunnel Traffic* All
Auto Last HopDefault
CancelRepeat4Finished
図3 NAT List の作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name任意の名前。ここでは NATLIST-1
2NAT Addressクライアントが宛先にする変換後のアドレス。10.0.1.101
3Origin AddressNAT Address に対応づける実際のアドレス(Web-01)。10.0.2.24
4Finishedクリックすると、NAT List に NATLIST-1 が登録されます

SNAT(Secure Network Address Translation)

SNAT は、指定した送信元(Origin)からの通信の送信元アドレスを、指定したアドレスに変換します。複数の送信元を1つのアドレスにまとめる多対 1 の変換です。ここでは、60.0.0.0/8 からの通信の送信元を 10.0.1.102 に変換します。

クライアントBIG-IP LTMSNATOrigin 60.0.0.0/8サーバ送信元:60.0.0.0/8 の端末送信元:10.0.1.102SNAT:送信元を変換
図4 SNAT で送信元を変換する

Local Traffic ›› Address Translation ›› SNAT List を開き、右上の Create をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Address Translation : SNAT List ›› New SNAT…
General Properties
1NameSNAT-1
Description 
Configuration
2TranslationIP Address 10.0.1.102
3OriginAddress List
Address ListAddress/Prefix Length: 60.0.0.0/8 Add60.0.0.0/8
 
Edit Delete
Source PortPreserve
VLAN / Tunnel Traffic* All
Auto Last HopDefault
CancelRepeat4Finished
図5 SNAT の作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name任意の名前。ここでは SNAT-1
2TranslationIP Address を選び、変換後の送信元アドレス 10.0.1.102 を入力します
3Origin/Address List変換の対象にする送信元。Origin を Address List にし、Address/Prefix Length に 60.0.0.0/8 を入力して Add で一覧に登録します
4Finishedクリックすると、SNAT List に SNAT-1 が登録されます

NAT List と SNAT の動作を確かめる

NAT List と SNAT を組み合わせ、BIG-IP の外にあるクライアントから、内部の Web-01 にアドレス変換でアクセスできるかを確かめます。宛先は NAT List で、送信元は SNAT で変換されます。

クライアントBIG-IP LTMNAT Address10.0.1.101Web-0110.0.2.24宛先 :10.0.1.101送信元:クライアント宛先 :10.0.2.24送信元:10.0.1.102NAT List と SNAT の組み合わせ
図6 NAT List と SNAT を組み合わせたときの変換

クライアントのブラウザで http://10.0.1.101 を開くと、Web-01 のページが表示されます。

クライアントのブラウザ画面イメージ
http://10.0.1.101/
Web-01NAT Address 宛てのアクセス
図7 NAT Address 宛てにアクセスした結果(実際の画面ではなく、表示結果のイメージです)

BIG-IP を通るパケットをキャプチャすると、行きと戻りでアドレスが変換されていることがわかります。

パケットキャプチャ画面イメージ
No.SourceDestinationProtocolInfo区間
1xx.xx.xxx.xxx10.0.1.101TCP54081 → 80 [SYN] Seq=0クライアント→BIG-IP
210.0.1.10210.0.2.24TCP54081 → 80 [SYN] Seq=0BIG-IP→Web-01
310.0.2.2410.0.1.102TCP80 → 54081 [SYN, ACK]Web-01→BIG-IP
410.0.1.101xx.xx.xxx.xxxTCP80 → 54081 [SYN, ACK]BIG-IP→クライアント
図8 BIG-IP を通るパケット(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.区間変換の内容
1クライアント→BIG-IP宛先は NAT Address の 10.0.1.101
2BIG-IP→Web-01宛先が Origin Address の 10.0.2.24 に(NAT List)、送信元が 10.0.1.102 に(SNAT)変換される。ポート番号 54081 はそのまま
3Web-01→BIG-IPWeb-01 は 10.0.1.102 に応答するので、応答が BIG-IP に戻る
4BIG-IP→クライアント送信元が 10.0.1.101、宛先がクライアントのアドレスに戻される

NAT の統計

Statistics ›› Module Statistics ›› Local Traffic を開き、Statistics Type を NATs にすると、NAT List ごとの通信量や接続数を確認できます。

BIG-IP 統計画面(Local Traffic)画面イメージ
1Statistics TypeNATs
Data FormatNormalized
Auto RefreshDisabled
BitsPacketsConnections
NATPartition / PathStateInOutInOutCurrentMaximumTotal
2NATLIST-1CommonEnabled255.3K1.1M2461540764
図9 NAT List の統計(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1Statistics TypeNATs を選ぶと NAT List の統計が表示されます
2NATLIST-1NAT List ごとの送受信量(Bits/Packets)と接続数(Current/Maximum/Total)

Virtual Server で送信元を変換する(SNAT Pool/Auto Map)

Virtual Server 宛ての通信の送信元を変換するには、SNAT Pool か Auto Map を Virtual Server に適用します。宛先は、Virtual Server の働きで Virtual Server のアドレスから Node のアドレスに変換されます。

SNAT Pool

変換後の送信元アドレスを SNAT Pool に登録し、Virtual Server に適用します。ここでは 10.0.1.103 を登録し、Virtual Server(Web-VS:10.0.1.100)に適用します。

クライアントBIG-IP LTMVirtual Server10.0.1.100Web-0110.0.2.24宛先 :10.0.1.100送信元:クライアント宛先 :10.0.2.24送信元:10.0.1.103SNAT Pool を適用した Virtual Server
図10 SNAT Pool を適用した Virtual Server の変換

SNAT Pool を作る

Local Traffic ›› Address Translation ›› SNAT Pool List を開き、右上の Create をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Address Translation : SNAT Pool List ›› New SNAT Pool…
General Properties
1NameSNAT-Pool-1
Configuration
2Member ListIP Address: 10.0.1.103 Add10.0.1.103
 
Edit Delete
CancelRepeat3Finished
図11 SNAT Pool の作成(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1Name任意の名前。ここでは SNAT-Pool-1
2Member List変換後の送信元アドレス。IP Address に 10.0.1.103 を入力して Add で登録します
3Finishedクリックすると、SNAT Pool List に SNAT-Pool-1 が登録されます

Virtual Server に適用する

Local Traffic ›› Virtual Servers ›› Virtual Server List で Web-VS をクリックします。Source Address Translation を SNAT にすると SNAT Pool の欄が現れるので、SNAT-Pool-1 を選んで Update をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Virtual Servers : Virtual Server List ›› Web-VS
⋮ (中略)
1Source Address TranslationSNAT
SNAT PoolSNAT-Pool-1
⋮ (中略)
2Update
図12 Web-VS に SNAT Pool を適用する(実際の画面ではなく、設定項目のポイントを示したイメージです)

動作を確かめる

クライアントのブラウザで http://10.0.1.100 を開くと、Web-01 のページが表示されます。tmsh の show sys connection で、BIG-IP が持っている接続の情報を見ると、アドレス変換の様子がわかります。

BIG-IP(tmsh)

admin@(BIG-IP-1)(cfg-sync Standalone)(Active)(/Common)(tmos)# show sys connection 
Really display 1000 connections? (y/n) y
Sys::Connections
xx.xx.xxx.xxx:57958  10.0.1.100:80  10.0.1.103:57958  10.0.2.24:80  tcp 3 (tmm: 1) none none
show sys connection の1行(SNAT Pool の例)xx.xx.xxx.xxx:57958クライアントの送信元10.0.1.100:80Virtual Server10.0.1.103:57958SNAT 後の送信元10.0.2.24:80Node(Web-01)Client-side(クライアント ⇄ BIG-IP)Server-side(BIG-IP ⇄ Node)
図13 show sys connection の1行の読み方

1行の前半2つがクライアントと BIG-IP の間(Client-side)、後半2つが BIG-IP と Node の間(Server-side)の接続です。Web-01 に転送するとき、送信元が SNAT Pool の 10.0.1.103 に変換されていることがわかります。送信元ポート 57958 は変わっていません。

Auto Map

Auto Map を適用すると、BIG-IP の Self IP(BIG-IP 自身のインタフェースのアドレス)を使って送信元を変換します。SNAT Pool のように変換用のアドレスを別に用意する必要はありません。冗長構成では、フェイルオーバーしても同じアドレスを使えるように Floating Self IP を用意しておくのが一般的です。

今回は1台構成で、Network ›› Self IPs で Self IP が 10.0.1.201 であることを確認できます。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Network ›› Self IPs
NameIP AddressNetmaskVLAN / Tunnel
external-ip110.0.1.201255.255.255.0external
図14 Self IP の一覧(実際の画面ではなく、表示のポイントを示したイメージです)

Web-VS の設定画面で、Source Address Translation を Auto Map にして Update をクリックします。

BIG-IP 設定画面(Configuration Utility)画面イメージ
Local Traffic ›› Virtual Servers : Virtual Server List ›› Web-VS
⋮ (中略)
1Source Address TranslationAuto Map
⋮ (中略)
2Update
図15 Web-VS に Auto Map を適用する(実際の画面ではなく、設定項目のポイントを示したイメージです)
クライアントBIG-IP LTMVirtual Server10.0.1.100Web-0210.0.2.71宛先 :10.0.1.100送信元:クライアント宛先 :10.0.2.71送信元:10.0.1.201Auto Map を適用した Virtual Server
図16 Auto Map を適用した Virtual Server の変換

ブラウザで http://10.0.1.100 を開くと、今度は Web-02 のページが表示されました。show sys connection を見ると、Web-02(10.0.2.71)に転送するとき、送信元が Self IP の 10.0.1.201 に変換されています。

admin@(BIG-IP-1)(cfg-sync Standalone)(Active)(/Common)(tmos)# show sys connection

Really display 1000 connections? (y/n) y
Sys::Connections
xx.xx.xxx.xxx:61015  10.0.1.100:80  10.0.1.201:61015  10.0.2.71:80  tcp 0 (tmm:0) none none

うまくいかないとき

状態よくある原因確認すること
応答が返らない送信元を変換していないので、サーバの応答が BIG-IP を通らないVirtual Server の Source Address Translation、サーバのデフォルトゲートウェイ
サーバから応答が届かないサーバから SNAT のアドレス(10.0.1.102 など)に戻る経路がないサーバ側のルーティング
NAT Address に届かないBIG-IP がそのアドレスの ARP に応答していないNAT List の ARP、VLAN / Tunnel Traffic の設定
変換されたか分からない―show sys connection の Server-side の送信元、NATs の統計

まとめ

種類設定場所この記事の設定変換の結果
NAT ListLocal Traffic ›› Address Translation ›› NAT List10.0.1.101 ⇔ 10.0.2.24宛先 10.0.1.101 → 10.0.2.24
SNATLocal Traffic ›› Address Translation ›› SNAT List60.0.0.0/8 → 10.0.1.102送信元 → 10.0.1.102
SNAT PoolSNAT Pool List で作り、Virtual Server の Source Address Translation を SNAT にSNAT-Pool-1(10.0.1.103)送信元 → 10.0.1.103
Auto MapVirtual Server の Source Address Translation を Auto Map にSelf IP 10.0.1.201送信元 → 10.0.1.201

Virtual Server を使う負荷分散で送信元を変換するなら、まず SNAT Pool か Auto Map を検討します。変換の結果は show sys connection の Server-side の送信元で確かめられます。

コメント