Почему устройства в разных VLAN, но в одной подсети, не могут обмениваться данными?


22

У меня есть вопрос по поводу переключения. У меня есть два устройства, подключенные к коммутатору с IP-адресами 192.168.5.20 и 192.168.5.10. Оба устройства имеют одинаковый префикс / 24. Это означает, что они находятся в одной подсети.

Если я разделю эти устройства на разные VLAN (10 и 20) на коммутаторе, он не будет связываться, хотя они находятся в одной подсети. Почему это происходит?


3
Вам нужен маршрутизатор для маршрутизации между разными Vlans. Кроме того, при этом вы не можете иметь одну и ту же IP-подсеть в этих двух Vlan.

5
Привет Джим Пап и добро пожаловать ... Как будто вы подключили два хоста к двум разным коммутаторам, один с надписью «LAN 10», а другой с надписью «LAN 20». Настройка VLAN на коммутаторе разделяет коммутатор на несколько виртуальных коммутаторов.
Джонатанджо

3
Этот вопрос является чем-то вроде тавтологии. Они не могут, потому что не могут, по замыслу. Создание отдельных VLAN логически сегментирует коммутируемую межсетевую сеть. Теперь вам нужно использовать некоторую форму маршрутизации между VLAN для взаимодействия этих устройств.
WakeDemons3

1
@ Известно, что на маршрутизаторе Cisco невозможно иметь адреса из одной подсети на разных интерфейсах, но это не имеет ничего общего с самой VLAN, которая не заботится о IP-адресах (и может использоваться, скажем, с IPX / SPX). И ... Cisco по-прежнему важный игрок, но далеко не единственный.
JFL

1
@ Каким образом могут помочь разные VRF? Тогда они все равно не будут общаться, и, чтобы ответить на ваш вопрос, просто соедините vlans, так просто. Мосты были доступны в маршрутизаторах Cisco задолго до того, как я взял свой CCIE, и это было более 20 лет назад
Мэтт Доухан

Ответы:


39

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

Значение этого физического описания одного коммутатора и двух VLAN:

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

Действует идентично этому логическому описанию той же топологии:

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

Даже если IP-адреса на втором изображении находились в одной подсети, вы заметите, что между двумя виртуальными коммутаторами (т. Е. Виртуальными локальными сетями) нет «связи», и, следовательно, никакой возможный способ связи хостов A / B с хостами C / D.

Чтобы хосты на втором изображении могли обмениваться данными друг с другом, вам понадобится какое-то устройство для облегчения связи от одного «коммутатора» к другому. Устройство, которое существует для этой цели, является Маршрутизатором - следовательно, Маршрутизатор требуется для трафика, чтобы пересечь границу VLAN:

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

И из-за того, как работает маршрутизатор, каждый интерфейс маршрутизатора должен иметь свою собственную уникальную IP-подсеть. Вот почему каждая VLAN традиционно требует своей собственной уникальной IP-подсети - потому что если между этими VLAN должна происходить какая-либо связь, потребуются уникальные подсети.


Изображения выше взяты из моего блога, вы можете прочитать больше о VLAN как концепции здесь и о маршрутизации между VLAN здесь .


2
Ловушка для неосторожных: не пытайтесь на самом деле разделить коммутатор таким образом, ТО подключите VLAN через немаркированные порты - если вы точно не знаете, как настроены реализации STP и CAM в этом коммутаторе.
rackandboneman

1
@ rackandboneman Это хороший совет. Но, для ясности, изображения в моем посте представляют только один физический переключатель. «Образ двух коммутаторов» является логическим представлением одного физического коммутатора с двумя VLAN.
Эдди

2
«каждый интерфейс маршрутизатора должен иметь свою собственную уникальную IP-подсеть». Это может быть верно для некоторых реализаций маршрутизатора, это не всегда так. По крайней мере, в Linux вы можете назначить одну и ту же подсеть нескольким интерфейсам, а затем использовать комбинацию маршрутов proxy arp и / 32 для создания трафика между ними.
Питер Грин

@PeterGreen Исключения всегда существуют. То, что что-то может быть сделано, не означает, что это должно быть сделано, и не делает это актуальным для рассматриваемого вопроса.
Эдди

29

Смысл виртуальной локальной сети состоит в том, чтобы создать отдельные локальные сети уровня 2 на одном физическом устройстве.

Это похоже на строительство бронированной и звуконепроницаемой стены в комнате, чтобы создать 2 комнаты. Люди в каждой половине комнаты больше не могут общаться с людьми в другой половине прежней комнаты.

Таким образом, у вас есть два хоста в двух разных сетях L2, и ничто не позволяет им общаться.

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


