AWS:Elastic IP と逆引き

Date:

Share post:

前回の記事で「とある理由でロードバランサに固定IPを割り振りたいと思った」と言うことに触れましたが、実はこれはDNSの逆引きに対応しようとしたと言うものでした。

今回想定する逆引きは自システムから間接的に利用する外部システム側において、アクセス元が正統なものかを確認する手段として使用するものです。
外部システム側では事前に登録されたIPもしくはドメインからのアクセスのみ許容するようになっています。しかし自システムは負荷分散環境下にある複数サーバ(EC2)で運用されるものであり、今後もサーバの増減があり得ます。もし、IPを直接指定する方式を採用すると、サーバの増減に合わせて外部システム側の設定を変更する必要が生じてしまいます。よって、アクセス元としてドメインを設定しておき、アクセス元サーバのIPから同ドメインが逆引きできるようにしたい訳です。

蛇足ながら、上記の通り逆引き対象はサーバ(EC2)自身のIPになるのですが、当初はこの辺のイメージが整理できておらず、これらサーバに外部からアクセスする際のIP、つまりはロードバランサが持つIPからドメインの逆引きを可能とする必要があると勘違いして色々と環境をいじったというのが前回の記事の正体です。

Elastic IP の取得とEC2への割り当て

前述のように、EC2のIPに関して逆引き設定したいと思いますが、単純にEC2インスタンスを生成した際に割り振られるパブリックIPはEC2の停止などで変更される可能性のある不安定なものなので、IPを固定できるようElastic IPを取得し、EC2に割り当てる必要があります。

Elastic IPの取得に関しては前回の記事でも触れましたし、大した作業ではないので説明は割愛します。

EC2との関連付けに関しても、当該Elastic IPを選択した上で、「Elastic IP アドレスの関連付け」画面を表示し、対象インスタンスとして当該Elastic IPを割り振りたいEC2を選択するのみです。

なお、Elastic IPはEC2一台に対して1つを関連付けた状態であれば無償で利用できますが、インスタンスとの関連付けを行っていなかったり、当該インスタンスが停止していたりすると料金が発生すると言う不思議な制度になっています。無駄にIPを使われないための牽制でしょうかね?

逆引き設定

EC2に関連付けたElastic IPに対して逆引き設定を行います。

逆引き設定は当然ながらDNSの仕組みとして行われるものなのでAWSとしてはRoute53辺りで何かするのかと思いきや、実はElastic IP自体に対して直接的に逆引き設定が行えるようになっています。

対象Elastic IPを選択の上、アクションから「逆引き DNS を更新」をクリックします。

「逆引き DNS を更新」画面では「逆引き DNS ドメイン名」欄に対象ドメイン名を設定するのみです。

これだけで、当該Elastic IPに対する逆引き設定ができてしまいます。スバラシイ!

実際にdigコマンド等を利用して当該IPからドメイン名が確定できるようになっていることを確認できます。

dig -x 123.456.78.90

; <<>> DiG 9.10.6 <<>> -x 123.456.78.90
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64607
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

(中略)

;; ANSWER SECTION:
90.78.456.123.in-addr.arpa. 300	IN	PTR	<ドメイン名>.

総括

今回は軽めの記事になりましたが、それもAWSとしてElastic IPに対する逆引き設定が簡単に実施できるインタフェースを用意してくれていればこそです。
AWSは覚えるべき作法が色々とありますし、従量課金でコストが予測しづらいなどハードルが高く感じられる点もありますが、本件のように本来であれば相応に手数の掛かりそうな操作が簡単に行えてしまう点はやはり魅力です。

これでもう少しおサイフに優しければバンバン使うんですが…そこまで要求するのは贅沢ですかねぇ。

Related articles

Laravel Filamentを使用した管理画面...

前回Breezeをインストールしたこと...

Laravel Filamentを使用した管理画面...

前回、filamentでのリソース作成...

Laravel Filamentを使用した管理画面...

前回、Filamentをインストールし...