こんにちは。ごえです。今回はcurlコマンドで接続する際に、接続先サーバーのIPアドレスを指定する方法を紹介します。
curlでCDN配下のHTTPS接続先を指定して確認する
CloudFrontなどのCDNが前段にある環境で、DNSを変更せずに特定のIPアドレスへHTTPS接続を試したい場合は、curlの`--resolv`オプションが便利です。
-I (大文字のアイ) オプション:HTTPレスポンスヘッダーを表示する
-v(小文字のブイ) オプション:詳細表示(実際に接続したIPアドレス等)
証明書エラーを一時的に無視する場合は、`-k`を追加します。
(203.0.113.10 は例示アドレスです。)
想定している環境
Webサーバーの前段にCDNやロードバランサーなどがある環境を想定します。
CloudFront
|
ロードバランサー
|
EC2
上記の構成において、CloudFront、ロードバランサー、EC2のすべてにSSL証明書が設置されていると仮定します。
SSL証明書の更新をした際、ブラウザにURLを入力してサイトを確認すると、更新されたかどうか確認できるのは一番外側のCloudFrontのみです。
CloudFrontだけ確認しても、もしかしたらEC2に設置されているSSL証明書を更新し忘れている可能性があります。
CloudFront配下のロードバランサーとEC2に設置されたSSL証明書が正しく更新されたかを確認することはできません。
そんな時に便利なのが、curlコマンドの「--resolv」オプションです。
ホスト名とポート番号、IPアドレスを指定してアクセスすることができます。
--resolv の動作
--resolvオプションの指定形式は次のとおりです。
今回の例では、`example.com:443`の接続先を`203.0.113.10`へ固定しています。
URLには`https://example.com/`を指定したままなので、接続先IPだけを変更しつつ、Hostヘッダーには`example.com`が使用されます。
このため、前段にCloudFrontがあっても配下のEC2に直接アクセスすることができます。
(もちろんEC2に紐づくセキュリティーグループで443ポートの接続を許可する必要はあります)
主な用途
・DNS切り替え前の疎通確認
・CDN配下のサーバーに設置した証明書有効期限のチェック
・特定の接続先IPに対する動作確認
・hostsファイルを変更せずに一時的なテストを行う
hostsファイルを変更しても可能ですが、接続先IPアドレスを変えながら何度も接続確認をする場合は
「--resolv」オプションが便利です。
よろしければ参考にしてください。
最後までお読みいただきありがとうございます。

