Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

自分の IP アドレスを使用する (BYOIP)

すべての公開 IPv4 アドレスの範囲の一部またはすべてをオンプレミスのネットワークから AWS アカウントに導入できます。引き続きアドレス範囲を所有できますが、AWS はこれをインターネット上でアドバタイズします。アドレス範囲を AWS に設定すると、そのアドレス範囲はアドレスプールとしてアカウントに表示されます。アドレスプールから Elastic IP アドレスを作成し、EC2 インスタンス、NAT ゲートウェイ、Network Load Balancer などの AWS リソースで使用することができます。

重要

BYOIP は、一部のリージョンでは使用できません。サポートされているリージョンのリストについては、「FAQ for Bring Your Own IP」を参照してください。

要件

  • アドレス範囲は、American Registry for Internet Numbers (ARIN)、Réseaux IP Européens Network Coordination Centre (RIPE) または Asia-Pacific Network Information Centre (APNIC) といった地域インターネットレジストリ (RIR、Regional internet registry) に登録する必要があります。アドレス範囲は、事業体または機関エンティティについて登録を受ける必要があり、個人については登録を受けられない場合があります。

  • 指定できる最も具体的なアドレス範囲は /24 です。

  • 各アドレス範囲は、一度に 1 つのリージョンで使用できます。

  • AWS アカウントには、リージョンあたり 5 つのアドレス範囲を登録できます。

  • IP アドレス範囲内のアドレスには、消去履歴が含まれている必要があります。弊社は、IP アドレス範囲に評価が低いまたは悪意のある挙動に関連付けられている IP アドレスが含まれている場合、当該範囲の評価を調査したり、当該範囲を拒否する権利を留保したりすることがあります。

  • 次の がサポートされています。

    • ARIN - "Direct Allocation" および "Direct Assignment" ネットワークタイプ

    • RIPE - "ALLOCATED PA"、"LEGACY"、および "ASSIGNED PI" 割り当てステータス

    • APNIC – "ALLOCATED PORTABLE" および "ASSIGNED PORTABLE" 割当てステータス

AWS アカウントにアドレス範囲を持ち込むための準備

お客様ご自身だけが、アドレス範囲をご自身の AWS アカウントに登録できるようにするため、お客様は、Amazon による当該アドレス範囲の公開を認める必要があります。また、署名付き認可メッセージにより、ご自身が当該アドレス範囲の所有者であるという証拠も提出する必要があります。

Route Origin Authorization (ROA) は、利用している RIR を介して作成できる、経路広告に関する電子署名付き証明書です。これには、アドレス範囲、そのアドレス範囲を公開することを許可された自律システム番号 (ASN)、および有効期限が含まれています。ROA は Amazon が特定の AS 番号のアドレス範囲を公開することを承認します。ただし、その AWS アカウントに対して、アドレス範囲を AWS に持ち込むことを承認するわけではありません。AWS アカウントに対してアドレス範囲を AWS に持ち込むことを承認するには、アドレス範囲について Registry Data Access Protocol (RDAP) の注釈で自己署名付きの X509 証明書を発行する必要があります。証明書にはパブリックキーが含まれており、AWS はこれを使用してあなたが提供する認証コンテキスト署名を確認します。プライベートキーを安全に管理し、これを使用して認証コンテキストメッセージを署名する必要があります。

これらのタスクのコマンドは、Linux でサポートされています。Windows では、Windows Subsystem for Linux を使用して、Linux コマンドを実行できます。

ROA オブジェクトを作成する

Amazon ASN 16509 および 14618 を承認してアドレス範囲を公開するための ROA オブジェクトと、現在そのアドレス範囲を公開することが承認されている ASN を作成します。持ち込む最小プレフィックスのサイズに最大長を設定する必要があります (たとえば、/24)。ROA が Amazon で使用できるようになるまで最大 24 時間かかる場合があります。詳細については、以下を参照してください。

自己署名の X509 証明書を作成する

次の手順を使用して、自己署名 X509 証明書を作成し、RIR の RDAP レコードに追加します。openssl コマンドには、OpenSSL バージョン 1.0.2 以降が必要です。

自己署名 X509 証明書を作成し、RDAP レコードに追加するには

  1. 以下に示すように RSA 2048 ビットのキーペアを生成します。

    openssl genrsa -out private.key 2048
  2. 次のコマンドを使用してキーペアからパブリック X509 証明書を作成します。この例では、証明書は 365 日で期限切れになり、それ以降は信頼されません。したがって、有効期限は適切に設定してください。情報の入力を求められたら、デフォルト値をそのまま使用します。

    openssl req -new -x509 -key private.key -days 365 | tr -d "\n" > publickey.cer
  3. X509 証明書を使用して RIR の RDAP レコードを更新します。必ず証明書から-----BEGIN CERTIFICATE-----および-----END CERTIFICATE-----をコピーしてください。前のステップで tr -d "\n" コマンドを使用して改行文字を削除していない場合は、ここで削除してあることを確認します。証明書を表示するには、以下のコマンドを実行します。

    cat publickey.cer

    ARIN の場合は、アドレス範囲について [Public Comments] セクションに証明書を追加します。

    RIPE の場合は、アドレス範囲について新しい "descr" フィールドとして証明書を追加します。

    APNIC の場合は、パブリックキーを電子メールでhelpdesk@apnic.netに送信し、手動で "remarks" フィールドに追加します。APNIC の IP アドレスに関する正規連絡先に電子メールを送信します。

