ワークロードをより適切に管理するために、仮想プライベートクラウド (VPC) 内のElastic Compute Service (ECS) インスタンスを設定して、同じNAT IPアドレスを使用してインターネットにアクセスすることができます。 このトピックでは、EIPアドレス (EIP) に関連付けられたECSインスタンスを設定して、同じNAT IPアドレスを使用してインターネットにアクセスする方法について説明します。

前提条件

SNATエントリは、ECSインスタンスがデプロイされているVPCに対して設定されます。 詳細については、「SNATエントリの作成と管理」をご参照ください。

背景情報

NAT GatewayはSNAT機能をサポートしています。 SNATは、ECSインスタンスにパブリックIPアドレスが割り当てられていない場合、VPC内のECSインスタンスがインターネットにアクセスできるようにします。 VPCでは、EIPに関連付けられているECSインスタンスは、EIPを使用してインターネットにアクセスすることが望ましい。 EIPに関連付けられていないECSインスタンスは、NATゲートウェイが提供するSNATサービスを介してインターネットにアクセスします。 その結果、VPC内のECSインスタンスは異なるパブリックIPアドレスを使用してインターネットにアクセスするため、管理操作が複雑になります。 NAT Gateway

elastic network Interface (ENI) をECSインスタンスに関連付けることで、同じNAT IPアドレスを使用してインターネットにアクセスするようにVPC内のECSインスタンスを設定できます。

次の手順では、EIPに関連付けられているECSインスタンスのENIを作成し、ENIをECSインスタンスに関連付けてから、EIPをENIに関連付ける方法について説明します。 このように、ECSインスタンスはENIを使用してインターネットからリクエストを受信し、NATゲートウェイを介してインターネットにアクセスします。 NATゲートウェイ2

