tentando entender como o arquivo Linux / etc / hosts funciona com endereços IP locais e externos

2

Digamos que eu tenha um servidor Linux com um IP externo de 123.456.789.012 e um IP local de 192.168.0.1. Se é um arquivo / etc / hosts, por exemplo,

123.456.789.012 host2.mydomain.com
192.168.0.1 host2.mydomain.com

Quando um aplicativo no servidor gera tráfego para enviar usando host2.mydomain.com, como o servidor sabe se deve usar o endereço IP local ou externo (desde que o mesmo nome de host mostre dois endereços IP)?

Ou precisa de algo além do que apresentei aqui para decidir isso?

Ou, ele apenas enviou como host2.mydomain.com e deixou o destinatário lidar com ele (em caso afirmativo, como garantir que o tráfego destinado à rede local realmente vá para a rede local)?

    
por gkdsp 27.03.2012 / 17:38

5 respostas

4

De hosts (5):

For each host a single line should be present

Portanto, duplicar o mesmo nome de host para IPs diferentes é um não-não; comportamento não é garantido se você fizer isso.

No entanto, quando eu coloco

1.2.3.4 testhost 
5.6.7.8 testhost 

em / etc / hosts, getent hosts testhost retorna as duas linhas.

OBSERVE que isso, é claro, será altamente específico para as versões do OS e da libc usadas.

    
por 27.03.2012 / 17:56
1

Sua máquina, computer1, tem um arquivo de hosts atualizado:

123.456.789.012 host2.mydomain.com
192.168.0.1 host2.mydomain.com

Qualquer tráfego enviado para o host1.dominio.com do computador1 precisa ser resolvido para um endereço IP, e o lugar que tem precedência sobre todas as outras fontes (por exemplo, DNS) é seu arquivo / etc / hosts. A primeira correspondência para o nome do host em / etc / hosts é usada. Portanto, no seu exemplo, host2.mydomain.com sempre será resolvido para 123.456.789.012.

    
por 27.03.2012 / 17:45
1

Isso não acontece.

Você deve usar nomes de domínio internos / externos separados ou usar o DNS para fornecer respostas diferentes com base no local da rede.

    
por 27.03.2012 / 17:48
1

A página man do Linux diz claramente que "uma linha por endereço IP", então o que você está fazendo é indefinido. Você pode obter o primeiro no arquivo, o último ou aleatório.

É melhor para o seu aplicativo usar apenas o ip nesse caso, talvez com base em alguns critérios.

    
por 27.03.2012 / 17:51
1

Você teria um servidor de DNS local & um servidor DNS remoto. Então, na máquina em hosts, você só tem o IP que deseja usar.

    
por 27.03.2012 / 18:08

Tags