Estou tentando responder a seguinte pergunta:
O que acontece se uma máquina com várias interfaces de rede, gateways e servidores DNS (por exemplo, uma interface para um adaptador Ethernet e outra para uma conexão VPN) tentar se comunicar com ela mesma, mas não via "localhost"; mas através do seu próprio nome de host (local ou qualificado). Qual interface (ou melhor, qual endereço IP da interface) será usado?
O contexto da questão é que, em tal cenário, às vezes a interface errada (geralmente, a VPN é a "errada") é usada, o que causa problemas com o nosso software se, por exemplo, a conexão VPN for interrompida. Para esses cenários, gostaria de saber como posso influenciar a resolução de nomes para que o IP do adaptador Ethernet seja o preferido.
Eu brinquei com a alteração das métricas das rotas para as diferentes interfaces, mas isso realmente não me deu nenhum comportamento claramente observável. Uma máquina laptop (que faz parte de um AD) onde eu fiz esse experimento, a métrica para a rota para o IP link-local da interface VPN e a rota para o IP do adaptador Ethernet inicialmente tinha a mesma métrica, por exemplo, "rota print "mostraria essas duas rotas (e, claro, muito mais):
Active Routes:
Network Destination Netmask Gateway Interface Metric
1.2.3.4 255.255.255.255 On-link 1.2.3.4 276
2.3.4.5 255.255.255.255 On-link 2.3.4.5 276
Suponha que 1.2.3.4 seja o IP da interface VPN, 2.3.4.5 o da placa de rede.
Quando eu pingava a máquina com seu nome de host local ou qualificado, ela resolveria inicialmente o IP dos adaptadores VPN. Então eu brinquei com a redução ou o aumento das métricas para uma ou outra interface.
Infelizmente, não tive um comportamento claramente observável, mas o que de repente recebi foram erros. Se o IP da VPN fosse resolvido, o ping falharia com um erro, e a mensagem de erro indicaria que o host 2.3.4.5 (o IP da Ethernet!) Respondia com "o host de destino não alcançável":
C:\Users\me>ping myhost
Pinging myhost.my.company.domain [1.2.3.4] with 32 bytes of data:
Reply from 2.3.4.5: Destination host unreachable
Então, meu palpite é que desde que o IP da VPN foi resolvido, o gateway da VPN é usado, e a VPN obviamente não sabe sobre o outro IP.
O próximo ping, então, sempre resolveria o IP do adaptador ethernet e funcionaria bem
C:\Users\me>ping myhost
Pinging myhost.my.company.domain [1.2.3.4] with 32 bytes of data:
Reply from 1.2.3.4: bytes=32 time<1ms TTL=128
[...]
Isso aconteceu mesmo depois de voltar as métricas para seus valores originais (idênticos).
Ocorreu-me que eu provavelmente estava no caminho errado com a alteração das rotas para os meus IPs locais, mas provavelmente eu deveria mudar as rotas para os servidores DNS (ou de alguma outra maneira mudar a precedência do servidor DNS), mas neste momento eu decidi para parar de experimentar e começar a ler primeiro, antes que eu estrague minha configuração. Parece que meu Google foo estava ruim hoje, então acabei postando aqui.
Qualquer ajuda (ou ponteiros para a documentação correta) foi apreciada.
Alterar o arquivo hosts provavelmente poderia me dar o que eu quero, mas eu preferiria uma solução mais portátil (e, o mais importante, eu gostaria de entender o que está acontecendo!).