ワークロードをより適切に管理するために、静的パブリックIPアドレスが割り当てられたElastic Compute Service (ECS) インスタンスを設定して、同じelastic IPアドレス (EIP) を使用してインターネットにアクセスすることができます。 このトピックでは、静的パブリックIPアドレスが割り当てられたECSインスタンスを設定して、同じEIPを使用してインターネットにアクセスする方法について説明します。
前提条件
送信元ネットワークアドレス変換 (SNAT) は、静的パブリックIPアドレスが割り当てられているECSインスタンスのVPCに対して設定されています。 詳細については、「インターネットにアクセスするためのSNATの設定」をご参照ください。
背景情報
NAT GatewayはSNAT機能をサポートしています。 SNATを使用すると、ECSインスタンスにパブリックIPアドレスが割り当てられていない場合、仮想プライベートクラウド (VPC) 内のECSインスタンスがインターネットにアクセスできます。 静的パブリックIPアドレスが割り当てられているECSインスタンスは、優先的にパブリックIPアドレスを使用してインターネットにアクセスします。 パブリックIPアドレスが割り当てられていないECSインスタンスは、NATゲートウェイのSNAT機能を使用してインターネットにアクセスします。 その結果、VPC内のECSインスタンスは異なるIPアドレスを使用してインターネットにアクセスするため、管理が複雑になります。
elastic network Interface (ENI) をECSインスタンスに関連付けることで、同じNAT IPアドレスを使用してインターネットにアクセスするようにVPC内のECSインスタンスを設定できます。
次の例に示すように、ENIをECSインスタンスに関連付け、静的パブリックIPアドレスをEIPに変換してから、EIPをENIに関連付けることができます。 このように、ECSインスタンスはENIを使用してインターネットからリクエストを受信し、NATゲートウェイを介してインターネットにアクセスします。
手順1: 静的パブリックIPアドレスをEIPに変換する
静的パブリックIPアドレスをEIPに変換する方法は、ECSインスタンスの課金方法によって異なります。
従量課金ECSインスタンスの場合、静的パブリックIPアドレスをEIPに直接変換できます。
サブスクリプションECSインスタンスの場合、静的パブリックIPアドレスをEIPに直接変換することはできません。 サブスクリプションECSインスタンスの静的パブリックIPアドレスをEIPに変換する前に、ECSインスタンスの課金方法を従量課金に変更する必要があります。 詳細については、「インスタンスの課金方法をサブスクリプションから従量課金に変更する」をご参照ください。
従量課金ECSインスタンスに割り当てられている静的パブリックIPアドレスをEIPに変換するには、次の操作を実行します。
ECS コンソール にログインします。
左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。
上部のナビゲーションバーで、管理するECSインスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するECSインスタンスを見つけ、[操作] 列の /> [ネットワークとセキュリティグループ] > [EIPに変換] を選択します。
表示されたメッセージボックスで、[OK] をクリックします。
手順 2:ENI の作成
ECS コンソール にログインします。
左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [ENI] を選択します。
上部のナビゲーションバーで、ENIを作成するリージョンを選択します。
説明ENIとECSインスタンスは同じリージョンに属している必要があります。
[Elastic Network Interface] ページで、[ENIの作成] をクリックします。
[ENIの作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
次の表に、主要なパラメーターのみを示します。 詳細については、「セカンダリENIの作成」をご参照ください。
パラメーター
説明
ENI名
ENIの名前を入力します。
[VPC]
ECS インスタンスが属する VPC を選択します。
vSwitch
ECSインスタンスのゾーンでvSwitchを選択します。
[セキュリティグループ]
VPCのセキュリティグループを選択します。
プライマリプライベートIPアドレス (オプション)
ENIのプライマリプライベートIPv4アドレスを入力します。 IPv4アドレスは、vSwitchのCIDRブロック内のアイドルIPアドレスである必要があります。 IPv4アドレスを指定しない場合、ENIの作成後にアイドルプライベートIPv4アドレスが自動的にENIに割り当てられます。 この例では、プライマリプライベートIPアドレスは指定されていません。
セカンダリプライベートIPv4アドレス (オプション)
オプションを選択します。 この例では、[Not Assign] が選択されています。
ステップ3: ENIをECSインスタンスに関連付ける
ECS コンソール にログインします。
左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [ENI] を選択します。
上部のナビゲーションバーで、ENIのリージョンを選択します。
[Elastic Network Interface] ページで、ENIを見つけ、[操作] 列の [インスタンスにバインド] をクリックします。
表示されるダイアログボックスで、ENIを関連付けるECSインスタンスを選択し、[OK] をクリックします。
ステップ4: ECSインスタンスからのEIPの関連付けの解除
EIPコンソールにログインします。
上部のナビゲーションバーで、EIPのリージョンを選択します。
[Elastic IPアドレス] ページでEIPを見つけ、[操作] 列の [リソースから関連付け解除] をクリックします。
表示されたメッセージボックスで、[OK] をクリックします。
ステップ5: EIPをENIに関連付ける
EIPコンソールにログインします。
上部のナビゲーションバーで、EIPのリージョンを選択します。
[Elastic IPアドレス] ページで、関連付けるEIPを見つけ、[操作] 列の [リソースに関連付ける] をクリックします。
[EIPとリソースの関連付け] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
[インスタンスタイプ]
ENIを選択します。
リソースグループ (オプション)
EIPが属するリソースグループを選択します。 この例では、デフォルトのリソースグループが選択されています。
モード (オプション)
EIPのアソシエーションモードを選択します。 この例では、NATモードが選択されています。
関連付けるインスタンスの選択
EIPを関連付けるセカンダリENIを選択します。
ステップ6: ENIのルートを設定する
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、[ネットワークとセキュリティ] > [ENI] を選択します。
ENIの詳細を表示します。
ECS インスタンスにログインします。 詳細については、「接続方法の概要」をご参照ください。
ip a
コマンドを実行して、ENIに関する情報を表示します。次の応答が返されます。
eth0: プライマリENI。 eth0のプライベートIPアドレスは192.168.3.10です。
eth1: セカンダリENI。 eth1のプライベートIPアドレスは192.168.3.11で、パブリックIPアドレスは118.190.XX.XXです。
ビジネス要件に基づいて、ルートテーブルの各ENIのデフォルトルートのメトリック値を設定します。
route -n
コマンドを実行して、Gatewayとmetricの値を照会します。次の結果が返されます。
説明この例では、1つの副ENIが使用される。 セカンダリENIのメトリック値はプライマリENIのメトリック値よりも大きく、セカンダリENIのルーティング優先度がプライマリENIのルーティング優先度よりも低いことを示します。 したがって、デフォルトのメトリック値を使用できます。 複数のセカンダリENIを使用する場合は、ビジネス要件に基づいてメトリック値を設定する必要があります。 詳細については、「ENIの設定」をご参照ください。
ルートテーブルを作成し、ポリシーベースのルーティングを設定します。
ECSインスタンスのENIに一時的なポリシーベースのルートを設定する場合は、次の手順を実行します。
説明ECSインスタンスの再起動後、ENIに設定されたポリシーベースのルートは無効になります。
次のコマンドを実行して、ルートテーブルを作成します。
ip -4 route add default via 192.168.3.13 dev eth1 table 101
説明ルートテーブルの名前は、デフォルトルートのメトリック値と同じにすることをお勧めします。 この例では、101が使用されます。
次のコマンドを実行して、ルートテーブルが作成されているかどうかを確認します。
ip route list table 101
次の結果が返されます。
次のコマンドを実行して、ポリシーベースのルートを追加します。
ip -4 rule add from 192.168.3.11 lookup 101
次のコマンドを実行して、ルーティングポリシーを照会します。
ip rule list
次の結果が返されます。
ECSインスタンスのENIに複数のルートを追加する場合は、次の手順を実行します。
説明ECSインスタンスが再起動された後も、ENIのポリシーベースのルートは有効なままです。
次のコマンドを実行して、/etc/rc.localスクリプトを開きます。
vi /etc/rc.local
設定ファイルの最後にあるiキーを押して編集モードに入ります。
スクリプトの最後に次の情報を追加します。
ip -4 route add default via 192.168.3.13 dev eth1 table 101 ip -4 rule add from 192.168.3.11 lookup 101
から追加します
説明この例では、1つの副ENIが使用されます。 セカンダリENIのメトリック値はプライマリENIのメトリック値よりも大きく、セカンダリENIのルーティング優先度がプライマリENIのルーティング優先度よりも低いことを示します。 したがって、デフォルトのメトリック値を使用できます。 複数のセカンダリENIを使用する場合は、メトリック値を設定するコマンドをスクリプトに追加する必要があります。 メトリック値を設定するコマンドの詳細については、「ENIの設定」をご参照ください。
Escキーを押して編集モードを終了します。 :wqと入力し、Enterキーを押して設定ファイルを保存して閉じます。
次のコマンドを実行して、/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スクリプトへのシンボリックリンクであるかどうかを確認できます。
ステップ7: ネットワーク接続のテスト
次の操作を実行して、ECSインスタンスがENIに関連付けられているEIPを使用してインターネットからリクエストを受信できるかどうかを確認します。 この例では、オンプレミスのLinuxマシンを使用してECSインスタンスにリモート接続します。
ECSインスタンスにリモート接続するには、ECSインスタンスのセキュリティグループルールがSSHポート22のネットワークトラフィックを許可していることを確認します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
オンプレミスLinuxマシンにログオンします。
ssh root @ public IP
コマンドを実行し、ECSインスタンスのパスワードを入力して、ECSインスタンスにリモート接続できるかどうかを確認します。が
Welcome to Alibaba Cloud Elastic Compute Service !
メッセージが表示されると、インスタンスに接続されます。
次の操作を実行して、ECSインスタンスがSNAT経由でインターネットにアクセスできるかどうかを確認します。 次の例は、ECSインスタンスがインターネットにアクセスするために使用するIPアドレスを表示する方法を示しています。
ECS インスタンスにログインします。
curl https://myip.ipip.net
コマンドを実行して、ECSインスタンスで使用されているIPアドレスを確認します。ECSインスタンスで使用されるIPアドレスが、ECSインスタンス用に作成されたSNATエントリのIPアドレスと同じである場合、ECSインスタンスが優先的にSNAT機能を使用してインターネットにアクセスすることを示します。