%20%E3%81%AE%20DNS%20%E3%83%AB%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF.png)
私は最近、クライアントがプロキシ サーバーからページを要求したときに何が起こるかに関するディスカッションに参加しました。一般的なケースにおいて、この一連のイベントに関する私の理解が正しいことを確認したかったのです。
- ユーザーリクエストサイト
- DNS 要求はクライアントによって、宛先 IP アドレスを解決するために構成された DNS サーバーに送信されます (プロキシをバイパスするように構成された HTTP 要求に対応するために、最初にこれが実行されます)
- 宛先IPがDNSから受信され、HTTPリクエストが送信される直前に、リクエストは例外リストと照合されます。
- 宛先サーバーが例外リストにない場合、要求はプロキシ サーバーに転送されます。
- 宛先サーバーが例外リストにある場合、要求はクライアント マシンのルーティング テーブルに従って転送されます。
フィードバックをいただければ幸いです。
答え1
必ずしもそうではありません。クライアントの構成によって異なります。基本的な例として IE を使用しましょう。
IEを明示的なプロキシ:たとえば、他のオプションはチェックされておらず、プロキシは 8080 に設定されているなどです。
ユーザーが住所を入力する
IEはアドレスをチェックし、IE プロキシ例外リストとの文字列の一致(例: 「これらのアドレスのプロキシをバイパスする」)
a.もしそれがバイパスリスト、クライアント用途独自のDNS名前を解決するために、クライアントはターゲットIPアドレスに直接接続しますポート 80 (想定) で、次のような要求を送信します。
GET /something.htm HTTP/1.1
Host: fulldomainame.example.com
b.バイパスリストのエントリが一致しない場合、 続く:
IEは設定されたプロキシに接続します、次の形式のリクエストを送信します。
GET http://fulldomainname.example.com/something.htm HTTP/1.1
ボーナス情報:この使用法はURL 内の FQDNクライアントが考える実際のウェブサーバーではなくプロキシと通信している
プロキシはそのホスト名を解決します使用して独自のDNS にアクセスし、ターゲット サイトに接続します (上記の手順 2 のクライアントのように動作します)。
WPAD/PAC を使用する場合:
自動構成が有効になっているときに ISA/TMG によって提供されるような、Web プロキシ自動検出 (WPAD) またはプロキシ自動構成 (PAC または Autoconfig) スクリプトを使用する場合は、異なります。
ユーザーが住所を入力する
クライアントダウンロード現在wpad.dat/autoproxy.js/.pac設定された場所からファイル
クライアントは関数「URL のプロキシを検索jsファイル内の「」と入力し、それを実行します
Autoproxyスクリプトは、ホスト名そしてメールアドレスこれは機能が制限された JavaScript ファイルですが、それでも多くのことが可能です。
a. これには以下が含まれる可能性があります名前解決(IsInNet、DnsResolve)
b. これには以下が含まれる可能性がある文字列のマッチング(ShExpMatch)
c. これには以下が含まれる可能性がある百万まで数える(私++)
d. これには以下が含まれる可能性がある不愉快な警告ポップアップメッセージ管理者が嫌な奴なら
- (または単に面白いだけ)
- ((またはデバッグ))
のURL のプロキシを検索関数は少なくとも1つの文字列を返す: 使用するのに最適なプロキシの順序付きリスト(セミコロンで区切る)
a. どちらか"直接"この場合、クライアントは上記のバイパスの場合と同様に、名前自体を解決して直接接続する必要があります。
b. または「プロキシ プロキシ名:8080」または同様の場合、クライアントはそのプロキシのそのポートに接続し、完全なURLを取得する、 そしてそのプロキシは名前解決を実行します。
- として例: スクリプト関数が返した場合「PROXY yourProxy:8080;DIRECT」クライアントに接続するように指示するあなたのプロキシTCPポート8080このURLをリクエストし、それ接続を確立できません。直接接続してみてください。 注記TCP セッションのセットアップの失敗は必ずしも迅速ではないため、ユーザーにとって快適なフェイルオーバー エクスペリエンスにはならない可能性がありますが、何にも勝るものはありません。おそらく。
時々、不具合や微妙な点、説明できない動作もありますが、ほとんどの場合、奇妙で興味深い方法で壊れていない限り、上記のように長年にわたって動作してきました。新しいブラウザは動作を最適化し、並列化し、常に興味深いことを試しているので、詳細を理解するには、特定のブラウザの最新のドキュメントを確認してください。
WinSock プロキシ / ISA ファイアウォール クライアント / TMG クライアント:
Winsock Proxy Client (TMG/ISA Server 製) に興味があるなら、それは別の話で、より柔軟性があり、可動部分があります。ここで詳しく説明するには多すぎるのですが、仕組みを説明するドキュメントがあります。簡単に言うと、Windows Sockets にプラグインし、TCP/UDP ベースのトラフィックと名前解決要求の両方をアプリごとおよびユーザーごとに傍受できます。非常に強力ですが、現在は廃止されており、数年間更新されていません。
クライアントは本当にしつこい場合があります:
1つ最後のメモ: HTTPクライアントが特定のサイト/URLのプロキシと通信することを決定すると、プロキシがそれをしないように指示する方法はありません。
「これは提供していません。代わりに直接アクセスしてください」という HTTP ステータス コードやヘッダーはありません...
クライアントが特定のURLがプロキシ配信されていると判断すると、代理デスグリップ起こる。
これを回避する唯一の方法は、クライアントが接続する直前に、PAC またはバイパス リストで選択ロジックを取得することです。
ゾーンとPACファイルに関する最後の注意
IEは、直接接続されているサイトは、URL にドットが含まれていても、ローカル イントラネット ゾーン (既定ではゾーンのプロパティで設定可能) の一部となり、それらのサイトへの統合 Windows 認証 (つまり、Kerberos 認証や NTLM 認証を透過的に) を許可するなどの処理が行われます。したがって、ローカル イントラネット ゾーンにあるかどうかを制御することで、自動認証に関してどの程度信頼されているかが定義されます。繰り返しますが、少なくとも既定ではそうです。
答え2
DNS 部分が正しいかどうかはわかりません。有効な DNS サーバーがないマシンでも、プロキシを使用して IE でページを正常に取得できるのを見たことがあります。
答え3
Ubuntu 10.04、Wine、IE 6.0、Squid 2.7で試しました(システムには1つのDNSがあり、Squidには別のDNSサーバーがあります)
- ユーザーがプロキシにリクエストを送信する
- Squid は DNS サーバーに DNS 要求を送信します
- Squid は DNS の回答を受信します。nxdomain またはその他のエラーの場合は、エラー ページを IE に送信します。名前が解決された場合は、ページを取得して IE に渡します。
IE 6.0 は DNS 名を解決しません。
答え4
そうではないと思います。IP とドメインが例外リストに含まれている場合、またはドメインと IP が例外リストに含まれている場合は、おそらくプロキシを経由することになります。
proxy.pac/wpad.dat を使用すると、この動作を強制的に回避できる可能性があります。