Resposta curta poderia ser "por que eles deveriam?" ou "por que o outro está fazendo isso?", mas qual é a graça de uma resposta curta?
Depende principalmente da configuração do software em execução no servidor, o BIND tem uma diretiva de configuração chamada rrset-order
que faz exatamente isso, por exemplo, se você tiver:
rrset-order {order fixed;};
O BIND sempre retornará os registros de recursos na ordem em que estão no arquivo de zona.
Com:
rrset-order {order random;};
os registros serão retornados em uma ordem aleatória.
A coisa com aleatoriedade é que ela não existe em um computador. Os sistemas operacionais fazem um grande esforço para criar pseudo-aleatoriedade ao coletar eventos "aleatórios", como interrupções, tráfego de rede, eventos de teclado ou mouse, e assim por diante.
Mas quanto mais você chama random(3)
, menos valores reais são aleatórios e mais os resultados podem ser previstos.
No nosso caso, a aleatoriedade dos resultados para uma consulta DNS, os servidores para com. e net. nunca (bem, eles poderiam, mas você não quer mexer com a cola) ser usado para retornar resultados para, digamos, www.google.com, que é o negócio de servidores de nome do google.com, então, não faz mal a sempre retorna os servidores de nome do google.com na mesma ordem, assim que seu servidor de nomes recursivo os obtiver, eles serão usados em uma ordem de round robin para fazer consultas de qualquer maneira.