Webサイトを開く動作は、実は1回の通信ではありません。まず「相手の住所(IPアドレス)を調べる」DNSの通信があり、そのあとで「実際にデータを送る」HTTPの通信が始まります。2つは別々の通信で、通る装置も違います。
よくある思い込み
「1つの通信の中に宛先の情報も全部入っていて、それがプロキシ→FW→DNSと流れていく」——と考えると混乱します。実際は、宛先を調べる通信と、宛先へ送る通信が別々に・2回発生します。
前提の構成
社内のPCが、境界の装置(プロキシ・FW)を通って外部とやり取りする、という構成を前提にします。
社内
PC利用者の端末
―
社内と外部の境界
プロキシHTTP/HTTPS専用・認証の関門
FW全通信が通る関所
―
外部(インターネット)
外部のDNSサーバ名前解決を担う
Webサーバ目的の相手
順番に見る
1まず住所を調べる(DNS)
PC利用者の端末
↓「このドメインのIPアドレスは?」(DNSの問合せ)
FW社内と外部の関所📝 DNSはここに記録
↓
外部のDNSサーバ名前解決を担う
↑「IPアドレスはこれ」と返ってくる
2その住所へ実際に送る(HTTP)
PC宛先IPが分かった状態で送信
↓
プロキシHTTP/HTTPS専用の中継認証の関門📝 HTTPはここに記録
↓
FW
↓
Webサーバ目的の相手
ポイントは、DNSはプロキシを通らないこと。プロキシはHTTP/HTTPSだけを中継する装置で、DNSというプロトコルを扱いません。だからDNSの通信はプロキシを飛ばしてFWを通り、HTTPの通信はプロキシを通ってからFWへ進みます。
装置ごとの守備範囲
プロキシ
- 扱うのは HTTP / HTTPS だけ
- DNSは通らない(理解しない)
- ここで認証(本人確認)を課せる
- HTTP通信のログが残る
FW(ファイアウォール)
- すべての通信が通る関所
- DNSもここを通過する
- 通信の可否をルールで制御
- DNS通信のログが残る
だから「片方だけ」認証で止められる
プロキシに認証(本人確認)を設定すると、プロキシを通るHTTPは認証を突破できないと止まります。一方、DNSはプロキシを通らないので、その認証の影響を受けません。
見抜きどころ
認証はあくまでプロキシという1つの装置の中だけの関門です。ネットワーク全体の関所ではありません。だから「認証があるのに、なぜDNSは素通りするの?」の答えは——DNSはそもそもその装置を通らないから。この非対称(HTTPは止まる/DNSは通る)が、多くのインシデント問題の背骨になります。