Eu sei que os servidores raiz DNS têm 13 ips e usam anycast para espalhar a solicitação para seus 800 servidores físicos reais em todo o mundo.
Eu sei que o servidor raiz em Hong Kong tem o mesmo ip com outro servidor espelho em algum lugar, é legal ter dois servidores com endereços físicos diferentes na internet com o mesmo ip?
Mas não sei como a solicitação de DNS terá como alvo o servidor mais próximo da minha localização, como Hong Kong.
Como o DNS escolhe seu servidor e é legal ter 2 servidores endereçados físicos diferentes com o mesmo ip?
Responder1
Em uma rede grande (com roteadores dedicados) pode haver mais de um caminho de rede entre dois computadores. Os roteadores geralmente têm vários links de rede entre si para redundância e, portanto, você pode enviar pacotes por qualquer link para chegar ao mesmo computador de destino.
Anycast explora isso fazendo parecer que há duas ou mais rotas para um endereço IP, mas na verdade essas rotas vão para computadores completamente diferentes. Se um dos computadores ficar offline a rota desaparecerá, mas a outra rota ainda estará disponível.
Requer alguma configuração para funcionar. Para compartilhar IPs entre sites, você precisa configurar o BGP (roteamento em nível de ISP) e só pode fazer isso para blocos de pelo menos 256 endereços IP (portanto, usar anycast para apenas um IP desperdiçará aproximadamente 253 IPs). Dentro de um site, você ainda precisa configurar seus roteadores para que eles saibam onde encontrar todos os endpoints anycast, e isso normalmente é feito fazendo com que cada endpoint publique sua presença enquanto estiver online.
Como os pontos de extremidade parecem vários caminhos para o mesmo computador, o tráfego pode usar aleatoriamente um caminho diferente. Normalmente isso não é um problema (os pacotes ainda chegam ao mesmo local mesmo que o caminho que eles seguiram tenha mudado), mas para um IP anycast um caminho diferente significa um destino diferente. Isso significa que você pode enviar tráfego para um endpoint e de repente os pacotes chegarão em um endpoint diferente.
Por esse motivo, anycast não funciona com protocolos de "longa duração" e normalmente só é usado com protocolos sem estado. Anycast DNS é comum porque os pacotes são pequenos e não importa se o servidor endpoint muda inesperadamente. Alguns sites usam anycast com HTTP para arquivos muito pequenos que podem ser recuperados em apenas um ou dois pacotes. Mas qualquer coisa além disso se torna não confiável com o anycast, já que as conexões TCP parecerão cair aleatoriamente sempre que o "caminho" mudar.