Интерфейсный уровень: сетевые мосты и VLAN
- Повторение: инкапсуляция и декапсуляция трафика между уровнями
В частности, Eth → IP и IP -> Eth
- Несколько сред передачи данных на одном устройстве
Eth0 → IP / маршрутизация / IP -> Eth1 — маршрутизатор, это потом
- Eth0 → Eth1 — мост / хаб
Что нужно для хаба?
- Постоянный promisc режим (для пересылки всех всем)
- Постоянная ретрансляция всего повсюду (но зачем?)
Что нужно для моста:
- Постоянный promisc режим
- Построение таблиц вида «eth → MAC» всех активных абонентов
- Динамическая актуализация таблиц
- Полная ретрансляция широковещательных фреймов
- Полная ретрансляция фреймов с неизвестным получателем (возможность для атаки!)
- Целевая ретрансляция фреймов по таблице абонентов
Дополнительные свойства моста:
- antispoof
- firewall уровня 2 — правила допуска / недопуска абонентов по MAC
не особо работает, потому что у большинства устройств можно сменить MAC
Создание моста
Три хоста:
- Базовый
- Клон
- Клон-мост
Ethernet-подключение:
- Базовый
- сеть A
- Клон
- Сеть B
- Клон-мост
- сеть A
- Сеть B
На клон-мосту:
ip link add dev имя type bridge
ip link set имя up (и всех интерфейсов для бриджа)
ip link set ethN master имя (для всех интерфейсов бриджа)
ip l их покажет, и bridge link тоже
bridge monitor покажет обновление таблиц, а bridge fdb — сами таблицы
На самом деле всё! Настроим сеть с двух сторон и запингаем!.
Добавим ещё клон:
- Клон2
- Сеть B
Теперь за интерфейсом eth2 два хоста.
(если успеем: ebtables и смена MAC для обхода — не заработало!)
VLAN
Два термина:
- «Инженерный» — группа интерфейсов, изолированная от других групп интерфейсов
«Теоретический» — протокол IEEE_802.1Q (автора статьи в русской Википедии слегка пришибло инженерным подходом)
Про IEEE_802.1Q:
На месте EtherType — 0x8100 + ещё 2 октета (включая VID); а уже потом EtherType
- VID 1 часто используется для управления
- Аппаратно поддерживается почти всеми карточками
- А ещё бывает два тега подряд и всякое
Путаница!
- Если видите в тексте «тегированные» и «нетегированные» VLAN-ы — это инженерный подход
- В действительности это обычные фреймы и 802.1Q-фреймы
- Например, если два интерфейса объединить в один бридж, а два других — в другой, получится как бы два изолированных «нетегированных VLAN-а»
- Если успеем, это можно смоделировать
- Если успеем, это можно смоделировать
- Мы будем явно различать 802.1Q-фреймы как «фреймы из VLAN такой-то» и «просто фреймы»
Ферма
Шесть хостов:
- Базовый
- Сеть A
- Клон
- Сеть B
- Мост1
- Сеть A
- Сеть B
- Сеть С
- Мост2
- Сеть D
- Сеть E
- Сеть С
- Клон2
- Сеть D
- Клон3
- Сеть E
Идея в том, чтобы
на мосту-1 завернуть фреймы «сети A» в один vlan, а «сети B» — в другой и запустить их все вперемежку в «сеть C»
- на мосту-2 выковырять их из «сети C» и разложить в «сеть D» и «сети E» соответственно
- Таким образом, Базовый окажется в одной сети с Клоном2, а Клон — с Клоном3
На обоих мостах — одинаковая конфигурация:
- Вынимаем из сети C два VLAN-а (допустим, 5 и 7):
ip link add link eth3 name vlan№ type vlan id №
Создаём два бриджа, добавляем туда по одному VLAN-у и eth1 либо eth2
ip link add dev br№ type bridge
ip link set vlan№ master br№
ip link set eth№№ master br№
Делаем всем интерфейсам set up
- Например, так:
# for I in `ls /sys/class/net`; do ip link set $I up; done
- Например, так:
После настройки IP на 4 клонах образуется 2 VLAN-а, которые не смешиваются
Д/З
Новое в образе:
sethostname имя для смены hostname
Задание 3
Поскольку последний пример из лекции «толстоват» (6 вируталок), в Д/З предлагается сделать не очень актуальный, но зато более простой вариант:
- Площадка:
- Базовая машина:
Интерфейс eth1 подключён к сети-1
- Клон:
Интерфейс eth1 подключён к сети-2
- Мост:
Интерфейс eth1 подключён к сети-1
Интерфейс eth2 подключён к сети-2
- Базовая машина:
- Отчёт:
Мост (report 3 bridge)
Задать линк, достающий из сети-1 фреймы 802.1Q с VID 7
Задать линк, достающий из сети-2 фреймы 802.1Q с VID 9
- Объединить оба линка бриджем
- Поднять все интерфейсы
Базовая машина (report 3 base)
Задать линк, достающий из сети-1 фреймы 802.1Q с VID 7
Настроить ip-адрес этого интерфейс-линка (да, ip должен быть именно на vlan7@eth1)
- Поднять все интерфейсы
Запустить tcpdump -c 8 на этом интерфейс-линке
Клон (report 3 clone)
Задать линк, достающий из сети-2 фреймы 802.1Q с VID 9
Настроить ip-адрес этого интерфейс-линка (да, ip должен быть именно на vlan9@eth1)
- Поднять все интерфейсы
Запустить ping -c 8 адрес_базовой_машины (должен проходить)
Три отчёта (report.03.base, report.03.bridge и report.03.clone) именно с такими названиями переслать одним письмом в качестве приложений на uneexlectures@cs.msu.ru