経路の作成

経路を構成して、VPC のネットワーク・トラフィックのフローを制御できます。 VPC 経路により、パケットの宛先アドレスに応じてネクスト・ホップを指定することができます。

VPC のゾーンごとに複数のルーティング・テーブルが存在できます。 送信トラフィックの場合、パケットがサブネットから送信される際、システムはその宛先をサブネットのゾーンにあるルーティングテーブルと照合し、パケットを次にどこへ送信するかを決定します。 各 VPC には、サブネットがユーザーによって明示的に別のサブネットに接続されていない限り、すべてのサブネットに接続されたデフォルトのルーティング テーブルがあります。

VPCのカスタムルートには、主に4つの構成要素があります:

  • 宛先 CIDR:このルートが適用される宛先 IP アドレスの範囲を指定します。

  • 次のホップ:ルートアクションが「 Deliver 」の場合、一致したトラフィックが転送されるIPアドレスを指定します。

    既存の経路のネクスト・ホップ IP アドレスを編集できます。

  • ゾーン:ルートが評価されるゾーンを指定します。 出力経路の場合、ゾーンとは通常、送信元トラフィックが発生するゾーンを指します。 イングレッスルートの場合、ゾーンとは、着信トラフィックが処理されるゾーンであり、かつネクストホップが存在しなければならないゾーンを指します。

  • アクション:一致したトラフィックの処理方法(転送、委譲、破棄など)を指定します。

VPC の指定されたゾーンから送信されるトラフィックで、宛先アドレスが、指定された宛先 CIDR の範囲に含まれるものは、ネクスト・ホップに転送されます。 宛先アドレスが複数の VPC 経路の宛先 CIDR の範囲に含まれる場合には、最も具体的な経路が使用されます。 同程度に具体的な経路が 2 つ以上ある場合には、ラウンドロビン方式で各経路にトラフィックが分散されます。

各経路の宛先プロパティーに、接頭部の長さ (/2410.2.0.0/24) が含まれています。 カスタム・ルーティング・テーブルごとにサポートされる固有の「接頭部の長さ」の数は 14 個です。 接頭部が同じ経路が複数存在していても、固有の接頭部としては 1 つのみとカウントされます。

VPC アドレス接頭部は、RFC-1918 アドレスに制限されなくなりました。 non-RFC-1918 アドレスを使用し、かつパブリック接続( フローティングIP アドレスまたはパブリックゲートウェイ)を持つVPCについては、新しい「 Delegate-VPC 」アクションを含むカスタムルートを使用して設定する必要があります。 non-RFC-1918 に準拠しており、かつVPCの外側にある宛先CIDRについては、このアクションを指定する必要があります。これには、 Direct Link、 Transit Gateway、またはVPCクラシックアクセスを通じて到達可能な宛先などが含まれます。 Delegate-VPC アクションをいつ使用するかについては、IANA 登録済み IP 割り当てに関するルーティングの考慮事項を参照してください。

以下の両方に該当する場合、Delegate-VPC アクションが必要です。

  • VPC で RFC-1918 以外のアドレスを使用している
  • VPC にパブリック接続がある

以下の場合、Delegate-VPC アクションは必要ありません。

  • VPC で RFC-1918 アドレスのみを使用している
  • VPC にパブリック接続がない

カスタムルートを作成する前に、「 ルーティングテーブルとルートについて 」を確認し、インジェストおよびエグレスのルーティングの動作を理解しておいてください。

コンソール、CLI、API、またはTerraformを使用して、 IBM Cloud サービスのルートを作成できます。

コンソールでのルートの作成

コンソールでルートを作成するには、以下の手順に従ってください:

  1. 制限とガイドライン を必ず確認してください。

  2. IBM Cloud コンソールで[Navigation]メニューの [Navigation]メニューアイコンを 選択し、 [Infrastructure VPC]アイコン >[ Network ]>[ Routing tables]の順にクリックします。 「VPC 用のルーティング・テーブル」ページが表示されます。

  3. 表示したいルーティングテーブルに関連付けられているVPCを選択してください。 次に、ルーティング・テーブルの名前をクリックして、その詳細を表示します。

  4. 「経路」セクションまでスクロールし、**「作成」**をクリックします。

  5. 「ルートの作成」サイドパネルで、以下の情報を入力してください:

    • ゾーン-経路のアベイラビリティー・ゾーンを選択します。

    • 名前- 新しいルートの名前を入力してください。

    • Destination CIDR (宛先 CIDR)-経路の宛先 CIDR (例えば、 10.0.0.0/16)。

    • 優先順位- 0 から 4 までの優先順位を入力します。 デフォルト値は 2です。 詳しくは、「 経路設定の決定」を参照してください。

    • アクション- ルートに一致するパケットに対して実行するアクション。 値は次のとおりです。

      • 委任 (Delegate) - システム・ルーティング・テーブルを使用してパケットを転送します。
      • Delegate-VPC - インターネットにバインドされた経路を無視して、システムの組み込み経路に委任します。 VPC で RFC-1918 以外のアドレスが使用され、さらにパブリック接続もある場合には必須です。 詳しくは、IANA 登録済み IP 割り当てに関するルーティングの考慮事項を参照してください。
      • 転送 (Deliver) - パケットをネクスト・ホップのターゲットに転送します。 アドレス接頭部が同じ複数の経路を追加できます。 仮想ルーターは、複数の異なるネクスト・ホップ IP アドレスを使用して、等価コスト・マルチパスの (ECMP) ルーティングを実行します。
      • ドロップ (Drop) - パケットをドロップします。

    あるサブネットから発信されるトラフィックには、そのサブネットに関連付けられているカスタム・ルーティング・テーブルが使用されます。 対応する経路がカスタム・ルーティング・テーブルで見つからなければ、VPC のシステム・ルーティング・テーブルを使用してルーティングが続行されます。 この動作は、カスタム・ルーティング・テーブルのデフォルト経路にドロップのアクションを指定することで回避できます。

    • タイプ- 「 IPアドレス 」または「 VPN接続 」のいずれかを選択してください。

    • ネクスト・ホップ (IP アドレス)-ネクスト・ホップを入力します。

      既存の経路のネクスト・ホップ IP アドレスを変更できます。

    • アドバタイズ-Ingress ソースにアドバタイズします。 現在、 Direct Link および Transit Gateway がサポートされています。 オプション。

  6. **「保存」**をクリックして、新しい経路を保存します。 「ルーティング・テーブルの詳細」ページに経路が表示されます。

