Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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-トンネルプロセスが実行され、gRPCトンネル関連の設定がすべて実行されます。TCPクライアント側に、トンネルサーバーが追加されています。

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

gRPCトンネルセキュリティ

gRPCトンネルは、デバイスが設定に基づいて接続を開始するダイヤルアウトモデルです。gRPCトンネルは、TLS証明書を使用するセキュアなgRPCチャネル上にあります。

例:gRPC トンネルの設定

概要

このセクションでは、この例のターゲットを設定するために必要な手順について説明します。ターゲットは、gRPCトンネル設定を含むJunos OSデバイスです。

要件

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

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

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

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

トポロジー

図1 は、この例で使用されているトポロジーを示しています。

図1: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-トンネルtarget-string-optionを設定します。

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

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

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

注:

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

結果

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