Различия между версиями 12 и 13
Версия 12 от 2021-05-03 10:30:33
Размер: 11853
Редактор: FrBrGeorge
Комментарий:
Версия 13 от 2021-05-15 19:20:22
Размер: 12037
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 23: Строка 23:
Отчёт — это набор из 5 сценариев, по одному на узел. Отчёт — это
 1.
набор из 5 сценариев, по одному на узел.
Строка 27: Строка 28:

Сценарии присылать на почту (возможно, несколько), будет объявлено в группе.
 1. Картинка исходной топологии с добавлением IP-адресов интерфейсов (у которых они есть)
Сценарии и картинку присылать на почту (возможно, несколько), будет объявлено в группе.

TCP/IP в Linux (2 лекции и задание)

Неожиданно прочтённые мной лекции по настройке L2 и L3 маршрутизации в Linux(две пары)

* Видео

Задание

  1. Импортировать образ виртуальной машины для VirtualBox,

  2. Создать нужное количество клонов
    • если на хост-системе недостаточно памяти, можно ограничить объём памяти одной виртуалки 512 Мб
    • для экономии места и времени делать связную копию

    • в клоне обязательно перегенерировать все mac-адреса

    • не забудьте один клон оставить чистым
  3. Настроить топологию сети как предписано в варианте задания
    • Для каждого узла все настройки «с нуля» должны содержаться в одном шелл-сценарии (etcnet, etckeeper и прочая специфика отменяется)

    • «Холодный старт» вируталки должен выглядеть так:
      • запустить виртуалку
      • войти в суперпользователя
      • запустить сценарий

Отчёт по заданию

Отчёт — это

  1. набор из 5 сценариев, по одному на узел.
    • Каждый сценарий — это текстовый файл на shell
    • Имя сценария в отчёте совпадает с именем узла в топологии, например S0.sh для узла S0, H2.sh для уздла H и т. п.

    • Формирование настроек DNS тоже надо включать в сценарий (например, в виде echo "что-то-там" > /etc/resolv.conf)

  2. Картинка исходной топологии с добавлением IP-адресов интерфейсов (у которых они есть)

Сценарии и картинку присылать на почту (возможно, несколько), будет объявлено в группе.

Варианты

графический вариант

Текстовая версия:

  • 1: B2→P0 H4→S1 H7→B2 P0→S1
  • 2: H2→S0 H3→S0 S0→V1 V1→R5
  • 3: B2→P0 H5→B2 P0→B1 P0→R3
  • 4: H2→P0 H5→C4 P0→V1 V1→C4
  • 5: H4→S1 H7→V2 P0→S1 V2→P0
  • 6: H5→V2 P0→B1 P0→R3 V2→P0
  • 7: H5→V2 H6→V3 V2→S0 V3→S0
  • 8: B2→P0 H5→B2 P0→B1 P0→B3
  • 9: H3→S0 H6→V2 S0→B1 V2→S0
  • 10: B2→S0 H3→S0 H6→B2 S0→B1
  • 11: B2→P0 H6→V5 P0→B1 V5→B2
  • 12: H5→V2 P0→V1 V1→R4 V2→P0
  • 13: C2→P0 H5→C2 H6→C2 P0→B1
  • 14: H3→S0 H6→R2 R2→S0 S0→B1

Если интересно — Генератор заданий (понадобится netrowkx и matplotlib)

Описание

H*
Обычный клиент, имеет один статически настроенный интерфейс
R*
Маршрутизатор, имеет два статически настроенных интерфейса, принадлежащих различным локальным сетям
C*

Маршрутизатор, имеет три статически настроенных интерфейса, принадлежащих различным локальным сетям

P*

Маршрутизатор, имеет три статически настроенных интерфейса, принадлежащих различным локальным сетям. Два из этих интерфейсов — «внешние», правила маршрутизации настроены так, что все соединения на 443 и 80 порт уходят через один интерфейс, а все остальные — на другой

S*

Маршрутизатор, имеет четыре статически настроенных интерфейса, принадлежащих различным локальным сетям. Два из этих интерфейсов — «внешние», два — «внутренние». Правила маршрутизации настроены так, что все пакеты из первой внутренней сети уходят в первую внешнюю, а все пакеты из второй внутренней — вор вторую внешнюю.

B*
Сетевой мост, объединяющий две физические сети в один сегмент.
V*
Сетевой мост, объединяющий VLAN-пакеты с определённым ID из двух физических сетей в один сегмент. ID выбирается произвольный.
I*
Подключение к внешней сети

Требования

  • На интерфейсах, подключённых к внешней сети, должен быть настроен NAT. Если в задании к внешней сети подключён мост, то NAT настраивается на узле, подключённом к этому мосту.
  • Для простоты отладки каждое подключение к I* должно оформляться как отдельная сеть типа NAT в терминах VirtualBox (иначе возможны проблемы с маршрутизацией)

  • Со всех узлов, не являющихся мостами, должен работать, как минимум
    • ping ya.ru

    • echo -e "GET / HTTP/1.1\n" | netcat goo.gl 80 (много букв)

Полезные советы

  • Все системные действия делайте от root, в которого входите командой su - (не просто su, и не надо никаких sudo). Все информационные действия делайте в соседнем окне из-под обычного пользователя.

  • В задании вся настройка интерфейсов — статическая.
    • Если на узле есть интерфейс типа NAT, вам нужно знать:
      • Какая сеть лежит с той стороны
      • Каковы настройки DNS (в принципе, сойдёт и 8.8.8.8 или 1.1.1.1)

      • Адрес маршрутизатора по умолчанию
    • Для этого можно запустить dhcpcd имя_интерфейса и посмотреть

      • ip a

      • ip r

      • cat /etc/resolv/conf

      • (не забудьте только прибить dhcpcd)

  • От волшебного переименования интерфейсов пришлось отказаться: в некоторых интересующих нас случаях оно происходит позже, чем применение соответствующих настроек, и всё ломается :(

    • Нынешняя схема именования — т. н. predictable network device names. Читать это не обязательно, просто в имя интерфейса зашивается номер шины и номер слота в шине, например, enp0s3: вместо eth0:

  • При клонировании не забываем
    • делать связную копию (а не полную, чтобы не забить диск)
    • включать крыжик «перегенерировать все MAC-адреса»
  • При добавлении нового сетевого интерфейса в настройках VirtualBox не забываем включить разрешение promiscuous mode

  • На что смотреть при настройке:
    • включена ли net.ipv4.ip_forward в ядре (для маршрутизаторов), есть на этом вики
    • настроен ли iptables (для NAT), есть на этом вики
    • настроены ли DNS (/etc/resolv.conf) и маршрутизация

    • был ли поднят интерфейс прежде, чем что-то с ним делать
    • работает ли сценарий после перезагрузки

Документация

LecturesCMC/LinuxNetwork2020 (последним исправлял пользователь FrBrGeorge 2021-05-15 19:20:22)