Чи є якась конкретна причина, чому комутатори Ethernet не змінюють MAC-адресу пакету?
Це для ідентифікації кінцевого хоста за допомогою MAC-адреси чи чогось іншого?
Чи є якась конкретна причина, чому комутатори Ethernet не змінюють MAC-адресу пакету?
Це для ідентифікації кінцевого хоста за допомогою MAC-адреси чи чогось іншого?
Відповіді:
Якщо комутатор змінює MAC-адреси, це повністю порушить роботу мережі.
MAC-адреса - це унікальний ідентифікатор, який використовується хостами в локальній мережі.
Якби комутатор змінив MAC призначення, кадр не буде доставлений до відповідного хоста. У тих випадках, коли це, наприклад, якщо кадр затоплений, хост призначення відкине його, оскільки він більше не буде призначений для хоста.
Якби комутатор міняв MAC-адресу джерела, хост призначення використовував би цю MAC-адресу для будь-яких відповідей (включаючи оновлення будь-яких записів ARP з поганими даними). Це призведе до тієї ж ситуації, яку я вже описав, просто для всього зворотного трафіку.
Це може додатково створити проблеми з 802.1X та іншими механізмами, які використовують MAC-адресу для ідентифікації / класифікації пристрою.
Чи можна було б розробити механізми для цього? Я впевнений, що могли. Але для цього немає ніяких підстав, і це лише ускладнить мережу та додасть непотрібну обробку. Ми не близькі до того, щоб вичерпати доступний пул MAC-адрес, тому немає необхідності в чомусь подібному MAT (не знаю, чи існує концепція перекладу MAC-адрес де-небудь, тож, можливо, я просто придумав термін?).
Переписування адрес дейтаграм відбувається на рівні 3, наприклад, коли шлюзи (маршрутизатор або брандмауер), на яких працює NAT, переписують IP-адреси хостів у внутрішній мережі, щоб усі вони з’являлися з однієї (або декількох) зовнішніх IP-адрес на самому шлюзі.
Причина того, що щось подібне не відбувається на рівні 2-го рівня (де ми використовуємо MAC-адреси для розрізнення хостів, а комутатори виконують рух дейтаграм, тобто фреймів), як сказано в коментарях вище, в цьому насправді немає необхідності.
У третьому шарі з NAT, NAT вирішує ряд завдань:
Отже, якщо ми будемо дотримуватися прикладу NAT, насправді немає необхідності в другому шарі NAT.
Сподіваємося, що це прожене трохи, чому комутатори не переписують MAC-адреси. Єдиний випадок 3-го шару, який я придумав у верхній частині голови - це NAT, інші, безумовно, можуть навести приклад інших випадків 3 рівня, коли IP-переписування гарантовано (і чому ці технології насправді не мають сенсу на рівні 2-го рівня) .
Перезапис MAC-адреси додав би значної складності (комутатор повинен знати про протоколи вищого рівня, такі як arp, щоб він міг переписати перерозподіл адреси), ускладнював би усунення несправностей, заважав протоколам типу STP працювати і, як правило, був би PITA. Він також зазвичай не потрібен.
Що не означає, що це неможливо. ebtables (аналог другого рівня iptables) має деякі варіанти перекладу MAC-адрес. Це може бути корисно, якщо у вас є комутатори, які не використовують таблиці MAC per-vlan, і ви хочете виконати деяку фільтрацію рівня 2.