Aponte vários endereços IP para um único nome de host


25

No sistema Windows, existe este arquivo em C:\WINDOWS\system32\drivers\etc\hosts. Esse arquivo nos permite padronizar um endereço IP específico para um nome de host.

O problema agora é se posso definir vários endereços IP para um nome de host. Por exemplo, posso fazer algo assim:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

E espere que o navegador possa resolver os dois, veja qual deles funcionará e, portanto, aponte para aquele?

Caso contrário, existe outra maneira de obter o comportamento que eu quero?

Nota: estou implantando este aplicativo em minha própria rede local, portanto, não há necessidade de internet.

Respostas:


25

Normalmente você não usaria hosts para fazer isso, mas seu DNS. A maioria dos DNS fornecerá o que é chamado de "Round Robin" se você atribuir vários registros A ao único nome na zona.

O que faria então, seria o primeiro pedido recebido 192.168.244.128, o próximo receberia 192.168.226.129, e assim por diante. No entanto, por padrão, sua máquina local armazenará em cache sua resolução DNS e normalmente usará o mesmo endereço IP repetidamente, até que expire (Time To Live, TTL).


11
EDIT: Deixa pra lá, eu estou corrigido !! Postado Abaixo
MagnaVis

17

Sim, você pode fazer isso, usei-o para testar cenários DNS round-robin sem precisar inserir os hosts em um DNS.

Quando um aplicativo chama gethostbyname, ele recebe de volta a lista completa de endereços IP (possivelmente em ordem aleatória - dependendo das bibliotecas / SO).


2
+1 para responder à pergunta
CLF

u quer dizer que vai escolher um randomly..i possuir um servidor Windows
Lakshay

12

Eu acho que você está fazendo isso da maneira errada. Deixe-me saber se estou fazendo as suposições erradas aqui.

Cenário:

  • Você tem dois servidores Windows executando o mesmo aplicativo Web, provavelmente no IIS.
  • Você deseja que seu aplicativo seja tolerante a falhas, para que, se um dos servidores falhar, ele ainda esteja disponível.
  • Você deseja que essa tolerância a falhas seja transparente para o navegador, para que os usuários possam continuar acessando o aplicativo com o mesmo nome de host, ou seja, gateway.net

O que você está tentando fazer é chamado DNS round-robin (também conhecido como balanceamento de carga de homens pobres), mas você está tentando fazer isso do lado do cliente. Isso parece não ter o efeito desejado (pelo menos na minha caixa do Windows XP), mesmo que eu limpe o cache do DNS. O Windows resolverá apenas o primeiro IP do arquivo. No entanto, o DNS round-robin não é tolerante a falhas; portanto, isso não ajudará você a alcançar o que deseja.

Solução sugerida:

Balanceador de carga de hardware: alguns nomes de marcas são Alteon, Big-IP, Barracuda. O que isso faz é basicamente apresentar um único IP para os usuários se conectarem e encaminhar as solicitações aos servidores da web. Se um dos servidores ficar indisponível, ele não encaminhará mais o tráfego para ele. Esta é a opção cara.

Serviços de balanceamento de carga de rede: Esta é uma tecnologia da Microsoft disponível no servidor Windows, que fornecerá um único IP em cluster. Ele atinge o mesmo resultado que um balanceador de carga de hardware, mas de uma maneira diferente. Tudo que você precisa fazer é configurá-lo .


11
O ZEN-LB é um balanceador de carga realmente simples e fácil. Nós tivemos um monte de sucesso com ele e amá-lo porque o seu código-fonte aberto (livre).
Derrick

2

De http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

Exemplo de IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC hostC-C

Neste exemplo, o hostA possui 2 endereços IP e 3 aliases. O alias hostB especifica o primeiro endereço e os aliases hostC e host-C especificam o segundo endereço. O LSF usa o nome oficial do host, hostA, para identificar que os dois endereços IP pertencem ao mesmo host.


11
"O formato do LSF_CONFDIR / hosts é semelhante ao formato do arquivo / etc / hosts nas máquinas UNIX." Ou seja: a fonte não é sobre arquivos de hosts regulares.
precisa saber é

1

Minha sugestão é usar um servidor DNS interno com round-robin DNS e TTL = 0. Se você atualizar o registro DNS (também com o sistema de verificação automática de IP) quando um IP / servidor estiver inativo, poderá ter um sistema de alta disponibilidade.


Esta não é uma solução para alta disponibilidade. O DNS não foi projetado para isso e deve ser usado apenas em conjunto com outros métodos de failover. Muitos resolvedores também ignoram o cache TTL, tornando esse método não confiável.
Mark Henderson

1

Fiz isso em uma rede doméstica onde atribuo IPs estáticos às interfaces de rede com e sem fio de um laptop e, no arquivo de hosts de outra máquina, aponte um único nome de host para esses dois endereços IP. Parece funcionar bem.


1

De http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

Exemplo de IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC hostC-C

Neste exemplo, o hostA possui 2 endereços IP e 3 aliases. O alias hostB especifica o primeiro endereço e os aliases hostC e host-C especificam o segundo endereço. O LSF usa o nome oficial do host, hostA, para identificar que os dois endereços IP pertencem ao mesmo host.

Com base neste exemplo, fiz o seguinte 10.18.yx 192.168.zx hostA

Onde hostA é o nome do host de um servidor que pretendo acessar da rede interna (192.168.yx) e da VPN (10.8.zx).

ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64

