Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

安全なテレメトリ収集のためのgRPCダイヤルアウトの使用

gRPC ダイヤルアウトについて

Junos OSリリース22.4R1以降、JTIは、ACXシリーズルーター、MXシリーズルーター、PTXシリーズルーター、QFXシリーズスイッチでのリモートgRPCダイヤルアウトサポートをサポートしています。gRPC ダイヤルアウトでは、ターゲット デバイス(サーバー)がコレクター(クライアント)との gRPC セッションを開始します。セッションが確立されると、ターゲットはセンサー グループ サブスクリプションで指定されたテレメトリ データをコレクターにストリーミングします。これは、コレクターがターゲット デバイスへの接続を開始する gRPC ネットワーク管理インターフェイス (gNMI) ダイヤルイン方式とは対照的です。

gRPC ダイヤルアウトにより、テレメトリ統計のストリーミングが簡素化されます。統計情報をストリーミングしてコレクターIPアドレスにエクスポートするようにターゲットデバイスを構成すると、コレクター(クライアント)にかかるアクセスの負担がなくなります。( 図 1 を参照)。

図 1: gRPC ダイヤルアウト gRPC Dial-Out

gRPC ダイヤルアウトには、gRPC ダイヤルインと比較していくつかの利点があります。

  • トポロジー外の脅威に対するターゲットデバイスの露出を低減します。

  • ターゲット・デバイスへのアクセスを簡略化します。gRPC ダイヤルイン方式では、コレクターが一連の複雑なファイアウォール構成を克服して、ターゲット デバイスにアクセスする必要があります。gRPC ダイヤルアウトは対象外です。

  • コレクターはステートレスにすることができます。セッションを開始する必要はなく、収集したデータをリッスンし、サブスクライブし、保存するだけです。

  • 相互暗号化をサポートし、セキュリティを強化します。

統計のエクスポートを有効にするには、[edit services analytics] 階層レベルで export-profile ステートメントと sensor ステートメントを含めます。エクスポートプロファイルには、レポートレート、トランスポートサービス(gRPCなど)、および形式(gbp-gnmiなど)を含める必要があります。センサー構成には、コレクターの名前 (サーバーの名前)、エクスポート プロファイルの名前、およびリソース パスを含める必要があります。リソース パスの例は、/interfaces/interface[name='fxp0'] です。

従来の gRPC ダイヤルアウト接続の IP 送信元アドレスを構成する

Junos OS Evolvedリリース24.2R1以降、JTIは、ACXシリーズルーター、PTXシリーズルーター、QFXシリーズスイッチでのレガシーgRPCサービスダイヤルアウト接続の送信元IPアドレスの設定をサポートしています。レガシー gRPC ダイヤルアウトをサポートする以前のリリースでは、発信インターフェイスの IP アドレスが送信元アドレスとして使用されますが、送信元 IP アドレスを設定するオプションはありません。この機能は FLEX 展開をサポートし、ルーターの指定された IP アドレスまたはインターフェイス アドレス(loopback0 アドレスなど)からダイヤルアウトを送信する機能を提供します。

ローカル アドレスを設定しない場合は、デフォルトのローカル アドレスが使用されます。

ローカルアドレスを設定するには:

  1. 設定モードで、[edit services analytics export-profile]階層レベルに移動し、エクスポートプロファイルの名前を追加します(ここではep1)。
  2. local-address ステートメントを含めます(ここでは、IPv6アドレス2000:200::20を使用します)。

    IPv6 アドレスは、従来の gRPC ダイヤルアウト接続 (トランスポートの種類 grpc) にのみ使用できます。IPv6 アドレスは、UDP トランスポートではサポートされていません。UDP トランスポートが設定されている場合、設定をコミットするとエラーが表示されます。

  3. 以下の動作モードコマンドを使用して、ローカルアドレスの設定を確認します。

    エクスポート ファイル ep1 、ローカル アドレスとして IPv6 アドレス 2000:200::20 が表示されます。

従来の gRPC ダイヤルアウト接続用のルーティング インスタンスを構成する

Junos OS Evolved Release 24.2R1以降、JTIは、ACXシリーズルーター、PTXシリーズルーター、QFXシリーズスイッチ上で、レガシーgRPCサービスダイヤルアウト接続用のルーティングインスタンスの設定をサポートしています。