CLI からのルート作成

開始する前に、 CLI 環境をセットアップします

CLI から VPC ルートを作成するには、次のコマンドを実行します

ibmcloud is vpc-routing-table-route-create VPC ROUTING_TABLE --zone ZONE_NAME --destination DESTINATION_CIDR [--action delegate_vpc | delegate | deliver | drop] [--priority PRIORITY] [--next-hop NEXT_HOP [--vpngw VPNGW]][--advertise true | false] [--name NAME] [--output JSON] [-q, --quiet]

ここで、

VPC
VPC の ID または名前。
ROUTING_TABLE
VPCルーティングテーブルのIDまたは名前。
--zone
ゾーンの名前。
--destination
経路の宛先 CIDR。 テーブル内の各ゾーンにつき、最大2つのルートが同じ宛先を持つことができますが、それは両方のルートのアクションが「 deliver 」である場合に限られます。
--action
経路をマッチするパケットで行うアクション。 次のいずれか: delegate_vpcdelegatedeliverdrop。デフォルト: deliver
--priority
経路の優先順位。 のいずれか: 0 1, 2, 3, 4。デフォルト: 2。 値が小さいほど優先順位が高くなります。 カスタムルーティングテーブルに同じ宛先のルートが含まれている場合、優先順位が最も高い(値が小さい)ルートが選択されます。
--next-hop
アクションが「 deliver 」の場合は、パケットをルーティングするネクストホップのIPアドレスまたはVPN接続IDを入力してください。
--vpngw
VPNゲートウェイの名前。
--advertise
Direct Link、Transit Gateway、または両方の Ingress ソースにアドバタイズします。 truefalse のいずれか。
--name
VPCルーティングテーブルの名前。
--output
出力形式。 以下のいずれかです: json
--q, quiet
詳細出力を抑制します。

CLI の例

  • ゾーン名、宛先CIDR、およびIPアドレスをネクストホップとして指定してルートを作成します:

    ibmcloud is vpc-routing-table-route-create r134-b754e387-8b06-43be-a5ea-909595a50676 r134-6cfaceb8-99d6-4743-bee8-ebbcbba6a563 --zone us-south-1 --destination 10.2.2.0/24 --action deliver --priority 1 --next-hop 10.0.0.2 --name my-vpc-route
    
  • ゾーン名、宛先CIDR、およびVPN接続IDとしてネクストホップを指定して、ルートを作成します:

    ibmcloud is vpc-routing-table-route-create r134-b754e387-8b06-43be-a5ea-909595a50676 r134-6cfaceb8-99d6-4743-bee8-ebbcbba6a563 --zone us-south-1 --destination 10.2.2.0/24 --action deliver --priority 1 --next-hop 02h7-1cf20e69-e2ce-400b-b070-0897521e2eb6 --name my-vpc-route
    

API を使用したルートの作成

API を使用して宛先ルートを作成するには、以下の手順に従ってください

  1. API 環境をセットアップします。

  2. API コマンドで使用する以下の変数に値を格納します。

    export VpcId=<your_vpc_id>
    export RoutingTableId=<your_routing_table_id>
    
  3. IPアドレスまたはVPN接続IDとして「 next_hop 」を指定してルートを作成します:

    curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables/$RoutingTableId/routes?version=$api_version&generation=2" \
    -H "Authorization: Bearer $iam_token" \
    -d '{
         "name": "my-new-route",
         "zone": {"name": "us-south-2"},
         "action": "deliver",
         "destination": "10.10.10.0/24",
         "next_hop": {"address": "10.0.0.3"}
       }'
    
    curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables/$RoutingTableId/routes?version=$api_version&generation=2" \
    -H "Authorization: Bearer $iam_token" \
    -d '{
         "name": "my-new-route",
         "zone": {"name": "us-south-2"},
         "action": "deliver",
         "destination": "10.10.10.0/24",
         "next_hop": {"id": "02h7-1cf20e69-e2ce-400b-b070-0897521e2eb6"}
       }'
    

詳細情報とオプションのパラメータについては、VPC API リファレンスの 「VPC ルーティングテーブルでルートを作成する」 を参照してください。

Terraform を使用した経路の作成

Terraform を使用して経路を作成するには、以下の手順を実行します。

  1. Terraform環境を設定してください。

  2. 経路を作成します。

    resource "ibm_is_vpc_routing_table_route" "example" {
      vpc           = ibm_is_vpc.example.id
      routing_table = ibm_is_vpc_routing_table.example.routing_table
      zone          = "us-south-1"
      name          = "custom-route-2"
      destination   = "192.168.4.0/24"
      action        = "deliver"
      next_hop      = ibm_is_vpn_gateway_connection.example.gateway_connection // Example value "10.0.0.4"
    }
    

この ibm_is_vpc_routing_table_route リソースの詳細については、 Terraform Registry を参照してください。