手順 1: ENI の作成

  1. ECS コンソールにログインします。
  2. 左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [ENI] を選択します。
  3. ENIを作成するリージョンを選択します。
    説明 ENIとECSインスタンスは同じリージョンに属している必要があります。
  4. [ネットワークインタフェース] ページで、[ENI 作成] をクリックします。
  5. [ENIの作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
    • ENI名: ENIの名前を入力します。
    • VPC: ECSインスタンスが作成されたVPCを選択します。
    • VSwitch: ECSインスタンスがデプロイされているゾーンのvSwitchを選択します。
    • プライマリプライベートIP: オプション。 ENIのプライマリプライベートIPv4アドレスを入力します。 IPv4アドレスは、vSwitchのCIDRブロック内のアイドルIPアドレスである必要があります。 IPv4アドレスを指定しない場合、ENIの作成後にアイドルプライベートIPv4アドレスが自動的にENIに割り当てられます。 この例では、プライマリプライベートIPアドレスは指定されていません。
    • セカンダリプライベートIPアドレス: オプション。 このパラメーターは、ビジネス要件に基づいて指定できます。 この例では、Not setが選択されています。
    • セキュリティグループ: 選択したVPCに対して作成されたセキュリティグループを選択します。
    関連パラメーターの詳細については、「ENI の作成」をご参照ください。

ステップ2: ENIをECSインスタンスに関連付ける

  1. ECS コンソールにログインします。
  2. 左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [ENI] を選択します。
  3. ENIがデプロイされているリージョンを選択します。
  4. [ネットワークインタフェース] ページで、管理するENIを見つけ、[操作] 列の [インスタンスにバインド] をクリックします。
  5. 表示されるダイアログボックスで、ENIを関連付けるECSインスタンスを選択し、[OK] をクリックします。

ステップ3: ECSインスタンスからのEIPの関連付けの解除

  1. EIPコンソールにログインします。
  2. EIPを作成するリージョンを選択します。
  3. [Elastic IPアドレス] ページで、ECSインスタンスとの関連付けを解除するEIPを見つけ、[操作] 列の [バインド解除] をクリックします。
  4. 表示されたメッセージボックスで、[OK] をクリックします。

ステップ4: EIPをENIに関連付ける

  1. EIPコンソールにログインします。
  2. EIPを作成するリージョンを選択します。
  3. On the Elastic IP Addresses page, find the EIP that you want to associate and click Bind Resource in the Actions column.
  4. [Elastic IPアドレスをリソースにバインド] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
    • インスタンスタイプ:[サブネットワークインターフェイス] を選択します。
    • リソースグループ: オプション。 EIPが属するリソースグループを選択します。 この例では、デフォルトのリソースグループが選択されています。
    • バインディングモード: オプション。 EIPをENIに関連付けるモードを選択します。 この例では、[Normal] が選択されています。
    • バインドするインスタンスの選択: EIPを関連付けるセカンダリENIを選択します。

ステップ5: ECSインスタンスのENIのルートを設定する

  1. ECS コンソールにログインします。
  2. 左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [ENI] を選択します。
  3. ENIの詳細を次の図に示します。 ENI
  4. リモートデバイスからECSインスタンスに接続します。 詳細については、「接続方法の概要」をご参照ください。
  5. 次のコマンドを実行して、ECSインスタンスが関連付けられているENIに関する情報を表示します。
    ip a
    ip a

    次の応答が返されます。

    eth0は一次ENIである。 eth0のプライベートIPアドレスは192.168.3.10です。

    eth1は二次ENIである。 eth1のプライベートIPアドレスは192.168.3.11で、パブリックIPアドレスは118.190.XX.XXです。

  6. ビジネス要件に基づいて、ルートテーブルの各ENIのデフォルトルートのメトリック値を設定します。
    次のコマンドを実行して、Gatewaymetricの値を表示します。
    ルート-n
    測定値
    説明 この例では、1つの副ENIが使用される。 セカンダリENIのメトリック値はプライマリENIのメトリック値よりも大きく、セカンダリENIのルーティング優先度がプライマリENIのルーティング優先度よりも低いことを示します。 したがって、デフォルトのメトリック値を使用できます。 複数のセカンダリENIを使用する場合は、ビジネス要件に基づいてメトリック値を設定する必要があります。 詳細については、「Alibaba Cloud Linux 2またはCentOS 7オペレーティングシステムを実行するインスタンスにバインドされているセカンダリENIのルートを設定する」をご参照ください。
  7. ルートテーブルを作成し、ポリシーベースのルーティング (PBR) を設定します。
    1. ECSインスタンスのENIにPBRルールを1回だけ追加する場合は、次の手順を実行します。
      説明 ECSインスタンスが再起動されると、ENIのPBRルールは無効になります。
      1. 次のコマンドを実行して、ルートテーブルを作成します。
        ip -4ルート192.168.3.13 dev eth1テーブル101経由でデフォルトを追加
        説明 ルートテーブルの名前は、ENIのデフォルトルートのメトリック値と同じにすることをお勧めします。 この例では、101が使用されます。
      2. 次のコマンドを実行して、ルートテーブルが作成されているかどうかを確認します。
        ipルート一覧テーブル101
        次の応答が返されます。ルート
      3. 次のコマンドを実行してPBRルールを追加します。
        ip -4ルールは192.168.3.11ルックアップ101から追加します
      4. 次のコマンドを実行して、すべてのPBRルールを表示します。
        ipルールリスト
        次の応答が返されます。ポリシーベースのルーティング
    2. ECSインスタンスのENIにPBRルールを複数回追加する場合は、次の手順を実行します。
      説明 ECSインスタンスが再起動された後も、ENIのPBRルールは引き続き有効です。
      1. 次のコマンドを実行して、/etc/rc.localスクリプトを開きます。
        vi /etc/rc.local
      2. スクリプトの最後で、iキーを押して編集モードに入ります。
      3. スクリプトの最後に次の情報を追加します。
        ip -4ルート192.168.3.13 dev eth1テーブル101経由でデフォルトを追加
        ip -4ルールは192.168.3.11ルックアップ101から追加します
        説明 この例では、1つの副ENIが使用される。 セカンダリENIのメトリック値はプライマリENIのメトリック値よりも大きく、セカンダリENIのルーティング優先度がプライマリENIのルーティング優先度よりも低いことを示します。 したがって、デフォルトのメトリック値を使用できます。 複数のセカンダリENIを使用する場合は、メトリック値を設定するコマンドをスクリプトに追加する必要があります。 メトリック値を設定するコマンドの詳細については、「Alibaba Cloud Linux 2またはCentOS 7オペレーティングシステムを実行するインスタンスにバインドされているセカンダリENIのルートを設定する」をご参照ください。
      4. Escキーを押して編集モードを終了します。 :wqと入力し、Enterキーを押してスクリプトを保存して閉じます。
      5. 次のコマンドを実行して、/etc/rc.d/rc.localスクリプトを実行可能にします。
        chmod + x /etc/rc.d/rc.local
        説明 /etc/rc.localスクリプトは、/etc/rc.d/rc.localスクリプトへのシンボリックリンクです。 したがって、上記のコマンドを実行して /etc/rc.d/rc.localスクリプトを実行可能にする必要があります。 ls -l /etc/rc.localコマンドを実行して、/etc/rc.localスクリプトが /etc/rc.d/rc.localスクリプトへのシンボリックリンクであるかどうかを確認できます。

ステップ6: ネットワーク接続を確認する

次の操作を実行して、ECSインスタンスがENIに関連付けられているEIPを使用してインターネットからリクエストを受信できるかどうかを確認します。 この例では、オンプレミスのLinuxマシンを使用してECSインスタンスにリモート接続します。
説明 ECSインスタンスにリモート接続するには、ECSインスタンスのセキュリティグループルールがSSHポート22のネットワークトラフィックを許可していることを確認します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
  1. オンプレミスLinuxマシンにログインします。
  2. ssh root @ public IPコマンドを実行し、ECSインスタンスのパスワードを入力して、ECSインスタンスにリモート接続できるかどうかを確認します。 次のメッセージが表示された場合、ECSインスタンスに接続されています。
    Alibaba Cloud Elastic Compute Serviceへようこそ!
    ECSインスタンス1

次の操作を実行して、ECSインスタンスがNATゲートウェイによって提供されるSNATサービスを介してインターネットにアクセスできるかどうかを確認します。 ECSインスタンスのNAT IPアドレスを表示するには、次の手順を実行します。

  1. ECS インスタンスにログインします。
  2. curl https://myip.ipip.netコマンドを実行して、ECSインスタンスがインターネットへのアクセスに使用するNAT IPアドレスを確認します。 NAT IPアドレスが、ECSインスタンス用に作成されたSNATエントリのIPアドレスと同じである場合、ECSインスタンスがSNATサービスを使用してインターネットにアクセスすることが望ましいことを示します。 ECSインスタンス2