Amazon EC2 で自分の IP アドレスを使用する (BYOIP)
すべての公開 IPv4 アドレス範囲または IPv6 アドレス範囲の一部またはすべてをオンプレミスのネットワークから AWS アカウントに導入できます。引き続きアドレス範囲を所有できますが、デフォルトで AWS はこれをインターネット上でアドバタイズします。アドレス範囲を AWS に設定すると、そのアドレス範囲はアドレスプールとしてアカウントに表示されます。
BYOIP は、すべてのリージョンおよびすべてのリソースで使用できるわけではありません。サポートされているリージョンとリソースのリストについては、「FAQ for Bring Your Own IP
以下のステップでは、独自の IP アドレス範囲を Amazon EC2 でのみ使用する方法について説明します。AWS Global Accelerator で使用するために独自の IP アドレス範囲を使用するステップについては、AWS Global Accelerator 開発者ガイドの「独自の IP アドレス (BYOIP) を使用する」を参照してください。
トピック
要件
-
アドレス範囲は、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) に登録する必要があります。アドレス範囲は、事業体または機関エンティティについて登録を受ける必要があり、個人については登録を受けられない場合があります。
-
取得できる最も具体的な IPv4 アドレス範囲は /24 です。
-
提供できる最も具体的な IPv6 アドレス範囲は、パブリックにアドバタイズされている CIDR の場合は /48、パブリックにアドバタイズされていない CIDR の場合は /56 です。
-
各アドレス範囲は、一度に 1 つのリージョンで使用できます。
-
AWS アカウントには、リージョンごとに合計 5 つの IPv4 アドレスと IPv6 アドレス範囲を使用できます。
-
AWS Resource Access Manager (AWS RAM) を使用して、IP アドレスの範囲を他のアカウントと共有することはできません。
-
IP アドレス範囲内のアドレスには、消去履歴が含まれている必要があります。弊社は、IP アドレス範囲に評価が低いまたは悪意のある挙動に関連付けられている IP アドレスが含まれている場合、当該範囲の評価を調査したり、当該範囲を拒否する権利を留保したりすることがあります。
-
使用する IP アドレスは自分が所有している必要があります。つまり、以下のみがサポートされます。
-
ARIN - "Direct Allocation" および "Direct Assignment" ネットワークタイプ
-
RIPE - "ALLOCATED PA"、"LEGACY"、"ASSIGNED PI"、"ALLOCATED-BY-RIR" 割り当てステータス
-
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
ROA オブジェクトを作成する
あなたのアドレス範囲を公開するための Amazon ASN 16509 および 14618、および そのアドレス範囲を公開することが現在承認されている ASNを承認するための ROA オブジェクトを作成します。持ち込む最小プレフィックスのサイズに最大長を設定する必要があります (たとえば、/24)。ROA が Amazon で使用できるようになるまで最大 24 時間かかる場合があります。詳細については、以下を参照してください。
-
ARIN — ROA のリクエスト数
-
RIPE — ROA の管理
-
APNIC— 経路管理
自己署名の X509 証明書を作成する
次の手順を使用して、自己署名 X509 証明書を作成し、RIR の RDAP レコードに追加します。openssl コマンドには、OpenSSL バージョン 1.0.2 以降が必要です。
以下のコマンドをコピーし、プレースホルダー値 (色付きの斜体テキスト) のみを置換します。
自己署名 X509 証明書を作成し、RDAP レコードに追加するには
-
以下に示すように RSA 2048 ビットのキーペアを生成します。
openssl genrsa -out private.key 2048
-
次のコマンドを使用してキーペアからパブリック X509 証明書を作成します。この例では、証明書は 365 日で期限切れになり、それ以降は信頼されません。有効期限は適切に設定してください。情報の入力を求められたら、デフォルト値をそのまま使用します。
openssl req -new -x509 -key private.key -days
365
| tr -d "\n" > publickey.cer -
X509 証明書を使用して RIR の RDAP レコードを更新します。必ず証明書から
-----BEGIN CERTIFICATE-----
および-----END CERTIFICATE-----
をコピーしてください。前のステップで tr -d "\n" コマンドを使用して改行文字を削除していない場合は、ここで削除してあることを確認します。証明書を表示するには、以下のコマンドを実行します。cat publickey.cer
ARIN の場合は、アドレス範囲について [Public Comments] セクションに証明書を追加します。組織の [comments] セクションには追加しないでください。
RIPE の場合は、アドレス範囲について新しい "descr" フィールドとして証明書を追加します。組織の [comments] セクションには追加しないでください。
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 -n $text_message | 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
プロビジョニング中に問題が発生してステータスが failed-provision
になった場合は、問題の解決後に provision-byoip-cidr
コマンドを再度実行する必要があります。
パブリックにアドバタイズされていない IPv6 アドレス範囲をプロビジョニングする
デフォルトでは、アドレス範囲はインターネットにパブリックにアドバタイズされるようにプロビジョニングされます。パブリックにアドバタイズされない IPv6 アドレス範囲をプロビジョニングできます。非パブリックアドレス範囲の IPv6 CIDR ブロックを VPC に関連付けると、AWS Direct Connect 接続を介してのみ IPv6 CIDR にアクセスできます。
非パブリックアドレス範囲をプロビジョニングするために ROA は必要ありません。
パブリックにアドバタイズされない IPv6 アドレス範囲をプロビジョニングするには、次の provision-byoip-cidr コマンドを使用します。
aws ec2 provision-byoip-cidr --cidr
address-range
--cidr-authorization-context Message="$text_message",Signature="$signed_message" --no-publicly-advertisable
publicly-advertisable
または no-publicly-advertisable
フラグを設定できるのは、プロビジョニング中に限られます。アドレス範囲のアドバタイズ可能なステータスは、後で変更できません。
AWS からアドレス範囲の公開
アドレス範囲をプロビジョニングすると、公開することができるようになります。プロビジョンした正確なアドレス範囲をアドバタイズする必要があります。プロビジョンしたアドレス範囲の一部のみアドバタイズすることはできません。
パブリックにアドバタイズされない IPv6 アドレス範囲をプロビジョニングした場合、このステップを実行する必要はありません。
アドレス範囲は、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 回しか実行できません。
アドレス範囲を操作する
アカウントでプロビジョニングした IPv4 アドレスと IPv6 アドレス範囲を表示および操作できます。
IPv4 アドレス範囲
IPv4 アドレスプールから Elastic IP アドレスを作成し、EC2 インスタンス、NAT ゲートウェイ、Network Load Balancer などの AWS リソースで使用することができます。
アカウントでプロビジョニングした IPv4 アドレスプールに関する情報を表示するには、次の describe-public-ipv4-pools コマンドを使用します。
aws ec2 describe-public-ipv4-pools
IPv4 アドレスプールから Elastic IP アドレスを作成するには、allocate-address コマンドを使用します。--public-ipv4-pool
オプションを使用して、describe-byoip-cidrs
が返すアドレスプールの ID を指定したり、--address
オプションを使用して、プロビジョニングしたアドレス範囲からのアドレスを指定したりすることができます。
IPv6 アドレス範囲
アカウントでプロビジョニングした IPv6 アドレスプールに関する情報を表示するには、次の describe-ipv6-pools コマンドを使用します。
aws ec2 describe-ipv6-pools
VPC を作成し、IPv6 アドレスプールから IPv6 CIDR を指定するには、次の create-vpc コマンドを使用します。Amazon が IPv6 アドレスプールから IPv6 CIDR を選択できるようにするには、[--ipv6-cidr-block
] オプションを省略します。
aws ec2 create-vpc --cidr-block
10.0.0.0/16
--ipv6-cidr-blockipv6-cidr
--ipv6-poolpool-id
IPv6 アドレスプールからの IPv6 CIDR ブロックを VPC に関連付けるには、次の associate-vpc-cidr-block コマンドを使用します。Amazon が IPv6 アドレスプールから IPv6 CIDR を選択できるようにするには、[--ipv6-cidr-block
] オプションを省略します。
aws ec2 associate-vpc-cidr-block --vpc-id
vpc-123456789abc123ab
--ipv6-cidr-blockipv6-cidr
--ipv6-poolpool-id
VPC および関連する IPv6 アドレスプール情報を表示するには、describe-vpcs コマンドを使用します。特定の IPv6 アドレスプールから関連付けられた IPv6 CIDR ブロックに関する情報を表示するには、次の get-associated-ipv6-pool-cidrs コマンドを使用します。
aws ec2 get-associated-ipv6-pool-cidrs --pool-id
pool-id
VPC から IPv6 CIDR ブロックの関連付けを解除すると、IPv6 アドレスプールに戻されます。
VPC コンソールの IPv6 CIDR ブロックの操作方法の詳細については、Amazon VPC ユーザーガイドの「VPC とサブネットの使用」を参照してください。
アドレス範囲のプロビジョニング解除
AWS でアドレス範囲の使用を停止するには、まず Elastic IP アドレスを解放し、アドレスプールからまだ割り当てられている IPv6 CIDR ブロックの関連付けを解除します。次に、アドレス範囲のアドバタイズを停止し、最後にアドレス範囲のプロビジョニングを解除します。
アドレス範囲のプロビジョニングを部分的に解除することはできません。AWS でより具体的なアドレス範囲を使用する場合は、アドレス範囲全体のプロビジョニングを解除し、より具体的なアドレス範囲をプロビジョニングします。
(IPv4) 各 Elastic IP アドレスを解放するには、以下のrelease-addressコマンドを使用します。
aws ec2 release-address --allocation-id
eipalloc-12345678abcabcabc
(IPv6) IPv6 CIDR ブロックの関連付けを解除するには、次の disassociate-vpc-cidr-block コマンドを使用します。
aws ec2 disassociate-vpc-cidr-block --association-id
vpc-cidr-assoc-12345abcd1234abc1
アドレス範囲の公開を停止するには、以下のwithdraw-byoip-cidrコマンドを使用します。
aws ec2 withdraw-byoip-cidr --cidr
address-range
アドレス範囲のプロビジョニングを解除するには、以下のdeprovision-byoip-cidrコマンドを使用します。
aws ec2 deprovision-byoip-cidr --cidr
address-range
アドレス範囲のプロビジョニングを解除するには、最長 1 日かかります。