Por isso, funciona bem e eu consigo fazer o samba funcionar através do VNP usando o nome do host, portanto, é bom ter minhas unidades conectadas no Windows nos dois casos (LAN ou VPN conectada).

Cumprimentos.


0

@ Plamen Dimitrov Você precisará de um dispositivo para lidar com esse tipo de equilíbrio, possivelmente um switch que possa lidar com o BGP na frente do seu FW - ou usar o FW, se for capaz. Se seus Ciscos lidam com o BGP, procure implementá-lo. Dessa maneira, é possível que os dois IPs dos ISPs entrem no Cisco / ou switch e os servidores de destino terão IPs válidos de IPs públicos de 24 bits (DIFERENTE DOS 2 IPs do ISP). Nesse ponto (você está usando três blocos de IP públicos diferentes, o dos servidores deve ter 24 bits), é necessário que cada um dos seus ISPs conheça essa solução e eles devem estar dispostos a dar suporte ao Solução BGP entre eles, o que a maioria fará. Agora, quando o seu FQDN for resolvido, ele resolverá o seu bloco de IPs de 24 bits, mesmo se 1 linha do ISP cair. O objetivo é, seus endereços de 24 bits estarão sempre disponíveis devido a seus ISPs concordarem em rotear esse endereço de 24 bits pelas linhas deles. Isso também funciona para a VPN, pois tudo o que você está usando para VPN são os endereços de 24 bits, e não os IPs do ISP que você conectou ao seu Cisco / ou Switch. Nesse ponto, você deve ter cuidado com o BGP FLAPPING, onde, se suas linhas sobem e diminuem muito, devido a uma linha que está recebendo o DOS, os endereços DNS mudam tanto, na internet, que os servidores DNS REMOVERAM AUTOMATICAMENTE OS IPs QUE LEVAM AO SEU BLOCO DE 24 BITS DE IPs. Isso é um ataque do DOS às soluções BGP. Nesse ponto, você deve ter cuidado com o BGP FLAPPING, onde, se suas linhas sobem e diminuem muito, devido a uma linha que está recebendo o DOS, os endereços DNS mudam tanto, na internet, que os servidores DNS REMOVERAM AUTOMATICAMENTE OS IPs QUE LEVAM AO SEU BLOCO DE 24 BITS DE IPs. Isso é um ataque do DOS às soluções BGP. Nesse ponto, você deve ter cuidado com o BGP FLAPPING, onde, se suas linhas sobem e diminuem muito, devido a uma linha que está recebendo o DOS, os endereços DNS mudam tanto, na internet, que os servidores DNS REMOVERAM AUTOMATICAMENTE OS IPs QUE LEVAM AO SEU BLOCO DE 24 BITS DE IPs. Isso é um ataque do DOS às soluções BGP.


0

Pequenos esclarecimentos aqui, pelo menos no mundo do Windows: você pode ter dois endereços IP para um único nome em um arquivo de hosts. Quando consultados, todos os endereços são retornados. O aplicativo (ou seja, navegador) tentará se conectar a cada um deles até que uma conexão seja estabelecida. IOW, ele tentará todos os endereços antes de atingir o tempo limite. (Esse é um mal-entendido comum, pois muitas pessoas acreditam que ele só tentará o "primeiro" endereço.)

Você pode verificar isso com a seguinte experiência:

Adicione dois ou mais endereços para um host no arquivo hosts, um real e os outros falsos. (Reduza os endereços falsos em ordem alfabética.) Abra um navegador e tente conectar-se ao nome do host. Execute netstat -no ao mesmo tempo. Você deve ver tentativas de conexão com o endereço falso. (preso em SYN_SENT) O navegador finalmente chegará ao bom endereço e se conectará. Há um atraso na conexão, mas funcionará.


Não estou dizendo que você está errado, mas eu apenas tentei no meu Win 10 Pro usando o Chrome e não funcionou. Ajustei meu arquivo de hosts (e salvei) e corri ipconfig /flushdnspara garantir que as resoluções anteriores fossem esquecidas. Tentei abrir o site (local da minha máquina) em uma janela anônima no Chrome para impedir os resultados do cache. Apenas falhou (e esperei alguns minutos para ver se acabaria por funcionar). Clique em Atualizar apenas para ter certeza. Então eu comentei o IP falso do meu arquivo de hosts. Sem fazer mais nada, atualizei a página e ela funcionou. A mesma coisa com o Firefox.
Andrew Steitz

Portanto, PODE funcionar com base no aplicativo, mas definitivamente NÃO funciona em dois navegadores modernos.
Andrew Steitz

-1

Você não pode fazer isso com o arquivo hosts.

Você também não pode fazer isso com o DNS: pode servir vários IPs para um único nome, mas o navegador selecionará apenas um desses vários IPs, tente e, se esse host estiver inativo, o navegador exibirá um erro de conexão .

Uma solução possível é configurar um servidor proxy e configurar esses dois IPs como os pais do domínio que eles servem. Pelo menos no caso do Squid, o proxy tentará um servidor e, se falhar, tentará o segundo servidor. Em seguida, configure seu navegador para usar este servidor proxy.


Não é verdade sobre o round robin: www-archive.mozilla.org/docs/netlib/dns.html Observe que usuários do Google retornam vários registros DNS. Apesar da reordenação do RFC3484, obviamente ajuda a retornar vários IPs como uma estratégia de failover.
7897 BrianEss

sim, você pode fazê-lo com o arquivo hosts
Warren
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.