Windows 2008 ignora solicitações gratuitas de ARP

38

Recentemente, vimos um problema após um failover de nosso roteador, em que nossas caixas do Windows 2008 não começaram a conversar com o roteador principal após o failback.

Quando fizemos algumas escavações, eles ainda tinham a entrada ARP do roteador secundário. De acordo com o Blog do TechNet, este é um projeto específico:

Primeiro, um Windows Vista ou Windows Server 2008 não atualizará o cache do vizinho se uma transmissão de ARP for recebida, a menos que faça parte de uma solicitação de transmissão de ARP para o receptor . O que isso significa é que, quando um ARP gratuito é enviado em uma rede com Windows Vista e Widows Server 2008, esses sistemas não atualizam seu cache com informações incorretas se houver um conflito de endereço IP.

Em segundo lugar, parece que o cache vizinho do Windows (arp-cache) só é atualizado se a máquina não puder mais falar com a máquina que está no cache atualmente. Ele não envia solicitações ARP ocasionais para garantir que o cache não fique obsoleto. Embora isso não seja um problema durante o failover inicial, durante o failback quando as duas caixas estiverem ativas, isso fará com que o Windows continue falando com a caixa secundária.

Existe alguma maneira de forçar o Windows 2008 a aceitar solicitações gratuitas de ARP?

Zypher
fonte

Respostas:

8

Após o teste, parece que o Hotfix 2582281 corrige o problema. Você pode obter o hotfix sem precisar pagar pelo suporte usando a página de solicitação de hotfix .

Fiz um teste usando o arpingWindows 2008 R2 sem patch. Adicionei um IP secundário, 64.34.119.80, a uma máquina com o mesmo segmento L2 da rede. Em seguida, emiti o seguinte comando de uma máquina diferente da rede ( sudo arping -U 64.34.119.80 -I bond0 -c1). Logo depois disso, fiz o ping 64.34.119.80 da caixa do Windows depois de vê-lo receber o arp no wireshark. Apliquei o hotfix e repeti o teste.

Além disso, parece que o comando arping precisa não usar o endereço MAC de difusão ponto a ponto, mas o MAC de difusão, porque esse é o único tipo de GARP ignorado nos meus testes.

Antes do patch:

insira a descrição da imagem aqui

Nesta captura do wireshark, o ping após a solicitação do GARP não é enviado ao destino MAC do qual o GARP veio, para que você possa ver que o GARP está sendo ignorado.

Após o patch:

insira a descrição da imagem aqui

Neste teste, após o patch, a solicitação GARP parece ser atendida, pois o ping é enviado para o endereço MAC de onde o GARP veio.

Portanto, a partir desses testes, parece que o hotfix 2582281 corrige o problema das transmissões GARP sendo ignoradas.

Kyle Brandt
fonte
4

Ao pesquisar meu próprio problema de TCP / IP agora, deparei-me com esse hotfix muito interessante:

http://support.microsoft.com/kb/2582281

Causa:

Esse problema ocorre porque a pilha TCP / IP do servidor de aplicativos ignora incorretamente solicitações gratuitas de Address Resolution Protocol (ARP).

Isso parece muito com o que você está enfrentando. E também é um hotfix totalmente novo, lançado em 22/07/2011, portanto não estava presente quando você o encontrou pela primeira vez.

sysadmin1138
fonte
Parece que este KB desapareceu?
Kyle Brandt
@KyleBrandt Estava lá e agora se foi. Pergunto-me se o problema está agora coberto de um serviço-pack / atualização em outro lugar, possivelmente esta: support.microsoft.com/kb/2578103
sysadmin1138
3

Tente netsh interface ipv4 set interface x basereachable=yonde x é o índice da interface e y é o tempo limite do ARP em milissegundos que você deseja. Lembre-se de fazê-lo em um prompt de comando com privilégios de administrador!


fonte
2
Na verdade, isso apenas ajusta o tempo entre o momento em que o cache vizinho pensa que a entrada está obsoleta versus alcançável. Se as duas caixas de HA estiverem ativadas no momento da falha, o Windows nunca a verá como obsoleta e com novo arp.
Zypher 10/05
1
Eu não acho que exista uma maneira de forçar o Windows a aceitar ARPs gratuitos. Na verdade, tive que diminuir o tempo acessível para alcançar o failover / failback em um cenário diferente por causa disso.
3

Qual protocolo de redundância de primeiro salto você está usando?

Sei que isso não responde diretamente à sua pergunta, mas o VRRP (e seu precursor proprietário, HSRP) usa um endereço MAC compartilhado que é invertido para uma nova porta de switch quando o roteador principal é alterado. Isso evita totalmente a necessidade de um ARP gratuito.

Murali Suriar
fonte
1

Pré-requisitos
1. WinPCAP 4.0.1 (versão 4.1.2 não funciona)
- http://www.winpcap.org/archive/4.0.1-WinPcap.exe (versão Windows)
2. Wireshark 1.6.7
3. IPv6 desativado na interface de rede, devido a restrições de arping
4. arping
- http://mathieu.carbou.free.fr/pub/arping/2.06/arping.zip (Windows Binary)

Execução
1. Obtenha o nome da interface
- "E: \ Arquivos de Programas \ Wireshark \ tshark.exe "-D
- A partir dos detalhes da interface do Wireshark
2. Execute arping, para enviar um pedido gratuito de ARP
- arping.exe -A -i \ Device \ NPF_ {4399F778-AF25-4B6D-AFFB-A1F2C7DFA667} 10.20.30.50 -c 3 -S 10.20.30.50
Onde 10.20.30.50 é o endereço ip que você deseja anunciar para a rede (roteador)

Antonio N
fonte
-4

Encontrei isso no link em http://blog.serverfault.com/post/windows-2008-and-broken-arp/ .

Se você tivesse perguntado no stackoverflow, poderia ter corrigido muito mais rapidamente.

Cheire os pacotes GARP e execute arp -s inet_addr eth_addr.

Não faça isso se houver a chance mais remota de obter uma máquina hostil na sua LAN.

Joshudson
fonte
Isso não é realmente uma correção. É uma solução alternativa que funciona em uma máquina. O comportamento ainda está quebrado. Tudo o que está sendo feito é alterar manualmente o endereço na tabela arp, não corrigindo a causa raiz do comportamento.
Zypher