Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

CSRX を使用したサービス連鎖の Contrail

 

サービス連鎖とは、特定の順序で複数のネットワークエンティティを通過するトラフィックの転送の概念であり、各ネットワークエンティティはファイアウォール、IPS、NAT、LB などの特定の機能を実行します。サービス連鎖を従来の方法で実行するのは、スタンドアロンのハードウェアアプライアンスを使用することですが、これにより、柔軟でコストのかからないサービス連鎖を実現し、設定した時間を延長できます。動的なサービス連鎖では、ネットワーク機能が VM またはコンテナとして導入され、論理的で自動的に連鎖させることができます。たとえば、Figure 1は、CSRX コンテナレベル 4 –レベル7ファイアウォールを使用して2つの異なるネットワーク内の2個のポッド間で Contrail を使用して、両者間のトラフィックを保護しています。

Figure 1: サービス連鎖
サービス連鎖
Note

ここで左と右のネットワークは、左’から右へのフローに沿ってわかりやすくするためだけに使用されていますが、独自のコース名を使用することもできます。Pod を接続する前にネットワークを設定してください。または、pod は作成されません。

クライアントと CSRX ポッドを立ち上げる

で’は、この yaml ファイルを使用して2つのバーチャルネットワークを作成してみましょう。

Verify using Kubectl:

