Existe uma maneira de resolver o DNS localmente ao usar um proxy HTTP?

1

Isto é baseado nesta questão: link

Tudo o que quero saber é se existe uma maneira existente para conseguir isso: adicionar intervalos de IP na lista de exceções de proxy e ter os clientes (navegadores da Web, clientes de mensagens instantâneas, cliente de email etc. ) resolver nome localmente apenas encaminhando solicitações para endereços IP não correspondentes.

PS: Estou bem ciente de como os proxies http estão funcionando, mas nada impede que o cliente pergunte primeiro ao cache / files / server do dns (se houver). Isso não ajudará com o proxy em si, mas isso pode ajudar a determinar o que enviar ao proxy.

PPS: sim, isso pode ser menos eficiente do que o comportamento padrão, mas não estou pedindo a ninguém para implementá-lo nem torná-lo o padrão. Eu estou perguntando se existe de alguma forma, porque pelo menos o Google não sabe sobre isso (mais com coisas como dnsmasq, fazendo o trabalho duas vezes não é tão importante).

    
por JohnW 30.10.2015 / 02:05

2 respostas

1

A única maneira que posso pensar em fazer isso é instalar algo como tinyproxy e configurá-lo para, com base no nome de domínio na URL, busque algumas solicitações diretamente e encaminhe o restante para o principal squid ou qualquer proxy.

De acordo com man 5 tinyproxy , isso é feito com a opção upstream config:

* 'upstream host:port "site_spec"' turns on the upstream proxy for the sites matching 'site_spec'.

Eu corro squid na minha rede local, então não tenho idéia de como funciona o tinyproxy .

    
por 30.10.2015 / 08:14
0

Pesquisas de DNS local são necessárias para, por ex. proxy.pac arquivos quando eles usam a função dnsDomainIs() na função FindProxyForURL() principal. por exemplo,

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";
}

Isso informa ao navegador para ir direto para URLs locais, para o servidor proxy no trabalho para URLs específicas de trabalho (o que provavelmente requer alguma forma de autenticação) e para o servidor proxy local na rede local para todo o resto (ou direto se isso é inacessível).

    
por 30.10.2015 / 04:48