論理構成(IPネットワーク)
今回は論理構成(IPアドレッシング)について解説したいと思います。
だいたいマニュアル等に掲載されている内容では有りますが・・・
- ノーマルなL3構成
うまい名前が思いつかなかったのでL3構成としましたが、クライアント側とサーバ側が異なるサブネットになる構成です。
サーバから見たゲートウェイアドレスはBIG-IPのSelf IPになります。
Self IPはBIG-IPに設定されるデバイス自身のIPアドレスで、実際にサービスを受け付けるIPアドレス(Virtual Server)とは異なります。
また、この構成ではVirtual Serverを設定しない限りはクライアントとサーバが直接通信するすることはできません。
そしてクライアント側、サーバ側ともにエンドポイントが同じセグメントに存在する必要は無く、以下のような構成も可能ですが、当然サーバおよびBIG-IP上にルーティングの設定が必要になります。
いずれの構成でも、BIG-IP上でアドレス変換の設定を明示的に行わない限りは、サーバにパケットが到達する際のソースIPアドレスはクライアントのIPアドレスになります。 - クライアントとサーバが同一セグメント(ワンアーム)
クライアントとサーバが同一セグメントに存在する場合の構成です。たとえばWeb-AP-DBの通信があるケースで、すべてを同じセグメントに置いておいてかつBIG-IPでトラフィックを管理するような場合です。
BIG-IPは、TCPであれば通常はTCPのProxyとして動作し、クライアント側/サーバ側それぞれで個別にTCPのセッションを確立するため、ステートを管理しています。このため、明示的に設定をしない場合は非対称経路の通信は基本的には行うことができません。この構成での通信は、行きのパケットは
Client -> BIG-IP -> Server
という経路になりますが、戻りパケットはクライアントとサーバが同一サブネット上にあり、BIG-IPを介さずとも通信できるため、
Server -> Client
という経路になり、サーバとBIG-IPの間でセッションを確立することができないため正しく通信することができません。
回避策はBIG-IPでソースIPをBIG-IPのSelf IPに変換する(SNAT)ことです。
これによって、サーバはそのパケットの戻りをBIG-IPに返せるため正しく通信できます。
クライアントのIPアドレスを保持したい場合はクライアントとサーバを別セグメントに配置するか、同セグメントに配置してHTTPであればHTTPヘッダにクラインとのIPアドレスを埋め込む必要があります。 - DSR
Direct Server Returnという一般名称なのですが、BIG-IPのマニュアルにはnPathという名前で記載されています。構成等もマニュアルに書いてあるので割愛しますが、このために必要な設定は- L4モードで動かす
- Virtual ServerのIPアドレスを同じIPアドレスを振分先リアルサーバ(Pool Member)のループバックアドレスに設定する
- VSの設定で、Port TranslationをDisableにする
です。このように、DSRの場合はL4モードでしか動作しないため、L7に関連する処理は何も入れることができません。
また、L4モードはTCPのエンドポイントがクライアントとサーバになり、BIG-IPでProxyしないため各種DoS対策機能を使用することができません。LVS等ならともかくBIG-IPのようなシステム全体のトラフィック管理を担うような物でDSRを使用するメリットはあまり無いでしょう。 - L4モードで動かす
コメントを投稿