Почему я вижу одноадресные пакеты с машины в другой VLAN?

Почему я вижу одноадресные пакеты с машины в другой VLAN?

Я (все еще) пытаюсь правильно настроить VLAN на коммутаторе 3-го уровня (Netgear GS516TP).

Базовый сценарий: имеется три VLAN: VLAN 10, 11 и 12, с тремя портами и тремя машинами соответственно.

  • 10.0.10.5, подключенный к порту g10 и принадлежащий VLAN 10.
  • 10.0.11.5, подключенный к порту g11 и принадлежащий VLAN 11.
  • 10.0.12.5, подключенный к порту g12 и принадлежащий VLAN 12.

введите описание изображения здесь

VLAN 10 имеет нетегированные порты g10, g11 и g12.

введите описание изображения здесь

VLAN 11 имеет нетегированные порты g10 и g11. Аналогично, VLAN 12 имеет нетегированные порты g10 и g12.

введите описание изображения здесь

Цель состоит в том, чтобы машины, принадлежащие VLAN 11 и VLAN 12, могли взаимодействовать с машинами в VLAN 10. Однако машина из VLAN 11 не должна ничего знать о машинах в VLAN 12 (и наоборот).

Хотя все три машины используют маску сети 255.255.0.0, конфигурация маршрутизации установлена ​​следующим образом:

введите описание изображения здесь

Теперь проблема. Когда я отправляю пакет TCP или UDP с 10.0.10.5 на 10.0.11.5 (например, выполнив nc -n 10.0.11.5 100), я вижу этот пакет в Wireshark, запущенном на машине, которая принадлежит VLAN 12. Однако это не работает в обратную сторону, т. е. пакет, отправленный с 10.0.11.5, не виден в VLAN 12.

Что нужно сделать, чтобы пакеты, нацеленные на машины из VLAN 11, никогда не достигали портов, принадлежащих VLAN 12?

решение1

По умолчанию каждый порт использует только информацию L2 для принятия решения о том, как обрабатывать пакеты (L2 == MAC == bridge). Это решение не учитывает L3, т. е. он не знает диапазоны IP VLAN.

Если вы включаете маршрутизацию для VLAN, а MAC DA [адрес назначения] входящего одноадресного пакета совпадает с адресом внутреннего интерфейса моста-маршрутизатора, пакет маршрутизируется.

IP-адрес, который вы назначили VLAN (виден на вашем последнем снимке экрана), сам по себе не "ловит" пакеты. Вам нужно настроить свои серверы так, чтобы они действительно отправляли пакеты на этот "внутренний интерфейс моста-маршрутизатора"; обычно это делается путем добавления записи в таблицу маршрутизации на сервере:

(on 10.0.10.5):
10.0.11.0/24 dev eth0 via 10.0.10.1

Только те пакеты, которые предназначены для этого «внутреннего интерфейса моста-маршрутизатора», будут перемещены в другую VLAN.

В моем примере, шаг за шагом:

  1. на 10.0.10.5 вы делаетеping 10.0.11.5
  2. сервер спрашивает "у кого 10.0.10.1"
  3. коммутатор говорит: «MAC 10:da:12:34 имеет 10.0.10.1»
  4. сервер отправляет пакет SOURCE 10.0.10.5 DEST 10.0.11.5 MAC_DEST 10:da:12:34
  5. коммутатор, увидев такой MAC_DEST, решает изменить VLAN, назначенную этому пакету
  6. коммутатор также изменяет MAC_DEST на тот, который принадлежит 10.0.11.5

(Точно так же работает любая пересылка пакетов в Ethernet — ничего специфичного для Netgear.)

Вероятно, вам не нужно, чтобы порт был в нескольких VLAN (я на самом деле не проверял).

Также, установитеМаршрутизация -> IP -> Режим маршрутизации"="Да

Поддержка Netgear:Что такое маршрутизация VLAN

решение2

Так сделать нельзя, нужны либо специальные функции VLAN (изоляция портов и т. п.), либо нужно использовать маршрутизатор.

Что здесь происходит, так это то, что когда пакет (ну, Ethernet-кадр) входит в порт, он получает свой идентификатор VLAN из PVID этого порта. Затем он отправляется с других портов, которые также находятся в той же VLAN. (За исключением того, что коммутатор, конечно, перенаправит его только на один конкретный порт, если у него есть порт для MAC-адреса назначения, сохраненный для этой конкретной VLAN. Это может быть не так, поскольку все порты находятся в разных VLAN, поэтому назначения не могут быть найдены в VLAN, из которых отправляются кадры.)

Это означает, что все, что отправляется на коммутатор через порт 10, может появиться на портах 11 и 12, но все, что отправляется через порт 11 или 12, может попасть только на порт 10.


Что делают изоляция портов / защищенные порты / подобные функции, так это то, что они блокируют пересылку кадров в пределах одной VLAN, за исключением некоторых специальных портов. С такой функцией вы бы поместили все порты в одну единственную VLAN и отметили бы порт 10 как специальный, чтобы он мог отправлять/получать трафик на/из 11 и 12. Но эта функция изолировала бы 11 и 12 друг от друга.


Другой вариант — перенести VLAN 11 и VLAN 12 на машину на порту 10 как помеченные VLAN. Затем на этой машине можно создать отдельные IP-интерфейсы для VLAN, позволяя ей взаимодействовать с обеими. Без настройки маршрутизации на машине 11 и 12 не смогут взаимодействовать друг с другом. Конечно, машина все равно должна знать VLAN.

Конечно, если Netgear сам может выступать в качестве маршрутизатора между VLAN, то это тоже работает. Вам просто нужно будет настроить VLAN для каждой машины, организовать маршрутизацию и добавить фильтрацию (брандмауэр) между 11 и 12.

Связанный контент