ルーティングインスタンスを設定しない場合は、デフォルトのルーティングインスタンスが使用されます。

ルーティングインスタンスを設定するには:

  1. 設定モードで、[edit services analytics export-profile]階層レベルに移動し、エクスポートプロファイルの名前を追加します(ここではep1)。
  2. routing-instance ステートメントを含めます(ここでは、ルーティングインスタンス mgmt-1 を使用します)。

    ルーティング インスタンスは、従来の gRPC ダイヤルアウト接続 (トランスポートの種類 grpc) に対してのみ構成できます。UDP トランスポートが設定されている場合、設定をコミットするとエラーが表示されます。

  3. 以下の動作モードコマンドを使用して、ルーティングインスタンスの設定を確認します。

    エクスポートファイル ep1 、ルーティングインスタンスが mgmt-1として表示されます。

gRPC トンネルの概要

gRPC トンネルは、デフォルトのルーティング インスタンスまたは構成済みのルーティング インスタンスを介して、ターゲットから TCP クライアントにセッションをダイヤルアウトするクライアント/サーバー プロトコルとして機能します。ルーティング インスタンスの設定を選択しない場合、gRPC トンネルはデフォルトのルーティング インスタンスを使用します。

各 gRPC トンネル セッションの送信元アドレスを構成して、トンネル サーバーへの接続をダイヤルアウトできます。送信元アドレスを設定しない場合、カーネルはトンネル サーバーに到達できる送信元アドレスを選択します。

gRPC トンネルの詳細については、「 https://github.com/openconfig/grpctunnel」を参照してください。

gRPC トンネルには、次の 3 つの主要なエンティティがあります。

  • ターゲット—ネットワーク デバイスを表します。ターゲットは gRPC クライアントです。

  • トンネル サーバー — サブスクリプションとターゲット登録を管理するオフボックス アプリケーションであるソフトウェア エンティティ。トンネル サーバーは gRPC サーバーです。

  • トンネルクライアント — クライアントタスクを実行するソフトウェアエンティティ。トンネル クライアントは、トンネル サーバー内で自己完結型にすることができます。トンネル クライアントは gRPC クライアントでもあります。

gRPC トンネル セッションを使用するメリット:

  • サーバー側から接続が確立されるため、一連の複雑なファイアウォール構成を克服します。

  • gNMI-gNOI、SSH、NETCONF-SSHなどのさまざまなTCPサーバーアプリケーションに、運用要件なしでアクセスできます。

gRPC トンネル アーキテクチャ

gRPC トンネルは、TCP ベースのアプリケーションが gRPC メッセージ内で通信するための汎用インフラストラクチャです。

通常、TCP クライアントは TCP サーバーまたはターゲットへの接続を開始します。Junos デバイスは、gNMI-gNOI、SSH、NETCONF-SSH などの TCP サーバー アプリケーションを実行するターゲットとして機能します。クライアントがサーバーに到達できない場合、一般的な理由は次のとおりです。

  • サーバーは、ファイアウォールがインバウンド接続を禁止する複雑なファイアウォール構成に陥ります。

  • サーバーは、ネットワーク アドレス変換(NAT)を実装するルーターで実行されます。

  • サーバーは他の運用要件に遭遇し、外部接続を防ぎます。

TCP クライアントがターゲットに到達できない場合は、gRPC トンネル セッションを構成して、TCP クライアントとターゲット間の接続を確立できます。gRPC トンネル セッションは、ターゲットが TCP クライアントにダイヤルアウトする逆方向の接続を確立します。

gRPC トンネル セッションを使用するには、トンネル クライアントがターゲット側に追加され、そこで grpc-tunnel プロセスが実行され、すべての gRPC トンネル関連の構成が実行されます。TCP クライアント側に、トンネル サーバーが追加されます。

gRPC トンネル セッションを構成するには、[edit system services] 階層に grpc-tunnel 構成ステートメントを含める必要があります。

gRPC トンネル セキュリティ

gRPC トンネルは、デバイスが構成に基づいて接続を開始するダイヤルアウト モデルです。gRPC トンネルは、TLS 証明書を使用するセキュリティで保護された gRPC チャネル上にあります。

