O método HTTP get depende da porta 53 para resolução de DNS?

5

Estou lendo sobre como o DNS funciona em geral e me deparei com esta pergunta e resposta.

De acordo com a resposta aceita , a segunda etapa é quando o DNS se comunica com os servidores ISP para o endereço IP de o nome do host.

DNS: "Right... wait a sec, I'll ask the ISP servers. Ok, it looks like 157.166.226.25."

Por acaso eu li esta resposta que diz,

CLIENT running browser asks DNS Server using UDP protocol for A record of www.pippo.it

on client it is the operating system that does resolving part and talks back to browser, browser never talks to DNS directly, rather through OS by invoking gethostbyname()
and on Linux resolving precedence is defined by /etc/nsswitch.conf

Então, se eu bloquear todo o tráfego de saída para a porta 53 na minha máquina usando as regras de firewall, isso significa que não consegui resolver nenhum nome de host?

Eu acredito que não deveria ser o caso, e é por isso que temos /etc/nsswitch.conf file (em máquinas Linux, embora conceito similar possa estar presente para outros sistemas operacionais também). O arquivo entende o banco de dados hosts no qual nomes e números de host são usados por gethostbyname() e funções relacionadas.

Alguém poderia esclarecer se o meu entendimento está correto ou se foi mal entendido?

    
por Ramesh 10.12.2014 / 04:52

5 respostas

17

Algo a ter em mente em relação ao HTTP é que toda a comunicação entre o navegador e o servidor da web ocorre no TCP, que usa endereços IP. A resolução do nome, como você disse, acontece primeiro, porque sem o endereço IP, nenhuma comunicação pode ocorrer.

Assim, a Internet funciona bem, e você pode até mesmo acessar sites sem DNS, mesmo que você não tenha nomes no seu arquivo hosts , desde que você conheça o endereço IP.

Agora, para contradizer o que eu acabei de dizer um pouco, já que sua pergunta é especificamente sobre HTTP, a verdade é que alguns sites não funcionarão se você tentar acessá-los diretamente pelo endereço IP.

Isso pode ocorrer por vários motivos, mas um dos mais comuns é que o servidor da Web realmente hospeda muitos sites diferentes em um único IP e, em seguida, diferencia solicitações para esses sites com base no nome do host solicitado.

Isso é feito como parte da solicitação HTTP, adicionando um cabeçalho Host: . O navegador usa o nome que você deu na barra de endereço para preencher esse cabeçalho durante a solicitação, mas falando estritamente, isso não tem nada a ver com o DNS.

Uma outra maneira de navegar por IP pode ser problemática é em sites HTTPS, porque os certificados são emitidos para determinados nomes de host. Isso não impedirá que eles funcionem, mas o certificado não pode ser verificado pelo navegador, pois o nome não corresponde e você receberá um aviso.

    
por 10.12.2014 / 07:02
8

Estritamente falando, o processo de resolução do nome do host está fora do escopo da especificação HTTP. Na prática, no entanto, quase sempre é feito usando o DNS pela porta UDP 53.

Em casos especiais, mecanismos alternativos de resolução de nome podem ser usados:

  • Os clientes Windows verificarão um arquivo local Hosts , depois o DNS e, em seguida, farão a resolução de nomes NetBIOS.
  • Os clientes OX X também usarão o DNS multicast (porta UDP 5353) para resolver .local endereços.
  • Os sistemas Linux / Unix usarão /etc/nsswitch.conf para determinar a ordem de resolução do nome do host. Mecanismos alternativos incluem LDAP e NIS.

Os administradores de sistema geralmente escolhem bloquear o DNS no firewall para forçar todos os clientes dentro da organização a usar um servidor DNS local. Isso ajuda a controlar o risco de ataques de envenenamento de cache DNS.

    
por 10.12.2014 / 11:38
7

as configurações padrão do nsswitch procurarão / etc / hosts (files) primeiro e depois tentarão o dns. Portanto, se o host estiver listado em / etc / hosts e você bloquear a porta 53 udp / tcp, ele ainda terá o ip e o trabalho corretos. Se o host não estiver em / etc / hosts, você não receberá um IP

    
por 10.12.2014 / 04:58
3

So my question is if I block all the outbound traffic of port 53 in my machine using the firewall rules, does that mean I couldn't resolve any host name at all?

Bem, seu sistema operacional mais do que provavelmente criou um cache de respostas de consultas de DNS anteriores, mas elas expirarão e, assim que o fizerem, você não terá capacidade de resolver nomes de domínio, basicamente está correto.

A complexidade é que você pode "codificar" alguns mapeamentos de domínio → IP em um arquivo ( /etc/hosts ), e existem outras maneiras de resolver nomes de domínio - vários controladores de domínio de rede local, por exemplo pode não usar DNS e, se não, provavelmente não use a porta 53). No entanto, não é provável que isso ajude você a entrar no Facebook.

    
por 10.12.2014 / 13:05
2

Clientes HTTP normalmente usam consultas de encaminhamento DNS quando fazem conexões, mas não necessariamente, porque algo como um proxy HTTP é possível. Ele delega a resolução do nome do servidor para o proxy (que pode, por sua vez, consultar outro proxy etc.). Ī uma vez leu (embora não tenha visto) que os antigos protocolos de LAN permitiam que os navegadores operassem sem TCP.

Além disso, se um aplicativo chamar gethostbyname() ou similar, então pode resultar em um pacote de saída, mas não necessariamente, porque é uma questão de implementação do DNS em determinado sistema operacional e sua configuração . Uma das situações em que gethostbyname() não resulta em um tráfego de saída é o servidor DNS operado localmente (127.0.0.1) que, por algum motivo, já armazenou em cache todos os registros DNS necessários.

    
por 10.12.2014 / 21:56