この’2 つのネットワークが Contrail になっていることを確認してから、先へ進むことをお勧めします。Contrail UI で、[> ネットワークの構成 > Networks > デフォルト-ドメイン > k8s を表示します。Figure 2は、左ネットワークに焦点を当てています。

Note

ネットワークの YAML ファイルでデフォルトのネームスペースを使用すると、デフォルトのドメインおよびプロジェクト k8s にデフォルトの名前空間が作成されます。

Figure 2: 2つのネットワークの作成を確認
2つのネットワークの作成を確認

クライアントポッドの作成

ここで’は、次の annotation オブジェクトを使用して、各ネットワークに1つずつ、Ubuntu ポッドを2つ作成してみましょう。

cSRX ポッドの作成

ここで、次の YAML ファイルを使用して、左ネットワークに1つのインターフェイスを備え、右側のネットワークに1つのインターフェイスを持つ Juniper cSRX コンテナを作成します。

インターフェイスの配置が正しいネットワークに含まれていることを確認します。

Note

各コンテナは、前述の annotations オブジェクトが作成し、特定のネットワークに1つのインターフェイスを追加するため、注釈オブジェクトが使用されているかどうかに関係なく、クラスター全体にデフォルトのネットワークに属しているインターフェイスが1つあります。

PodIP の検証

PodIP を検証するには、左の pord、右ポッドにログインし、cSRX として IP/MAC アドレスを確認します。

Note

他のポッドとは異なり’、CSRX は DHCP を使用して IP を取得しませんでした。また、工場デフォルト構成で開始されるため、設定する必要があります。

Note

デフォルトでは、cSRX eth0 はシェルからのみ表示され、管理に使用されます。ネットワークを接続する場合、最初に接続されたネットワークは eth1 にマップされます。これは、GE 0/0/1 であり、2つ目の添付は eth2 にマップされています。これは、GE-0/0/0 です。

cSRX IP の構成

CSRX でこの基本設定を構成します。正しい IP アドレスを割り当てるには、kubectl の MAC/IP アドレスマッピングを使用して pod コマンド出力について説明するだけでなく、デフォルトのセキュリティポリシーを設定して、すべてを許可するようにします。

CSRX に割り当てられている IP アドレスを確認します。

左ポッドで ping テストを実行しても、ルートが存在しないため失敗します。

左と右ポッドに静的ルートを追加してから、ping を再試行してください。

ルーティングにも対応しているため’、サービスチェーンを作成したので ping に失敗しています。私’たちのパケットに何が起こったのかを見てみましょう。

’CSRX にセッションがありません。Ping の問題をトラブルシューティングするには、このコンテナをホストするコンピュートノード cent22 にログインして、TShark を使用してトラフィックをダンプし、ルーティングを確認します。コンテナのリンクを取得するには、次のようにします。

Vif0/3 と vif0/4 は、右ポッドにバインドされ、tapeth0-89a4e2 および tapeth1-89a4e2 にそれぞれリンクしていることに注意してください。Vif0/5、vif 0/8、Vif0/9 が cSRX1 に結び付けられている場合、左ポッドの場合も同様です。これにより、インターフェイスをヒットするパケット/バイトの数と VRF も確認できます。VRF 3 はデフォルトのクラスターネットワーク用であり、VRF 6 は左ネットワーク用、VRF 5 は適切なネットワーク用です。図10.3 では、すべての視点 (コンテナ、Linux、vr) からのインターフェイスマッピングを見ることができます。

Figure 3: インターフェイスマッピング
インターフェイスマッピング

左’ポッドから右ポッドへ ping を再試行し、右ポッドのタップインターフェイス上で tshark を使用して、さらに詳しく調査してみましょう。

Ping が右ポッドに’到達していないように見えます’。 cSRX’の左ネットワークタップインターフェイスを確認してみましょう。

パケットを見ることができますが、このパケットをドロップすると考えられる cSRX セキュリティはありません。

次のネットワーク VRF のルーティングテーブルをチェックして、コンピュートノードの vrouter_vrouter agent_1 コンテナにログインします。

6が、左ネットワークのルーティングテーブル VRF であることに注意してください。同様に、適切なネットワーク VRF ルーティングテーブルにも同じことが言えますが、ルートが欠落しています。

したがって、すべてのポッドが同じコンピュートノードでホストされている場合’でも、それらを相互に接続することができます。また、これらのポッドがいくつかの異なるコンピュートノードでホストされている場合、解決すべき大きな問題が発生しています。サービスチェーン’では、コンテナのルートを調整するだけでなく、ポッドの位置に関係なく、コンピューティングノード間の vrouter 間のルート交換を行うこともできません。 (pod が別の計算ノードに移動した場合に自動的に調整されます)。Labbing サービスチェーン’が、この種の CLI トラブルシューティング…のファンではないネットワーク管理者にとって重要な懸念事項を解決する前に、Contrail コントローラ GUI を使用して同じトラブルシューティングを実行できます。

Contrail コントローラ UI から、> Infrastructure > 仮想ルーターを監視してから、次の画面Figure 4キャプチャに示すように、そのポッドをホストしているノードを選択します。

Figure 4: Contrail コントローラ GUI のアクション
Contrail コントローラ GUI のアクション

Figure 4は、vrouter_vrouter agent-1 コンテナで vif-l コマンドを実行した場合と同等の [Interface] タブを示していますが、さらに多くの情報を示しています。インスタンス ID の最初の6文字は常にタップインターフェイスの名前に反映されています。この名前とタップインタフェイスとの間のマッピングに注目してください。

Cowboys は、GUI を使用しています。’Figure 5のように、[ルート] タブに移動し、表示する VRF を選択して、各 VRF のルーティングテーブルを確認してみましょう。

Figure 5: 各 VRF のルーティングテーブルを確認しています
各 VRF のルーティングテーブルを確認しています

左側のネットワークを選択します。この名前には、ドメイン (およびプロジェクト) が含まれているため、より長い時間がかかります。適切なネットワークからの 10.20.20.0/24 プレフィックスがないことを確認できます。また、左側のネットワークで学習した MAC アドレスを確認するには、L2 を選択する必要があります。 (rt--dump 6--family bridge コマンドと同等の GUI を使用します)。

サービス連鎖

ここで’は、CONTRAIL コマンド GUI を使用して、cSRX を利用して連鎖を処理してみましょう。サービス連鎖は、以下の4つのステップで構成されています。

  1. サービステンプレートを作成します。
  2. 完了したばかりのサービステンプレートに基づいて、サービスインスタンスを作成します。
  3. ネットワークポリシーを作成し、以前に作成したサービスインスタンスを選択します。
  4. このネットワークポリシーをネットワークに適用します。
Note

すべての環境に単一の管理ポイントを提供するには Contrail コマンド GUI が最適なソリューションであるため、it 部門を使用して、サービスの変更を構築します。通常 Contrail コントローラ GUI を使用して、サービス連鎖も組み込むことができます。

まず、’Figure 7Figure 8に示すように Contrail コマンド GUI (当社のセットアップ https://10.85.188.16:9091/) にログインし、[サービス > Catalog > Create] を選択してみましょう。

Figure 6: Contrail コマンドへのログイン
Contrail コマンドへのログイン
Figure 7: 新しいサービスの作成
新しいサービスの作成

ここでは、cSRX myweb-CS というサービステンプレートの名前を挿入してから、サービスモード用の v2 とバーチャルマシンを選択します。Figure 9に示すように、サービスタイプとしてインネットワークとファイアウォールを選択します。

Figure 8: サービスタイプの選択
サービスタイプの選択

次に [管理] をクリックし、[作成] を選択します。

Figure 9: サービスの作成
サービスの作成

ここで、[導入] を選択して [作成]5d; をクリックし、Figure 11に示すようにサービスインスタンスを作成します。

Figure 10: サービスインスタンスの導入
サービスインスタンスの導入

このサービスインスタンスに名前を指定してから、作成したテンプレートの名前をドロップダウンメニューから選択します。この場合、インスタンスの cSRX 見込みから適切なネットワークを選択する前に (その場合はコンテナ)、サービス連鎖を実行します。Figure 12に示すように、ポートの組をクリックして展開します。次に、3つのインターフェイスそれぞれについて、cSRX の1つのインターフェイスをバインドして、[作成] をクリックします。

Figure 11: ポートのタプルを拡張する
ポートのタプルを拡張する
Note

VM インターフェイス’の名前は、ドロップダウンメニューには表示されず’、そのインスタンス ID ではありません。前述したように、tap インターフェイスの名前から確認することができます。言い換えると、そのコンテナーに属しているインターフェイスの最初の6文字がわかっていなければなりません。特定のインスタンス (VM またはコンテナ) 内のすべてのインターフェースは、同じ最初の文字を共有します。

先へ進む前に、3つのインターフェイスのステータスがアップし、Figure 13に示すように cSRX インスタンスの正しい IP アドレスが表示されていることを確認してください。

Figure 12: すべてのインターフェイスの稼働
すべてのインターフェイスの稼働

ネットワークポリシーを作成するには、Figure 14のように > ネットワークポリシー > 作成してください。

Figure 13: ネットワークポリシーの作成
ネットワークポリシーの作成

ネットワークポリシーに名前を付けてから、最初のルールで [ネットワーク] をソースネットワークとして追加し、宛先としてパスのアクションとしてネットワークを右に配置します。

Figure 14: 送信元と宛先
送信元と宛先

[Advanced] (詳細) オプションを選択し、以前に作成したサービスインスタンスを [作成] ボタンをクリックします。

Figure 15: サービスインスタンスのアタッチ
サービスインスタンスのアタッチ

このネットワークポリシーをネットワークに適用するには、左側の列で [バーチャルネットワーク] をクリックし、左のネットワークを選択して編集します。

Figure 16: ポリシーをネットワークに接続します。
ポリシーをネットワークに接続します。

ネットワークポリシーで、作成したネットワークポリシーをドロップダウンメニューリストから選択し、[保存] をクリックします。適切なネットワークについても同様にしてください。

Figure 17: ネットワークポリシーの保存
ネットワークポリシーの保存

サービス連鎖の検証

では’、このサービスがルーティングに変更された場合の影響を検証してみましょう。Contrail コントローラモジュール制御ノード (http://10.85.188.16:8143 のセットアップ時) で、[> インフラストラクチャ > 仮想ルーターを監視] を選択し、pod をホストするノードを選択します。その後、[ルート] タブを選択して左 VRF を選択します。

Figure 18: サービス連鎖の検証
サービス連鎖の検証

適切なネットワークホストルートが左ネットワーク (この場合は 10.20.20.1/32、10.20.20.2/32) に漏洩していることがわかります。

では’、左ポッドから右ポッドに ping を実行し、cSRX 上で作成されたセッションを確認してみましょう。

セキュリティ ポリシー

HTTP と HTTPS のみを許可するセキュリティポリシーを cSRX に作成します。

CSRX のポリシーがドロップするため、ping は失敗します。

この cSRX では、セッションの作成を確認できます。