Мне трудно думать о любом случае, когда использование одной подсети в двух разных VLAN имеет смысл. Представьте, что вы маршрутизатор, и вы получите пакет, предназначенный для 192.168.5.15. Что это за VLAN?
Монти Хардер

@MontyHarder Зависит. Из какой сети (виртуальной или нет) она берется?
дедупликатор

1
@Deduplicator Я не уверен, почему так важно, какой IP-адрес пакета. Как узнать, что такое VLAN и IP, если вы используете один и тот же диапазон IP для двух или более VLAN? Это просто не имеет смысла.
Монти Хардер

@MontyHarder У меня действительно есть случай: у меня есть соединения с поставщиками, которые используют ту же самую адресацию, и те сделаны на тех же коммутаторах. Поскольку я общаюсь с обоими (через разные маршрутизаторы), а они не общаются друг с другом, это просто прекрасно.
JFL

@MontyHarder На самом деле, очень часто иметь одну и ту же подсеть во многих разных локальных сетях (и, следовательно, в VLAN). Частные адреса RFC1918 повторно используются в миллионах локальных сетей. Вы можете очень хорошо иметь несколько отдельных сетей NAT в одной VLAN. Это, вероятно, происходит до тошноты в условиях хостинга. Но эти сети действительно считаются полностью независимыми.
Jcaron

5

IP-подсети логически группируют хосты - хосты в одной подсети используют соединение уровня 2 для прямого общения друг с другом. Общение с хостами в другой подсети требует использования шлюза / маршрутизатора.

VLAN физически группируют хосты - хосты в одном VLAN / широковещательном домене / сегменте L2 могут напрямую общаться друг с другом. Хосты в разных VLAN не могут. (Не бейте меня - физически группа не совсем правильная, но это отмечает мою точку зрения.)

Таким образом, когда два хоста находятся в одной и той же IP-подсети, но в разных VLAN / широковещательных доменах / сетях L2, они не могут обмениваться данными: исходный хост предполагает назначение в пределах своей локальной сети L2 и, следовательно, пытается ARP адрес назначения (или ПНР разрешить для IPv6).

ARP работает, отправляя запрос в виде широковещания в локальную сеть L2, и хост с запрошенным IP-адресом отвечает своим MAC-адресом. Поскольку целевой хост находится за пределами локальной сети, он никогда не слышит ARP-запрос, и ARP дает сбой.

Даже если источник каким-то образом узнает MAC-адрес получателя и создаст кадр, адресованный этому MAC, он никогда не достигнет получателя, поскольку он все еще находится за пределами сети L2. MAC вне локальной сети L2 бессмысленны и бесполезны.


3

Дополняет существующие ответы, которые охватывают вопрос с точки зрения дизайна и теории ...

Вместо того, чтобы спрашивать « почему они не общаются? », Давайте спросим « что происходит, когда они пытаются общаться?»

Во-первых, что значит настроить VLAN на коммутаторе? В нашем примере есть несколько сокетов, настроенных как VLAN 10, и некоторые настроенные VLAN 20. Определение VLAN состоит в том, что подключены только сокеты в одной VLAN. Это означает, что кадр, полученный на порт в данной VLAN, отправляется только на порты той же VLAN.

  10  10  20  20  10  20       VLAN of port
   1   2   3   4   5   6       Port number
===+===+===+===+===+===+===
   |   |   |   |   |   |
   A   B   C   D   E   F       Hosts

На этой схеме у нас шесть хостов, порты 1, 2, 5 находятся в VLAN 10, порты 3, 4, 6 находятся в VLAN 20.

Предположим, что хост A статически настроен как 192.168.5.10/24, а F статически настроен как 192.168.5.20/24, из вопроса. Предположим, что от B до E имеют другие статические адреса конфигурации (не имеет значения, какие они есть).

Если A пингует 192.168.5.20, он определяет, что он находится в том же / 24, поэтому первое, что происходит, - это запрос ARP: WHO HAS 192.168.5.20, отправленный как эфирное вещание.

Коммутатор получает широковещательную рассылку через порт 1. Это VLAN 10, поэтому он отправляет широковещательную рассылку через порты 2 и 5, остальные порты в VLAN 10. Хосты B и E получают запрос ARP и игнорируют его, поскольку это не их адрес.

Вот и все.

Там не будет никакого ответа ARP; следующее, что произойдет, - это тайм-аут на А, за которым последуют повторные ARP-запросы, пока приложение не сдастся.

Хост, подключенный к чему-либо кроме порта VLAN 10, вообще ничего не увидит, независимо от его IP-адреса. Это, очевидно, включает в себя F, который является 192.168.5.20.


1

