ドメインフロンティングについてのメモ。
ドメインフロンティングとは
TLSのSNI (Server Name Indication) ヘッダーで指定したドメイン (フロントドメイン)を介して別のドメインへ通信する仕組み。主にCDN (Contents Delivery Network)で利用される技術。
例えばTLSのSNIヘッダーにabc.hoge.com
というドメイン名を、HTTPのHostヘッダーにxyz.hoge.com
というドメイン名を指定して通信を行ったとする。もし2つのドメインが同一のCDNにホストされていた場合、abc.hoge.com
に送られたTLS通信を復号して、その中に含まれているHTTP Hostヘッダーからxyz.hoge.com
というドメインを読み出し、xyz.hoge.com
へ通信をリダイレクトすることが出来る。
xyz.hoge.com
のドメイン名はTLSによって暗号化されているので、ネットワーク・キャプチャ上はabc.hoge.com
とTLS通信しているようにしか見えない。
以下、簡単な検証。
curl -s -i https://www.google.com/ -H "Host: www.youtube.com" | grep -o '<title>.*</title>'
上記のcurlコマンドはwww.google.com
を介してwww.youtube.com
と通信する。(Wikiのコードをcurlに置き換えただけ)
以下はコマンドの実行結果。
![](https://mymanfile.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-18-at-10.16.56-PM.png)
www.youtube.com
と通信できたことがわかる。以下は通信のキャプチャ。
![](https://mymanfile.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-18-at-11.05.34-PM-1024x464.png)
Client HelloパケットのSNIヘッダーはwww.google.com
となっている。
![](https://mymanfile.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-18-at-11.09.57-PM.png)
サーバーから送られたTLS証明書も
www.google.com
のもの。![](https://mymanfile.com/wp-content/uploads/2021/08/Screen-Shot-2021-08-18-at-11.12.44-PM-1024x254.png)
YouTubeというキーワードでパケットを検索しても何もヒットしない。(YouTubeへの通信はTLSで暗号化されているため)
![](https://mymanfile.com/wp-content/uploads/2022/05/Screenshot-2022-05-16-at-8.23.23-PM-1024x386.png)
参考
https://youtu.be/5gwEMocFkc0 (35:22から)