Чому в таблиці маршрутизації є поле інтерфейсу?


3

Уявіть собі, що у нас є IP-пакет, і нам потрібно з'ясувати, до якого інтерфейсу він повинен посилатися. Є eth0 (наприклад), що відповідає адресі призначення пакета.

Але що, якщо є більш ніж один протокол канального рівня eth0?

Наприклад, Ethernet і PPPoE. Як визначити, який протокол повинен використовувати пакет?


Якщо ви включили в запитання таблицю маршрутизації, ви б, мабуть, відповіли на нього самостійно. route print на вікнах, route на Linux.
Art Shayderov

Відповіді:


4

Я не думаю, що на одному інтерфейсі можна мати більше одного шару посилань.

У разі PPPoE, встановлення з'єднання PPP створює інший інтерфейс, зазвичай називається ppp0. Запис вашої таблиці маршрутизації вкаже на ppp0, ні до eth0. Коли пакет передається ppp0, насправді передається в місцеве програмне забезпечення PPPoE, не передається ніде. Але потім програмне забезпечення PPPoE виробляє a новий пакет, який він передає через eth0.

Це схоже на те, як деякі VPN працюють, до речі. OpenVPN , наприклад, створює новий інтерфейс, який викликається tun0 або tap0, чий "рівень шарів" є демоном OpenVPN. Надішліть пакет одному з них і демон шифрує його і помістить зашифрований текст у новий пакет, зазвичай звичайний UDP, адресований віддаленому серверу OpenVPN. Цей пакет проходить через процес маршрутизації і знаходить шлях до реального інтерфейсу eth0.

(На відміну від прикладу VPN, коли PPPoE надсилає пакет eth0, вона не спирається на таблицю маршрутизації для маршрутизації пакета, оскільки eth0 не налаштовано з IP-адресою, і пакети не можуть бути маршрутизовані до нього. Замість цього, я думаю, що він використовує a raw socket відправити користувальницький кадр Ethernet, адресований до MAC-адреси однорангової мережі PPPoE, що містить корисну навантаження PPP ні IP-навантаження. RFC 2516 має деталі протоколу.)


0

Існує ніколи не більше ніж один протокол рівня даних, що працює через інтерфейс (якщо ви не робите щось дуже дивне). Там, де це схоже, може бути, майже завжди використовується деяка форма тунелювання або інкапсуляції - як правило, існує деякий інший віртуальний інтерфейс "на вершині".

"PPPoE" означає PPP через Ethernet. Фізичний інтерфейс eth0 використовує Ethernet як протокол 2 рівня. PPP - це шар поверх нього, який обробляється демоном PPPoE. Таким чином, пакети "зв'язного шару" PPP в кінцевому підсумку інкапсулюються в кадри Ethernet.

В основному PPPoE працює як тунелювання / VPN програмне забезпечення, як @Wyzard говорить. Тунелі мають віртуальний інтерфейс на одній «стороні», програмне забезпечення de / encapsulation у середині, а потім реальний інтерфейс на іншій стороні.

Таким чином, ви будете мати інтерфейс, такий як ppp0 або будь-який інший, який підключений до демона PPPoE, а потім демон PPPoE інкапсулює те, що надходить на ppp0 і виштовхує з eth0. І навпаки.

Варто пам'ятати, що оскільки MTU Ethernet становить 1500, але для заголовка PPPoE потрібно зробити 8 байт кімнати, тому MTU інтерфейсу PPPoE стає 1492.

Вам не потрібно чіпати eth0 безпосередньо, оскільки все, що ви хочете вийти з eth0 - це пакети PPPoE для вашого постачальника DSL. Це ж загальна концепція для VPN або IPv6-над-IPv4 тунелів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.