Прямо сейчас я пробую нового облачного провайдера, который облегчает частные сети, это функция, на которой вы можете запустить несколько vlan. Поскольку платформа, которую мы собираемся построить, является платформой linux/windows и у нее есть несколько env, мы собираемся разделить их с помощью конструкции vlan. До этого момента все довольно просто.
Лучшим способом использования тегов VLAN в Windows является «средство диагностики Realtek Ethernet» в сочетании с картой Realtek 8139, что дает вам возможность создать интерфейс VLAN.
Интерфейс запускается так, как я его настроил, но теперь начинается самое интересное. Другая машина в том же vlan (10) получает netbios, arp и другие UDP-коммуникации. Я заметил это с помощью простой команды tcpdump:
19:32:44.247964 IP 10.0.10.30.netbios-ns > 10.0.10.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
19:32:44.248057 IP 10.0.10.30.netbios-ns > 10.0.10.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
19:32:44.310334 IP 10.0.10.30.netbios-ns > 10.0.10.255.netbios-ns: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
19:32:44.509278 IP6 fe80::a1dd:64c9:ae27:5659.60116 > ff02::1:3.hostmon: UDP, length 24
19:32:44.509955 IP 10.0.10.30.63646 > 224.0.0.252.hostmon: UDP, length 24
19:32:44.606923 IP6 fe80::a1dd:64c9:ae27:5659.60116 > ff02::1:3.hostmon: UDP, length 24
Если я полностью отключу брандмауэр Windows, остановив службу или добавив интерфейс в частную группу и разрешив все, ничего не произойдет. Я использовал Wireshark на машине Windows, чтобы проверить, принимаются ли мои пакеты ICMP сервером, но в Wireshark этого не видно.
Еще одна странность заключается в том, что если я пингую с машины Windows на машину Linux, первый таймаут указан от локального IP, а остальные 3 таймаута указаны от внешнего адреса (GW по умолчанию). Так что похоже, что Windows не может обработать интерфейс для пакета, отличного от UDP.
Прямо сейчас этот вопрос на самом деле не имеет ответа и сохраняет проблему, которую никто не решил и не задокументировал. Поэтому я хотел бы решить это с вашей помощью и создать подробный пост в веблоге, чтобы у всех был источник.
Надеюсь, кто-нибудь сможет мне помочь. Моя цель — иметь несколько интерфейсов VLAN в Windows 2008R2, каждый со своим собственным тегом VLAN.
решение1
Прежде всего, вам действительно нужно использовать virtio_net, а не e1000 или rtl, потому что последние оба эмулируются, и это по сути означаетмедленный. В Windows, поскольку сама ОС не имеет возможности добавлять теги VLAN, вы обычно создаете тегированный интерфейс на хосте, добавляете мост поверх него и подключаете свою виртуальную машину к этому мосту, который уже передает тегированный трафик.