このトピックでは、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アドレスを使用してインターネットにアクセスするため、管理操作が複雑になります。
elastic network Interface (ENI) をECSインスタンスに関連付けることで、同じNAT IPアドレスを使用してインターネットにアクセスするようにVPC内のECSインスタンスを設定できます。
次の手順では、EIPに関連付けられているECSインスタンスのENIを作成し、ENIをECSインスタンスに関連付けてから、EIPをENIに関連付ける方法について説明します。 このように、ECSインスタンスはENIを使用してインターネットからリクエストを受信し、NATゲートウェイを介してインターネットにアクセスします。
手順 1: ENI の作成
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、
を選択します。左上隅で、ENIを作成するリージョンを選択します。
説明ENIとECSインスタンスは同じリージョンに属している必要があります。
[ネットワークインタフェース] ページで、[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] が選択されています。
ステップ2: ENIをECSインスタンスに関連付ける
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、
を選択します。左上隅で、セカンダリENIがデプロイされているリージョンを選択します。
[ネットワークインタフェース] ページで、管理するENIを見つけ、[操作] 列の [インスタンスにバインド] をクリックします。
表示されるダイアログボックスで、ENIを関連付けるECSインスタンスを選択し、[OK] をクリックします。
ステップ3: ECSインスタンスからのEIPの関連付けの解除
EIPコンソールにログインします。
上部のナビゲーションバーで、EIPのリージョンを選択します。
[Elastic IPアドレス] ページでEIPを見つけ、[操作] 列の [リソースから関連付け解除] をクリックします。
表示されたメッセージボックスで、[OK] をクリックします。
ステップ4: EIPをENIに関連付ける
EIPコンソールにログインします。
EIPアドレスのリージョンを選択します。
[Elastic IPアドレス] ページで、作成したEIPを見つけ、[操作] 列の [リソースに関連付ける] をクリックします。
[EIPとリソースの関連付け] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
[インスタンスタイプ]
ENIを選択します。
リソースグループ (オプション)
EIPが属するリソースグループを選択します。 この例では、デフォルトのリソースグループが選択されています。
モード (オプション)
EIPの関連付けモードを選択します。 この例では、NATモードが選択されています。
関連付けるインスタンスの選択
EIPを関連付けるセカンダリENIを選択します。
ステップ5: ECSインスタンスのENIのルートを設定する
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、
を選択します。ENIの詳細を表示します。
ECS インスタンスにログインします。 詳細については、「接続方法の概要」をご参照ください。
次のコマンドを実行して、ECSインスタンスが関連付けられているENIに関する情報を表示します。
ip a
次の応答が返されます。
eth0は一次ENIです。 eth0のプライベートIPアドレスは192.168.3.10です。
eth1は二次ENIです。 eth1のプライベートIPアドレスは192.168.3.11で、パブリックIPアドレスは118.190.XX.XXです。
ビジネス要件に基づいて、ルートテーブルの各ENIのデフォルトルートのメトリック値を設定します。
次のコマンドを実行して、Gatewayとmetricの値を表示します。
route -n
説明この例では、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
説明ルートテーブルの名前は、ENIのデフォルトルートのメトリック値と同じにすることをお勧めします。 この例では、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スクリプトへのシンボリックリンクであるかどうかを確認できます。
手順 6:ネットワーク接続のテスト
次の操作を実行して、ECSインスタンスがENIに関連付けられているEIPを使用してインターネットからリクエストを受信できるかどうかを確認します。 この例では、オンプレミスのLinuxマシンを使用してECSインスタンスにリモート接続します。
ECSインスタンスにリモート接続するには、ECSインスタンスのセキュリティグループルールがSSHポート22のネットワークトラフィックを許可していることを確認します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
オンプレミスLinuxマシンにログオンします。
ssh <your username>@ public IP
コマンドを実行し、ECSインスタンスのパスワードを入力して、ECSインスタンスにリモート接続できるかどうかを確認します。 次のメッセージが表示された場合、ECSインスタンスは接続されています。Welcome to Alibaba Cloud Elastic Compute Service!
次の操作を実行して、ECSインスタンスがSNAT経由でインターネットにアクセスできるかどうかを確認します。 次の例は、ECSインスタンスがインターネットにアクセスするために使用するIPアドレスを表示する方法を示しています。
ECS インスタンスにログインします。
curl https://myip.ipip.net
コマンドを実行して、ECSインスタンスがインターネットへのアクセスに使用するEIPを確認します。 NAT IPアドレスが、ECSインスタンス用に作成されたSNATエントリのIPアドレスと同じである場合、ECSインスタンスがSNATサービスを使用してインターネットにアクセスすることが望ましいことを示します。