実用的なケースI:レイヤ4 NATとDNATロードバランシングの理解

投稿日: 20 年 2017 月 XNUMX 日

これらの実用的な事例は、ネットワーキング、セキュリティ、および高可用性テクノロジがどのように機能するかをよりよく理解するためのトレーニングガイドです。

まず、次の練習をしてください。

Step 1. Install Zevenet CE from GIT, SF or Docker
            https://www.zevenet.com/community

Step 2. Create L4xNAT farm with 2 backends and NAT or DNAT mode
            https://www.zevenet.com/knowledge-base/

Step 3. Execute in a console of Zevenet CE and try to understand the result of:
            root# iptables -t mangle -n -L
            root# iptables -t nat -n -L

公式の疑いと意見 メーリングリスト!

回答

ロードバランサは、クライアントとバックエンドまたは実サーバとの間のトラフィックフローを確実にすることを担当するネットワークデバイスです。そのため、フローを確実にするために4ステップが考慮されます。

Load_Balancer_l4_packet_flows

1. クライアントからのパケットはクライアントからロードバランサに送信されます。
2. パケットはロードバランサから1つの選択された実サーバまたはバックエンドに送信されます。
3. パケットがサーバーからロードバランサに応答します
4. パケットは応答としてクライアントに送り返されます

Zevenet レイヤー4(LSLB – L4xNATプロファイル)は、これらすべてのパケットを次のように処理します。 ネットフィルタ サブシステムスルー iptables そしてネットワークルーティングシステム。

このため、設定時に DTA テーブルに生成された規則を見つけることができるファームを起動してiptablesコマンドを実行します。 マングルNAT netfilterの。 についての詳細情報 Netfilterテーブルはこちら .

PREROUTING のチェーン マングル 表には、一致するルールが表示されます。

–宛先がサービスの仮想アドレスとポートであるすべての送信元またはクライアントからのすべての着信パケット(例では 192.168.101.250:443)
–次に、特定のアルゴリズムに従ってパケットにマークを付けます。この場合は、確率法に基づく重みです。

root@zevenet:~# iptables -L -t mangle -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            CONNMARK restore
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 1.00000000000 multiport dports 443 /*  FARM_app_1_  */ MARK set 0x20d
MARK       tcp  --  0.0.0.0/0            192.168.101.250      statistic mode random probability 0.50000000000 multiport dports 443 /*  FARM_app_0_  */ MARK set 0x20c
CONNMARK   all  --  0.0.0.0/0            0.0.0.0/0            state NEW CONNMARK save

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

これで着信パケットがマークされました。 PREROUTING のチェーン NAT テーブル私たちはパケットの目的地アドレスを1つのバックエンドか別のものに変えるためにパケットマークを使用します。 この例では、IPアドレス 192.168.1.10192.168.1.11 実サーバーです。

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

また, コンコースラック テーブルは宛先アドレス変換を管理します。 DTA モードでは、ロードバランサがバックエンドのデフォルトゲートウェイになるため、リターンパケットはルートによって管理されます。

の場合には NATまたは SNAT 一般的に知られているように、conntrackは、宛先アドレス変換だけでなく、送信元アドレス変換も管理します。 この場合、との唯一の違いは DTA 返信されたパケットは、ルーティングシステムではなく、conntrackテーブルによって管理されます。 したがって、2つの新しいルールを見つけることができます 後書き 実行するためのNATテーブルのチェーン マスカレード ファームの仮想IPアドレス

root@zevenet:~# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.1.10:443
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.1.11:443

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20c /*  FARM_app_0_  */ to:192.168.101.250
SNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            mark match 0x20d /*  FARM_app_1_  */ to:192.168.101.250

さらなる疑問? にお願いします メーリングリスト!

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事