【メモ】HTTP ProxyのあるネットワークでWebブラウザが名前解決をするタイミング

仕事関連で調べたのだけど、Proxy(Squid)を使っている環境で、Webブラウザがどのタイミングで名前解決しているのか、結構違いがあったので、メモ。

前提条件

自分が調べた環境は、ProxyサーバにSquidを利用して、squid.confに

dns_defnames on

と設定しておく。これで、resolv.confの設定を参照するようになる。

/etc/resolv.confのほうに"search"に、"google.com"と書いて

search google.com

のように設定されていることを確認。
テスト環境は、Debianなので、実際には" /etc/network/interfaces"に


      dns-nameservers 172.16.0.254
      dns-search google.com

と書いておく。

この状態で、Proxyサーバ上で"ping www"とやって、wwwの後ろに/etc/resolv.confsearchで指定したドメイン名が補完されて、

# ping www
PING www.l.google.com (66.249.89.99) 56(84) bytes of data.
64 bytes from nrt04s01-in-f99.1e100.net (66.249.89.99): icmp_seq=1 ttl=52 time=25.8 ms
64 bytes from nrt04s01-in-f99.1e100.net (66.249.89.99): icmp_seq=2 ttl=52 time=20.8 ms
64 bytes from nrt04s01-in-f99.1e100.net (66.249.89.99): icmp_seq=3 ttl=52 time=15.0 ms
^C
--- www.l.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2622ms
rtt min/avg/max/mdev = 15.029/20.570/25.821/4.410 ms

となれば、準備OK。


実際に、Webブラウザで確認してみると

あとは、テストしたいWebブラウザのProxy設定で"dns_defname on"としたProxyサーバを指定してから、

http://www/

へのアクセスをしたときに、「どのサイトが見れるのか」をチェックすることで

  • クライアント側で名前解決してから、ProxyサーバにHTTPリクエストを送る
  • クライアントは名前解決をせず、ProxyサーバにHTTPリクエストが送られ、名前解決はProxyサーバがやる

のどちらかの動きになっているのがわかる、というわけです。

実際に試してみると

  • クライアント上で名前解決してから
    • Safari 5.0.3
    • Chrome 8.0.552.237
  • クライアントでは名前解決せず、Proxyサーバが名前解決
    • FireFox 4.0β
    • InternetExploler 8
    • Opera 11.01

と、まぁこんな感じ。MacではIE8試せないけど、他のブラウザではMac版でもWindows版でも同じ結果にはなります。

こうしてみると、WebKit使ってるほうが、クライアント側で名前解決してからProxyに、っ感じがしなくもないんだよなぁ。
と、まぁ、役に立つんだか立たないんだかわからんネタだったということで。

トラックバック(0)

コメントする