Pular para o conteúdo principal

STCP tem tido detecção de endereços IP duplicados há algum tempo, mas uma mudança na forma como o Microsoft Windows 2008 e 7 se comportam acrescentou uma interessante ruga.

Primeiro vamos rever como funciona.

A detecção de endereço IP duplicado depende do protocolo de resolução de endereço (ARP).

A ferramenta Packet_monitor mostra um pacote ARP em duas linhas como

11:13:43.123 Rcvd Ether Dst ff:ff:ff:ff:ff:ff Src 00:13:d4:59:7a:da Tipo 0806 (ARP)
Req. ARP Meta 164.152.77.217 Src 164.152.77.34 [00:13:d4:59:7a:da]

Onde

Rcvd Indica que foram recebidos bytes. A outra opção é Xmit que indica que os bytes foram transmitidos
Éter Indica um cabeçalho de quadro Ethernet a seguir
Dst ff:ff:ff:ff:ff:ff:ff O destino Ethernet; neste caso, o endereço de transmissão
Src 00:13:d4:59:7a:da O endereço de origem Ethernet
Tipo 0806 (ARP) Indica que este é um quadro ARP, tipo 0806
ARP Indica um cabeçalho de estrutura ARP a seguir
Req Indica que se trata de um quadro de solicitação (procurando o endereço MAC). A outra opção é Rep indicando uma resposta.
Meta 164.152.77.217 O endereço IP do alvo
Src 164.152.77.34 O endereço IP do host de envio
[00:13:d4:59:7a:da] O endereço Ethernet do host de envio

STCP examina o Src e se corresponder ao endereço IP da interface que foi recebido no STCP, então o STCP reporta um endereço IP duplicado no syserr_log com uma mensagem formatada como

<time> WARNING (<index>): MAC address <MAC address> is using our IP address <IP address>

Por exemplo:

11:13:43 AVISO(5): Endereço MAC 00:13:d4:59:7a:da está usando nosso endereço IP 164.152.77.34

O "MAC" significa Media Access Control (Controle de Acesso à Mídia) e conhecer o endereço MAC lhe dará algumas pistas sobre a identificação do hospedeiro ofensor. Os primeiros 3 bytes do endereço são chamados de "Organizationally Unique Identifier" (OUI) e podem ser usados para determinar algo sobre o cartão Ethernet ou o host em que ele se encontra. Por exemplo, Stratus tem dois OUIs registrados, 00-00-A8 e 00-04-FC. Você pode consultar qualquer OUI em http://standards.ieee.org/develop/regauth/oui/public.html.

Muitos hosts, incluindo STCP, quando iniciam ou quando uma interface IP é configurada, enviam o que é conhecido como ARP gratuito. Este quadro basicamente procura seu próprio endereço IP, se receber uma resposta sabe que o endereço IP está em uso. Aqui está um exemplo de rastreamento de um monitor de pacotes mostrando o ARP gratuito enviado por outro módulo VOS, pois ele traz à tona uma de suas interfaces. Note que tanto o Meta e Src têm o mesmo endereço IP.

10:19:53.045 Rcvd Ether Dst ff:ff:ff:ff:ff:ff Src 00:00:a8:41:3b:6e Tipo 0806 (ARP)
Req. ARP Alvo 164.152.77.34 Src 164.152.77.34 [00:00:a8:41:3b:6e]

OK, então qual é esta ruga que eu mencionei no início deste post?

A partir do Windows 2008 e Windows 7, a pilha TCP da Microsoft envia o ARP gratuito com o campo Src definido para 0.0.0.0.

10:45:10.530 Rcvd Ether Dst ff:ff:ff:ff:ff:ff Src 1c:c1:de:b4:76:60 Tipo 0806 (ARP)
Req. ARP Meta 164.152.77.34 Src 0.0.0.0.0 [1c:c1:de:b4:76:60]

O resultado é que a STCP pensa que esta é uma consulta "normal" para seu endereço Ethernet e responde com uma resposta normal.

10:45:10.530 Xmit Ether Dst 1c:c1:de:b4:76:60 Src 00:00:00:a8:41:3b:6e Tipo 0806 (ARP)
ARP Rep Alvo 0.0.0.0.0 [1c:c1:de:b4:76:60] Src 164.152.77.34 [00:00:a8:41:3b:6e]

Ele não registra qualquer indicação de um endereço IP duplicado. A boa notícia é que a pilha do Windows reconhece a duplicação e mudará para um endereço local de link do formulário 169.254.X.Y.

Por que a Microsoft fez esta mudança? Parece que muitas pilhas TCP (incluindo STCP) irão atualizar sua entrada de cache ARP para o endereço IP de origem com o endereço Ethernet incluído no quadro ARP. Se o endereço IP for uma duplicata você acaba rompendo as conexões atuais para o endereço IP duplicado, pois os pacotes são redirecionados para o host duplicado. Ao mudar o campo Src para 0.0.0.0, a Microsoft evita que as pilhas TCP (incluindo STCP) atualizem suas entradas de cache ARP.

© 2024 Stratus Technologies.