Computadores Windows obtendo o SLAAC IPv6 da VLAN marcada

3

Eu tenho computadores Windows em uma rede que, inesperadamente, obtêm um endereço IPv6 da VLAN marcada.

Eu tenho roteadores / computadores conectados a um switch com uma vlan não identificada (id 1) e uma tag (id 2). Por simplicidade, digamos que esta VLAN2 é para aparelhos VoIP que verá uma opção para usar a vlan marcada como parte de uma solicitação DHCP.

Por algum motivo, os computadores Windows nessa rede estão captando um endereço SLAAC das sub-redes 2001:db8:1051:4001::/64 e 2001:db8:1051:4002::/64 . Eu esperava que os computadores Windows escolhessem apenas endereços da VLAN / Subnet não marcada.

Um computador Windows com endereço do 2001:db8:1051:4002::/64 não poderá usar esse endereço para nada. Não é possível executar ping no gateway 2001:db8:1051:4002::1 e um ping do gateway não funciona. Tanto quanto eu posso dizer que não pode realmente usar esse endereço de qualquer forma.

Uma captura wireshark no sistema Windows com o filtro icmp6 and ip6[40] == 134 mostrará os anúncios de rota para ambas as sub-redes.

Uma captura do tcpdump do mesmo computador inicializado para um live do Linux mostrará que os anúncios 2001:db8:1051:4002::/64 com o ID vlan apropriado no quadro Ethernet. O Linux não obtém endereços de ambas as sub-redes.

Os computadores Windows estão completamente limpos em novas instalações do Windows 10 1709 e vi o comportamento em sistemas com adaptadores Realtek e Broadcom.

Configuração

 +--------------+    +-----------+    +------------------+
 | Linux Router +----+ HP Switch +----+ Windows Computer |
 +--------------+    +-----------+    +------------------+

Configuração da interface do roteador Linux

3: eth_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0c:c4:7a:14:c7:fd brd ff:ff:ff:ff:ff:ff
    inet 10.2.25.1/24 brd 10.2.25.255 scope global eth_lan
       valid_lft forever preferred_lft forever
    inet6 2001:db8:1051:4001::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::ec4:7aff:fe14:c7fd/64 scope link
       valid_lft forever preferred_lft forever
5: eth_lan.2@eth_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 0c:c4:7a:14:c7:fd brd ff:ff:ff:ff:ff:ff
    inet 10.2.26.1/24 brd 10.2.26.255 scope global eth_lan.2
       valid_lft forever preferred_lft forever
    inet6 2001:db8:1051:4002::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::ec4:7aff:fe14:c7fd/64 scope link
       valid_lft forever preferred_lft forever

Configuração do Linux RADVD

interface eth_lan
{
    AdvSendAdvert on;
    AdvManagedFlag on;
    AdvOtherConfigFlag on;
    MaxRtrAdvInterval 90;
    MinRtrAdvInterval 30;
    prefix ::/64
    {
    };
};
interface eth_lan.2
{
    AdvSendAdvert on;
    MaxRtrAdvInterval 90;
    MinRtrAdvInterval 30;
    prefix ::/64
    {
    };
    AdvDefaultPreference low;
};

Alternar configuração

HP-2530-24G-PoEP# show running-config

Running configuration:

; J9773A Configuration Editor; Created on release #YA.15.14.0007
; Ver #05:18.63.ff.37.27:91
hostname "HP-2530-24G-PoEP"
snmp-server community "public" unrestricted
vlan 1
   name "DEFAULT_VLAN"
   untagged 1-28
   ip address dhcp-bootp
   exit
vlan 2
   name "VLAN2"
   tagged 1-28
   no ip address
   exit

Perguntas:

Por que os sistemas Windows estão recebendo um endereço IPv6 não funcional da VLAN marcada? Existe alguma maneira de parar isso sem desabilitar o IPv6 na VLAN 2 ou não ter essa VLAN marcada nas portas em que os sistemas Windows estão conectados?

Respostas a perguntas dos comentários

Are the Windows machines able to communicate on the network if you assign them static IPv6 address

Um computador conectado a uma porta (vlan1 não marcado, vlan2 marcado) funcionará perfeitamente se receber um endereço estático da sub-rede VLAN 1, mas não funcionará na sub-rede VLAN2, que é o que eu esperaria que acontecesse.

Have you tried disabling SLAAC on the router and only using DHCPv6?

Se eu desabilitar o SLAAC AdvAutonomous off; e habilitar um servidor DHCPv6 com informações de estado, só obterá um endereço da VLAN não marcada.

What happens if you disable RA's on eth_lan.2?

O cliente não obterá endereços dessa sub-rede da VLAN 2. No entanto, quero que o IPv6 funcione nessa sub-rede, de modo que o RA seja praticamente necessário.

    
por Zoredache 13.04.2018 / 23:57

1 resposta

3

Eu me certificaria de que o driver da NIC esteja totalmente instalado com o minidriver para ativar o suporte a VLAN no sistema operacional corretamente.

O NDIS nativo do Windows não oferece suporte à VLAN corretamente e apenas tira a VLANid no pior dos casos.

Citado em Wireshark ;

Windows has no built-in support mechanisms for VLANs. There aren't separate physical and VLAN interfaces you can capture from, unless a specialized driver that adds such support is present.

So whether you see VLAN tags in Wireshark or not will depend on the network adapter you have and on what it and its driver do with VLAN tags.

Most "simple" network adapters (e.g. widely used Realtek RTL 8139) and their drivers will simply pass VLAN tags to the upper layer to handle these. In that case, Wireshark will see VLAN tags and can handle and show them.

Some more sophisticated adapters will handle VLAN tags in the adapter and/or the driver. This includes some Intel adapters and, as far as i know, Broadcom gigabit chipsets (NetXtreme / 57XX based chips). Moreover, it is likely that cards that have specialized drivers will follow this path as well, to prevent interference from the "real" driver.


Atualização 1 - =======

Encontrou uma referência do Blog da MS ; O Windows Core Networking fala sobre o 802.1P, mas eles fornecem mais algumas informações sobre o 802.1Q (marcação de VLAN)

The Windows networking stack fully supports the 802.1Q tag, i.e. both UserPriority (as Mathias discusses in this post) as well as VlanId. However, no stack component (tcpip, etc.) ever acts on the VlanId field. Vendors, such as Intel, Broadcom, etc., implement VLANs in their miniport drivers in combination with NIC hardware. Thus, Windows enables ISVs to implement VLAN if they wish, but does not natively implement them.

– Gabe

A partir desse outro blog do MS (isso poderia explicar por que o seu computador com Windows não pode executar ping no gateway do IPv6 (e fácil de validar com o wireshark, já que o pacote de saída (PC- > Gateway) seria desatualizado mesmo se for marcado).

Your NIC is responsible for adding the 802.1q tag to the outgoing packet.

Com essa atualização em mente, meu termo "strip the vlan id" foi um pouco pesado no começo, já que ele não tira isso por padrão, ele pega o vlan id como entrada, mas o ignora, e ele simplesmente não não envie o id da vlan depois, e deixe todo o gerenciamento para o driver da NIC.

    
por 18.04.2018 / 20:40