Я ожидаю, что у вас будет хорошее понимание маскировки подсети. Когда у вас есть отдельные VLAN, вы должны иметь уникальный диапазон IP-адресов с подсетями. Это не обязательно.

VLAN - это отдельная локальная сеть, но это виртуальная сеть. Кроме того, виртуальная локальная сеть для разделения сетей в одном коммутаторе. В вашем коммутаторе будет создан отдельный широковещательный домен. Но когда вы создаете виртуальные локальные сети с тем же ip, это бесполезно.

В дополнение к этому вам нужно настроить Intervlan Routing на вашем коммутаторе.


2
Нет, это не невозможно иметь несколько VLAN с одной подсетью. Это необычно и несколько обескуражено, но вполне возможно.
JFL

@JFL Правда, это возможно, используя либо VRF, либо какой-либо другой вид разделителя, но я еще не видел ни одного варианта использования для этого. Пожалуйста, просветите меня.

@JFL такая же проблема и для меня. Я только сейчас попробовал в трассировке пакетов cisco, с межлановой маршрутизацией. Я не знаю, есть ли проблема с трассировщиком пакетов Cisco. Это не работа. Я согласен с Cown. это возможно в VRF.
инфра

1
@ Cown Я не говорил, что это хорошая идея, и не было возможности заставить их общаться друг с другом (но все же это возможно с NAT). Но у меня есть несколько вариантов использования. Например, у меня есть соединение с провайдерами, которые проходят через некоторые перекрывающиеся сети RFC1918. Они подключены к одним и тем же коммутаторам в разных VLAN и не взаимодействуют друг с другом.
JFL

@JFL Извините, чувак, я просто не вижу, как это соотносится с первоначальным вопросом. Да, возможно использование перекрывающихся IP-адресов для взаимосвязей или NAT, но я просто не думаю, что это отражает реальный сценарий.

1

Подумайте, что происходит, когда у вас дома есть локальная сеть и компьютер с IP 192.168.2.1. У вашего друга в будущем также есть локальная сеть в его доме и компьютер с IP 192.168.2.2. Они находятся в одной подсети, так почему они не могут общаться друг с другом?

В таком примере причина отличается от того, о чем вы спрашиваете.

Но VLAN достигает того же результата - она ​​сегментирует сеть на втором уровне.

Я хочу сказать, что мы можем легко увидеть, что факт «IP-адреса находятся в одной подсети» недостаточен для определения того, могут ли пакеты маршрутизироваться между ними. Базовая топология также играет свою роль.

Принимая это до крайности, на самом нижнем уровне вам понадобится некоторый физический материал (ну, ладно, или воздух: D) для фактической транспортировки данных. Ваши компьютеры могут находиться в одном доме в одной подсети, но не иметь физического подключения (или иметь беспроводную связь), и тогда вы не ожидаете, что пакеты будут маршрутизироваться.


0

Смысл VLAN состоит в том, чтобы иметь сегментацию сети. Вы также можете достичь того же (некоторые предостережения), используя подсети. Так как ваша подсеть разделена на 2 разные VLAN, ваши устройства не могут общаться в сети L2. Вы можете настроить интерфейс IRB на коммутаторе, чтобы разрешить связь между VLAN. Кроме того, вы можете маршрутизировать трафик через межсетевой экран и разрешить выборочную связь между VLAN. В идеале, вы должны спроектировать свою сеть так, чтобы она имела разные подсети для каждой из VLAN, а затем межсетевой экран передавал трафик между VLAN. Надеюсь это поможет.


1
Nonononono не использует IRB в этой ситуации ... проблема в том, что коммутатор никогда не должен был быть настроен с двумя виртуальными локальными сетями в одной подсети. Лучший ответ - все хосты в одной подсети в одном и том же vlan.
Майк Пеннингтон

0

Когда соединение Ethernet переносит более одной VLAN, все, кроме одной VLAN, должны быть помечены . Тег VLAN, совместимый со стандартом IEEE 802.1Q, размещается в кадре Ethernet в том месте, где обычно находится EtherType кадра. Первая часть тега VLAN является идентификатором протокола тега , который является постоянным значением 0x8100. В результате, устройство, которое не знает о тегах IEEE 802.1Q или настроено так, чтобы не ожидать их, увидит помеченные кадры и подумает: «Это не IPv4, ARP или IPv6; это Ethertype 0x8100, который является чем-то совершенно другим, и я не Я не думаю, что понимаю это вообще. Лучше просто игнорировать это. "

Коммутатор, поддерживающий VLAN, может фильтровать пакеты, поступающие на каждый порт по их тегам VLAN, и может при желании удалить тег VLAN из одной выбранной VLAN в исходящем трафике с этого порта (и, наоборот, добавить тег VLAN к входящему трафику на этом порту), так что любой трафик выбранной VLAN отображается как обычный трафик Ethernet до 802.1Q для устройства, подключенного к этому конкретному порту. Такая выбранная VLAN известна как собственная VLAN для этого порта.