署名付き認可メッセージを作成する

署名付き承認メッセージの形式は以下のとおりですが、日付はメッセージの有効期限になります。

1|aws|account|cidr|YYYYMMDD|SHA256|RSAPSS

まず、プレーンテキストの認証メッセージを作成し、次のように text_message という名前の変数に保存します。サンプルのアカウント番号、アドレス範囲、および有効期限を独自の値に置き換えます。

text_message="1|aws|123456789012|198.51.100.0/24|20191201|SHA256|RSAPSS"

次に、作成したキーペアを使用してtext_message内の承認メッセージに署名し、次のように、signed_message と命名された変数内に格納します。

signed_message=$(echo $text_message | tr -d "\n" | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private.key -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n")

AWS で使用するためのアドレス範囲のプロビジョニング

AWS で使用するアドレス範囲をプロビジョニングする場合は、当該範囲の所有者であることを証明し、Amazon による当該範囲の公開を承認します。また、署名済みの認可メッセージを使用して、アドレス範囲を所有していることを確認します。このメッセージには、X509 証明書で RDAP レコードを更新するときに使用した自己署名 X509 キーペアで署名されます。

アドレス範囲をプロビジョニングするには、次の provision-byoip-cidr コマンドを使用します。サンプルのアドレス範囲を独自のアドレス範囲に置き換えます。--cidr-authorization-context オプションでは、以前に作成した変数を使用します。ROA メッセージではありません。

aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message"

アドレス範囲のプロビジョニングは非同期オペレーションであるため、呼び出しはすぐに戻りますが、アドレスの範囲は、そのステータスが pending-provision から provisioned に変わるまで使用できません。プロビジョニングプロセスの完了までには最大で 3 週間かかることがあります。プロビジョニングしたアドレス範囲のステータスを監視するには、以下のdescribe-byoip-cidrsコマンドを使用します。

aws ec2 describe-byoip-cidrs --max-results 5

アドレスプールから Elastic IP アドレスを作成するには、allocate-address コマンドを使用します。--public-ipv4-poolオプションを使用して、describe-byoip-cidrsが返すアドレスプールの ID を指定したり、--address オプションを使用して、プロビジョニングしたアドレス範囲からのアドレスを指定したりすることができます。

AWS からアドレス範囲の公開

アドレス範囲をプロビジョニングすると、公開することができるようになります。プロビジョンした正確なアドレス範囲をアドバタイズする必要があります。プロビジョンしたアドレス範囲の一部のみアドバタイズすることはできません。

アドレス範囲は、AWS から公開する前に、他の場所からの公開を停止することをお勧めします。他の場所から IP アドレス範囲を公開し続ける場合、当社では、その IP アドレス範囲を信頼してサポートしたり、問題をトラブルシューティングすることができなくなります。具体的には、そのアドレス範囲へのトラフィックが当社のネットワークに入るのを保証できません。

ダウンタイムを最小限に抑えるには、アドレス範囲が公開される前にご使用のアドレスプールからアドレスを使用するように AWS リソースを設定してから、同時に現在の場所からの公開を停止して、AWS からの公開を開始します。アドレスプールからの Elastic IP アドレスの割り当ての詳細については、「Elastic IP アドレスの割り当て」を参照してください。

アドレス範囲を公開するには、以下のadvertise-byoip-cidrコマンドを使用します。

aws ec2 advertise-byoip-cidr --cidr address-range

重要

アドレス範囲が毎回異なる場合でも、advertise-byoip-cidr コマンドは 10 秒ごとに最大 1 回しか実行できません。

アドレス範囲の公開を停止するには、以下のwithdraw-byoip-cidrコマンドを使用します。

aws ec2 withdraw-byoip-cidr --cidr address-range

重要

アドレス範囲が毎回異なる場合でも、withdraw-byoip-cidr コマンドは 10 秒ごとに最大 1 回しか実行できません。

アドレス範囲のプロビジョニング解除

AWS によるアドレス範囲の使用を停止するには、アドレスプールから割り当てられている Elastic IP アドレスを解放してアドレス範囲の公開を停止した後に、当該範囲のプロビジョニングを解除します。

各 Elastic IP アドレスを解放するには、以下のrelease-addressコマンドを使用します。

aws ec2 release-address --allocation-id eipalloc-12345678

アドレス範囲の公開を停止するには、以下のwithdraw-byoip-cidrコマンドを使用します。

aws ec2 withdraw-byoip-cidr --cidr address-range

アドレス範囲のプロビジョニングを解除するには、以下のdeprovision-byoip-cidrコマンドを使用します。

aws ec2 deprovision-byoip-cidr --cidr address-range