Почему коммутаторы не переписывают mac-адреса?

10

Есть ли какая-то конкретная причина, по которой коммутаторы Ethernet не меняют MAC-адрес пакета?

Это для идентификации конечного хоста по MAC-адресу или что-то еще?

user2720323
источник
5
Предположим, вас зовут Кумар. Хотели бы вы, чтобы люди стали называть вас "Джессика"?
Майк Пеннингтон
1
коммутаторы не переписывают пакеты (кадры); они просто перемещают их от интерфейса к интерфейсу. (в случае широковещательной / многоадресной передачи это включает в себя копирование на несколько портов.)
Рикки Бим
4
Можете ли вы вспомнить вескую причину, почему коммутатор должен изменить MAC-адрес?
Теун Винк
Вам помог какой-нибудь ответ? если это так, вы должны принять ответ, чтобы вопрос не появлялся вечно, ища ответ. Кроме того, вы можете предоставить и принять свой собственный ответ.
Рон Мопин

Ответы:

10

Если бы коммутатор изменил MAC-адреса, это полностью сломало бы сеть.

MAC-адрес является уникальным идентификатором, который используется хостами в локальной сети.

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

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

Это может дополнительно создать проблемы с такими вещами, как 802.1X и другими механизмами, которые используют MAC-адрес для идентификации / классификации устройства.

Могут ли быть разработаны механизмы для этого? Я уверен, что они могли. Но в данный момент нет причин делать это, и это только усложнит работу сети и добавит ненужную обработку. Мы не близки к исчерпанию доступного пула MAC-адресов, поэтому нет необходимости для чего-то вроде MAT (не знаю, существует ли вообще концепция трансляции MAC-адресов, так что, может быть, я просто придумал термин?).

YLearn
источник
4

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

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

В случае третьего уровня с NAT, NAT решает ряд проблем:

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

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

  • MAC-адреса не используются глобально для адресации дейтаграмм в Интернете, они используются для отправки фреймов нужным хостам в локальной подсети. Поскольку локальные подсети относительно малы, а количество возможных MAC-адресов очень велико, на уровне 2 не удается «исчерпать» доступные MAC-адреса. (Возможность вручную перенастроить MAC-адреса сетевых карт на произвольное значение не меняет это)
  • И для дискуссионной пользы безопасности переписывания дейтаграммных адресов при переадресации: Как MAC-адрес используется в локальной подсети, один обычно, в относительном выражении, гораздо лучше контролировать с точки зрения безопасности над этой подсетью (как физически, так как большинство из задействованных устройств) по сравнению с аналогом в случае уровня 3, который представляет собой весь интернет (который мы, как подключенные пользователи и инженеры сети, на практике не контролируем).

Надеюсь, что это пролило некоторый свет на то, почему коммутаторы не перезаписывают MAC-адреса. Единственный случай 3-го уровня, который я придумал с самого начала, был NAT, другие, безусловно, могут служить примером других случаев 3-го уровня, когда перезапись IP оправдана (и почему эти технологии не имеют смысла на уровне 2-го уровня) ,

IllvilJa
источник
3
Точно, но у меня есть крошечная болтовня с твоим ответом. Вы упомянули, что «на самом деле нет необходимости в аналоге NAT второго уровня» ... хотя я не видел MAC NAT, я видел туннелирование на уровне Mac. В некоторых случаях имеет смысл переключиться на «туннелирование» mac-адресов внутри других mac-адресов. Ситуация, которая сразу же приходит на ум, - это мостовое соединение на основе провайдера IEEE 802.1ah (PBB) . Как правило, это используется для масштабирования доступных сетей vlans / сокращения обучения mac в кольцах провайдеров услуг
Майк Пеннингтон
1
@IllvilJa: Хорошо сказано ..! Вы разрешили сомнение, которое смущает меня последние несколько недель. Несколько недель назад я думал следующее: «маршрутизатор, когда он имеет дело с глобальной сетью, склонен ставить свой MAC-адрес вместо MAC-адреса отправителя (в каждом пакете) и передает пакеты получателю. Но в случае LAN, маршрутизатор не помещает свой MAC-адрес вместо MAC-адреса отправителя (в каждом пакете), а просто передает пакеты между отправителем и получателем. «Но после вашего объяснения я достаточно ясно различаю« маршрутизатор »&» переключатель'. Еще раз спасибо..!
Махаран
0

Перезапись MAC-адреса добавила бы значительную сложность (коммутатор должен был бы знать о протоколах более высокого уровня, таких как arp, чтобы он мог перезаписать преобразование адресов), усложнил бы поиск и устранение неисправностей, помешал бы работе таких протоколов, как STP, и обычно был бы PITA. Это также обычно не требуется.

Что не означает, что это невозможно. В ebtables (аналог уровня 2 для iptables) есть несколько вариантов трансляции MAC-адресов. Это может быть полезно, если у вас есть коммутаторы, которые не используют таблицы MAC для vlan, и вы хотите выполнить некоторую фильтрацию 2 уровня.

http://ebtables.netfilter.org/examples/example1.html

Питер Грин
источник