У меня в офисе происходит странная вещь, которую я не могу понять. В частности, я не могу сказать, проблема ли это в переключателе или проблема в конфигурации.
У нас есть коммутатор Cisco SG300-52 (sw01) в верхней части стойки в нашей серверной комнате, подключенный к другому SG300-28, который действует как наш основной коммутатор (core01). Оба работают только на уровне 2, наши межсетевые экраны выполняют маршрутизацию между VLAN. Между ними около дюжины виртуальных локальных сетей. Gi1 на sw01 - это магистральный порт, подключенный к gi1 на core01.
(Раскрытие информации: в нашей среде есть и другие переключатели, но я почти уверен, что изолировал проблему от этих двух. При необходимости я рад предоставить дополнительную информацию.)
Поведение, которое я вижу, ограничено одной VLAN, vlan 12 - или, по крайней мере, этого не происходит в других, которые я проверял (трудно гарантировать отсутствие пакетов), и это: sw01 перенаправляет на core01 трафик между двумя хостами, которые оба подключены к sw01.. (Я заметил это, потому что IDS в нашем брандмауэре дал ложное срабатывание по трафику, который должен не добраться до брандмауэра.)
Мы заметили это в основном между нашими двумя серверами dhcp / dns, net01 (10.12.0.10) и net02 (10.12.0.11). net01 - это физическое оборудование, а net02 - на сервере VMware ESX. net01 подключен к gi44 на sw01, а сервер ESX net02 - к gi11.
[net01]----gi44-[sw01]-gi1----gi1-[core01]
[net02]----gi11/
Посмотрим несколько интерфейсов! Помните, vlan 12 - это проблема vlan. Из других я явно подтвердил, что vlan 27 был не затронуты.
Вот порты двух хостов: esx01 содержит net02.
sw01#sh run int gi11
interface gigabitethernet11
description esx01
lldp med disable
switchport trunk allowed vlan add 5-7,11-13,100
switchport trunk native vlan 27
!
sw01#sh run int gi44
interface gigabitethernet44
description net01-1
lldp med disable
switchport mode access
switchport access vlan 12
!
Вот ствол на sw01.
sw01#sh run int gi1
interface gigabitethernet1
description "trunk to core01"
lldp med disable
switchport trunk allowed vlan add 4-7,11-13,27,100
!
А другой конец магистрали на core01.
interface gigabitethernet1
description sw01
macro description switch
switchport trunk allowed vlan add 2-7,11-16,27,100
!
У меня есть порт монитора на core01, поэтому:
core01#sh run int gi12
interface gigabitethernet12
description "monitor port"
port monitor GigabitEthernet 1
!
И порт монитора на core01 видит одноадресный трафик, идущий между net01 и net02, оба из которых находятся на sw01! Я проверил это с помощью порта монитора на sw01, который также видит одноадресный трафик net01-net02, уходящий через gi1.
sw01 знает, что оба этих хоста находятся на портах, которые не являются его магистральным портом:
:) ratchet$ arp -a | grep net
net02.2ndsiteinc.com (10.12.0.11) at 00:0C:29:1A:66:15 [ether] on eth0
net01.2ndsiteinc.com (10.12.0.10) at 00:11:43:D8:9F:94 [ether] on eth0
sw01#sh mac addr addr 00:0C:29:1A:66:15
Aging time is 300 sec
Vlan Mac Address Port Type
-------- --------------------- ---------- ----------
12 00:0c:29:1a:66:15 gi11 dynamic
sw01#sh mac addr addr 00:11:43:D8:9F:94
Aging time is 300 sec
Vlan Mac Address Port Type
-------- --------------------- ---------- ----------
12 00:11:43:d8:9f:94 gi44 dynamic
Я также поднял неиспользуемый порт на sw01 на vlan 12, но одноадресный трафик был (насколько я мог судить) не выходит из этого порта. Так что не похоже, что sw01 выталкивает все свои порты, только правильные порты а также gi1!
Я убедился, что sw01 не заполняет свою адресную таблицу:
sw01#sh mac addr count
This may take some time.
Capacity : 8192
Free : 7983
Used : 208
Доступны полные конфигурации для core01 и sw01: core01, sw01.
Наконец, версии:
sw01#sh ver
SW version 1.1.2.0 ( date 12-Nov-2011 time 23:34:26 )
Boot version 1.0.0.4 ( date 08-Apr-2010 time 16:37:57 )
HW version V01
core01#sh ver
SW version 1.1.2.0 ( date 12-Nov-2011 time 23:34:26 )
Boot version 1.1.0.6 ( date 11-May-2011 time 18:31:00 )
HW version V01
Так что мой понимание это так: sw01 должен принимать одноадресный трафик для net01 и отправлять его только через порт net02, и наоборот; ни один из них не должен выходить из восходящего канала sw01. Но core01, получая трафик на gi1 для хоста, который знает является на gi1, правильно отправляет ему все свои порты. (То есть sw01 плохо себя ведет, но core01 делает то, что следует в данных обстоятельствах.)
У меня вопрос: Почему sw01 отправляет этот одноадресный трафик по восходящей линии связи, gi1?
(И превентивно: да, я знаю, что SG300 оставляют желать лучшего, и да, нам следовало бы включить связующее дерево, но сейчас я нахожусь именно здесь.)
Я бы посмотрел на MAC-адреса в захваченных пакетах. Если маска, таблица arp или шлюз на одном из хостов неверны, возможно, установлен неправильный MAC-адрес назначения.