Назад | Перейти на главную страницу

Компьютеры Windows, получающие SLAAC IPv6 от тегированной VLAN

У меня есть компьютеры с Windows в сети, которые неожиданно получают IPv6-адрес из помеченной VLAN.

У меня есть маршрутизаторы / компьютеры, подключенные к коммутатору с нетегированным vlan (id 1) и тегированным (id 2). Для простоты предположим, что эта VLAN2 предназначена для телефонов VoIP, которые увидят возможность использовать тегированный vlan как часть запроса DHCP.

По какой-то причине компьютеры с Windows в этой сети получают адрес SLAAC от обоих 2001:db8:1051:4001::/64 и 2001:db8:1051:4002::/64 подсети. Я ожидал, что компьютеры с Windows будут принимать адреса только из непомеченной VLAN / подсети.

Компьютер Windows с адресом из 2001:db8:1051:4002::/64 не сможет использовать этот адрес ни для чего. Не удается пропинговать шлюз 2001:db8:1051:4002::1 и пинг от шлюза не работает. Насколько я могу судить, он никак не может использовать этот адрес.

Захват wirehark из системы Windows с фильтром icmp6 and ip6[40] == 134 покажет объявления маршрута для обеих подсетей.

Захват tcpdump с того же компьютера, на котором загружен livecd Linux, покажет, что 2001:db8:1051:4002::/64 рекламные объявления с правильным идентификатором vlan в кадре Ethernet. Linux не получает адреса из обеих подсетей.

Компьютеры с Windows - это полностью чистые новые установки Windows 10 1709, и я видел поведение в системах с адаптерами Realtek и Broadcom.

Конфигурация

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

Конфигурация интерфейса маршрутизатора 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

Конфигурация RADVD для Linux

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;
};

Конфигурация переключателя

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

Вопросы:

Почему системы Windows получают нефункциональный IPv6-адрес из помеченной VLAN? Есть ли способ остановить это, не отключая IPv6 в VLAN 2 или не помечая эту VLAN на портах, к которым подключены системы Windows?


Ответы на вопросы из комментариев

Могут ли компьютеры Windows обмениваться данными по сети, если вы назначите им статический IPv6-адрес

Компьютер, подключенный к порту (немаркированный vlan1, маркированный vlan2), будет работать отлично, если ему будет предоставлен статический адрес из подсети VLAN 1, но он не будет работать в подсети VLAN2, чего я и ожидал.

Вы пробовали отключить SLAAC на маршрутизаторе и использовать только DHCPv6?

Если я отключу SLAAC AdvAutonomous off; и включите DHCPv6-сервер с отслеживанием состояния, компьютеры будут получать адрес только из немаркированной VLAN.

Что произойдет, если вы отключите RA на eth_lan.2?

Тогда клиент не получит адреса из этой подсети VLAN 2. Хотя я хочу, чтобы IPv6 работал в этой подсети, поэтому RA в значительной степени требуется.

Я бы удостоверился, что драйвер сетевой карты полностью установлен вместе с их мини-драйвером, чтобы правильно включить поддержку VLAN в ОС.

Собственная Windows NDIS не поддерживает корректно VLAN и в худшем случае просто удаляет VLANid.

Цитируется из Wireshark;

Windows не имеет встроенных механизмов поддержки VLAN. Не существует отдельных физических интерфейсов и интерфейсов VLAN, с которых вы можете осуществлять захват, если не присутствует специальный драйвер, который добавляет такую ​​поддержку.

Итак, видите ли вы теги VLAN в Wireshark или нет, будет зависеть от имеющегося у вас сетевого адаптера и от того, что он и его драйвер делают с тегами VLAN.

Большинство «простых» сетевых адаптеров (например, широко используемых Realtek RTL 8139) и их драйверы просто передают теги VLAN на верхний уровень для их обработки. В этом случае Wireshark увидит теги VLAN, сможет их обработать и отобразить.

Некоторые более сложные адаптеры будут обрабатывать теги VLAN в адаптере и / или драйвере. Сюда входят некоторые адаптеры Intel и, насколько мне известно, гигабитные чипсеты Broadcom (чипы на основе NetXtreme / 57XX). Более того, вполне вероятно, что карты со специализированными драйверами также последуют этому пути, чтобы предотвратить помехи от «настоящего» драйвера.


Обновление 1
=======

Нашел ссылку в блоге MS там; Windows Core Networking говорит о 802.1P, но они дают дополнительную информацию о 802.1Q (теги VLAN)

Сетевой стек Windows полностью поддерживает тег 802.1Q, то есть как UserPriority (как обсуждает Матиас в этом посте), так и VlanId. Однако ни один компонент стека (tcpip и т. Д.) Никогда не воздействует на поле VlanId.. Производители, такие как Intel, Broadcom и т. Д., Реализуют виртуальные локальные сети в своих драйверах минипорта в сочетании с оборудованием NIC. Таким образом, Windows позволяет независимым поставщикам программного обеспечения реализовать VLAN, если они хотят, но не реализует их изначально.

- Гейб

Из этого другого MS блог (это может объяснить, почему ваш компьютер с Windows не может проверить связь с шлюзом IPv6 (и его легко проверить с помощью wirehark, поскольку исходящий пакет (ПК-> шлюз) не будет обрабатываться, даже если он должен быть помечен))

Ваша сетевая карта отвечает за добавление тега 802.1q к исходящему пакету.

Имея в виду это обновление, мой термин «удалить идентификатор vlan» сначала был немного тяжелым, поскольку он не удаляет его по умолчанию, он получает идентификатор vlan в качестве ввода, но игнорирует его и просто не отправляет идентификатор vlan после этого и оставьте все управление драйвером сетевого адаптера.