例:gRPC トンネルの設定

概要

このセクションでは、この例のターゲットを構成するために必要な手順について説明します。ターゲットは、gRPCトンネルが設定されているJunosデバイスであるため、ターゲットに焦点が当てられます。

必要条件

この例では、以下のソフトウェアおよびハードウェアコンポーネントを使用しています:

  • ルーティングおよびスイッチングデバイス向けのJunos OSまたはJunos Evolvedリリース22.4以降

  • 1台のホストデバイスをトンネルクライアントとして使用

  • 1台のホストデバイスをトンネルサーバーとして使用

位相幾何学

図 1 に、この例で使用するトポロジを示します。

図 2: gRPC トンネルのセットアップ gRPC tunnel setup

ターゲット デバイスの Junos 設定に基づいて、トンネル サーバーへの grpc トンネルをダイヤルアウトします。ターゲット デバイスは、レジスタ ストリーム RPC を介してトンネル サーバーに自身を登録します。

クライアントが特定のターゲットへのTCPセッションを要求すると、トンネルサーバーは仲介者として機能し、トンネルサーバー上の上記の登録済みターゲットセッションに接続します。

ターゲットが要求されたターゲットの種類をサポートしている場合、デバイスはトンネル ストリーム RPC と呼ばれる新しいトンネルをダイヤルアウトします。これにより、トンネル サーバーを介してクライアントとターゲットの間に gRPC トンネルが確立されます。これで、トンネル クライアントは、ターゲット上の目的の TCP アプリケーションにアクセスできるようになります。

手記:

トンネル サーバーとネットワーク デバイスの間に存在できるレジスタ ストリームは 1 つだけですが、同じペアに対して複数のトンネル ストリームが存在することができます。

gRPC トンネルを構成する

CLIクイック構成

この例を素早く設定するには、以下のコマンドをコピーしてテキスト・ファイルに貼り付け、改行を削除し、ネットワーク構成に合わせて必要な内容を変更した後、[edit]階層レベルのCLIにコマンドをコピー&ペーストしてください。

手順

ターゲット デバイスで gRPC トンネルを構成するには、次の手順に従います。

  1. gRPCトンネル下のサーバーを設定します。

    1. トンネル サーバーの IPv4 または IPv6 アドレスまたはホスト名を設定します。

    2. トンネル サーバーがリッスンするポート番号を構成します。

    3. tls ステートメントを使用して資格情報を構成します。

    4. アクセスするターゲット アプリケーションを指定します。使用可能なオプションは、 sshnetconf-ssh 、および gnmi-gnoiです。

  2. (オプション) 再試行間隔 (秒単位) を設定します。トンネルサーバーに到達できない場合、ターゲットデバイスは再試行間隔の後に接続を再試行します。

  3. (オプション)

    ルーティングインスタンスを設定します。ルーティング インスタンスを設定しない場合、gRPC トンネルは既定のルーティング インスタンスを使用します。
  4. (オプション)

    送信元アドレスを設定します。送信元アドレスを設定しない場合、カーネルはトンネル サーバーに到達できる送信元アドレスを選択します。
  5. (オプション)grpc-tunnelの下のtarget-string-optionを設定します。

    1. pattern ステートメントを使用して、サポートされているオプションの順序付きリストを作成します。

    2. custom-string ステートメントを使用して、ステートメント・パターンにオプションの 1 つとして custom が含まれている場合に送信されるカスタム・ストリングを定義します。

    3. delimiter ステートメントは、パターン内で複数のオプションが選択されている場合に使用します。デフォルトでは、| (パイプ記号) が使用されます。

手記:

最大 10 台のトンネル サーバーを設定できます。

業績

ターゲット・デバイス上の構成の結果を表示します。出力には、この例で追加された機能設定のみが反映されます。

変更履歴テーブル

機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。

解放
形容
22.4R1
Junos OSリリースおよびJunos OS Evolvedリリース22.4R1以降、JTIは、ACXシリーズルーター、MXシリーズルーター、PTXシリーズルーター、QFXシリーズスイッチでのリモートgRPCダイヤルアウトサポートをサポートしています。