はじめに
CDN経由でアクセスしているとき、どこのエッジに接続しているのか?と思ったことがある人も多いと思います。特にパブリックDNSリゾルバーを使っている場合、適切にエッジを選択できないケースがあるため、ちゃんと近くのエッジに接続しているか確認したくなるケースも多いと思います。
一部のCDN業者は明示的or暗黙的にエッジの地域を出力しています。ここでは代表的なCDN業者について調べてみました。
CDNごとの判別方法
CloudFront
エッジのIPv4アドレスの逆引きレコードが 空港の3レターコード+数字2桁.r.cloudfront.net という形式です。IPv6アドレスの逆引きレコードは存在しません。kix, itmなどは見たことがないので、日本のエッジはすべてnrtになり、国内での識別は枝番で行われるようです。
例
server-***-***-***-***.nrt53.r.cloudfront.net
Cloudflare
Cloudflareはエッジロケーションの取得方法が公開されています。
利用しているドメインルート直下に cdn-cgi/trace
をつけると、エッジの情報が表示されます。colo=
の後ろに 空港の3レターコード で表示されます。東京はnrt, 大阪はkixです。その他地域はステータスダッシュボードから確認できます。
Identify the Cloudflare data center serving your request
他にHTTPレスポンスのcf-ray
ヘッダからも確認できます。
例
cf-ray: 54c27032db4ba5d6-NRT
CDNetworks
CDNetworksはHTTPレスポンスのx-px
ヘッダに出力しているようです。PSからはじまる文字列の末尾が3レターコードです。複数入っている場合はオリジンに近いエッジでキャッシュしてから、下流のキャッシュに配信する設定になっていると思われます。おそらく左側がエッジ側、右側がオリジン側です。この機能はAkamaiやCloudFront(オリジンがEC2, S3の場合のみ)にも搭載されています。
例
x-px: ms PSrbJP1am225HND,ms PSrbJP1cu59HND,ht PSxjpSIN4yt204SIN
via
ヘッダにはSIN, JPなど途中経路らしき文字列が見られますが、これが何を意味するのかはよくわかりません。
例
via: 1.1 PSxjpSIN4yt204:0 (W), 1.1 PSrbJP1cu59:6 (W), 1.1 PSrbJP1am225:4 (W)
余談ですが、www.cdnetworks.comのx-hello-human
ヘッダには求人メッセージが入っています。気になる人は見てみましょう。
Fastly
HTTPレスポンスのx-served-by
ヘッダに出力します。末尾が3レターコードです。Fastlyは少し特殊で、各地域にエッジが複数ある場合、それぞれ別の名前が設定されます。例えば東京には3カ所エッジがありますが、それぞれHND, NRT, TYOという名前が割り当てられています。大阪は1カ所だけでITMです。東京に第4のエッジを作る場合どうするのか気になりますね。そのほかの地域はステータスダッシュボードから確認できます。
例
x-served-by: cache-tyo19937-TYO
確認方法がなさそうなCDN
- Akamai
- EdgeCast
- Google Cloud CDN, Google Cloud Storage
IATAの空港3レターコード一覧
Wikipediaなどを参照してください。