これは次の質問に基づいています。https://askubuntu.com/questions/447877/how-to-resolve-the-dns-locally-when-there-is-a-proxy-configured
ただそこにいるのか知りたいです。既存のこれは、IPスコープをプロキシ例外リストに追加し、クライアント(Webブラウザ、IMクライアント、電子メールクライアントなど)がローカルでのみ名前を解決し、IPアドレスと一致しない要求を渡すようにすることによって行われます。
PS:私はhttpプロキシがどのように機能するかを知っていますが、クライアントが最初にDNSキャッシュ/ファイル/サーバー(存在する場合)を要求するのを防ぐことはできません。これはプロキシ自体には役に立ちませんが、プロキシに送信される内容を決定するのに役立ちます。
PPS:はい、これはデフォルトの動作よりも効率が悪いかもしれませんが、誰にもそれを実装するように頼んだり、デフォルトの動作に設定したりすることはありません。少なくともGoogleはそれについて知らないので、それがどのような形で存在するのかを尋ねています。 (また、dnsmasqのような場合、タスクを2回実行することはそれほど重要ではありません。)
答え1
私が考えることができる唯一の方法は、次のようなものをインストールすることです。小規模エージェントそして、URLのドメイン名に基づいていくつかのリクエストを直接受け取り、残りはデフォルトのプロキシまたはsquid
別のプロキシに転送するように設定します。
これによると、man 5 tinyproxy
これはupstream
設定オプションを介して行われます。
* 'upstream host:port "site_spec"' turns on the upstream proxy for the sites matching `site_spec`.
私のローカルネットワークでこれを実行しているので、どれだけうまくいくのかsquid
わかりません。tinyproxy
答え2
たとえば、ファイルが基本機能でこの機能を使用している場合は、proxy.pac
ローカルDNS検索が必要です。例えばdnsDomainIs()
FindProxyForURL()
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, ".local.example.net"))
{ return "DIRECT" };
if (dnsDomainIs(host, "work.example.net")
|| dnsDomainIs(host, "intranet.example.net)
)
{ return "PROXY work.proxy.example.net:3128" };
return "PROXY proxy.local.example.net:3128; DIRECT";
}
これは、ブラウザがローカルURLに直接アクセスし、ジョブ固有のURLに対して動作しているプロキシサーバーにアクセスし(ある種の認証が必要な場合があります)、他のすべての場合はローカルネットワーク上のローカルプロキシサーバーにアクセスするように指示します(または直接アクセス)。到達できません)。