Стандарт 802.1Q позволяет порту Ethernet поддерживать единственную собственную VLAN и любое количество помеченных VLAN одновременно, но я понимаю, что порт пропускает как помеченные, так и непомеченные кадры Ethernet одновременно, это несколько неблагоприятная конфигурация: вы ' Нужно помнить, что одна из VLAN в порте / NIC отличается от всех других и должна быть настроена по-другому. Склонен к ошибкам.

В терминологии Cisco порт коммутатора может быть настроен либо как порт доступа, либо как транковый порт . Порт доступа будет обеспечивать доступ только к одной VLAN и автоматически удаляет теги VLAN из исходящего трафика и добавляется к входящему трафику для этого порта. Магистральный порт, с другой стороны, будет передавать трафик через настраиваемый набор VLAN, но весь трафик будет помечен VLAN.

Итак, в вашем случае два устройства в двух разных VLAN на одном коммутаторе, оба используют адреса в одной IP-подсети. Что произойдет, будет зависеть от того, как настроены порты коммутатора (и сетевые интерфейсы на устройствах) для VLAN.

1.) Переключите порты как порты доступа, устройства, не поддерживающие VLAN: порт коммутатора будет отфильтровывать трафик «противоположной» VLAN, и поэтому устройства никогда не будут видеть трафик друг друга. Возникает вопрос, имеет ли смысл думать о них как о «находящихся в одном сегменте сети» вообще.

2.) Переключите порты в качестве магистральных портов, настроенных для прохождения обеих VLAN, устройств, не поддерживающих VLAN: каждое устройство будет думать: «Почему это другое устройство продолжает посылать мне эти странные вещи Ethertype 0x8100? Я не говорю об этом».

3.) Переключите порты как магистральные порты, настроенные для прохождения только одной VLAN каждый, устройства с учетом VLAN: вам также необходимо указать номера VLAN в конфигурации сети устройств, но конечный результат по существу такой же, как в случае # 1: устройства не будут видеть трафик друг друга

4.) Переключите порты в качестве магистральных портов, настроенных для прохождения обеих VLAN, устройств, поддерживающих VLAN, но настроенных на разные VLAN: теперь это уровень поддержки VLAN в самих устройствах, выполняющих фильтрацию, но практический результат такой же, как в случаях # 1 и № 3: трафик «противоположного» устройства никогда не достигнет уровня протокола IP в стеке сетевых протоколов устройства.

5.) Переключите порты как магистральные порты, настроенные для прохождения обеих VLAN, устройство настроено с поддержкой VLAN, обе VLAN настроены в устройстве. Это сверх того, что вы просили. Теперь устройство будет эффективно присутствовать в обеих VLAN.

Поскольку обе VLAN претендуют на то, чтобы различаться на уровне Ethernet, но используют одну и ту же IP-подсеть, то, что произойдет, будет зависеть от того, как реализована IP-маршрутизация устройств. Главной важной деталью будет то, предназначен ли стек IP для использования модели сильного хоста или модели слабого хоста , и как именно концепция VLAN была интегрирована в систему.

Например, Linux представит любые сконфигурированные тегированные VLAN в качестве дополнительных виртуальных сетевых адаптеров, которые отражают состояние канала базовой физической сетевой карты, но в остальном действуют как независимые, насколько это технически возможно. Таким образом, все будет так же, как если бы у вас было два сетевых адаптера, подключенных к двум отдельным сегментам физической сети со 100% перекрывающимися IP-подсетями: система могла бы получать входящий трафик очень хорошо, но будет предполагать, что любой сетевой адаптер, подключенный к целевой IP-подсети, подходит для общения с любой другой хост в этой IP-подсети и будет использовать какой-либо (виртуальный, специфичный для VLAN) сетевой адаптер, который будет первым в таблице маршрутизации ... и поэтому конфигурация может работать или не работать в зависимости от порядка, в котором различные части Конфигурация NIC и VLAN была инициализирована. Вам нужно использовать Linux

Использование одной и той же IP-подсети в двух отдельных сегментах является проблемой уровня 3, независимо от того, является ли разделение сегментов на уровне 2 физическим (= фактические отдельные сетевые адаптеры) или логическим (= созданным с помощью VLAN). Для проблемы уровня 3 потребуется решение уровня 3: использование маршрутизатора или какого-либо другого блока для симметричного преобразования NAT в одной из подсетей для устранения перекрытия IP-подсетей было бы гораздо более элегантным, чем попытка справиться с этим на отдельных устройствах.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.