Различия между версиями 5 и 6
Версия 5 от 2021-05-01 15:35:02
Размер: 5726
Редактор: FrBrGeorge
Комментарий:
Версия 6 от 2021-05-02 13:10:25
Размер: 10866
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 9: Строка 9:
Импортировать образ виртуальной машины для !VirtualBox, клонировать его, и настроить топологию сети как предписано в варианте задания.  1. Импортировать образ виртуальной машины для !VirtualBox,
 1. Создать нужное количество клонов
  * если на хост-системе недостаточно памяти, можно ограничить объём памяти одной виртуалки 512 Мб
  * для экономии места и времени делать ''связную'' копию
  * в клоне ''обязательно'' перегенерировать все mac-адреса
  * не забудьте один клон оставить чистым
 1. Настроить топологию сети как предписано в варианте задания
  * Для каждого узла все настройки «с нуля» должны содержаться в одном шелл-сценарии (`etcnet`, `etckeeper` и прочая специфика '''отменяется''')
  * «Холодный старт» вируталки должен выглядеть так:
   * запустить виртуалку
   * войти в суперпользователя
   * запустить сценарий
Строка 11: Строка 22:
В задании необходимо написать для каждого узла shell-сценарий, который настраивает сет в соответствии с топологией.
'''TODO'''
==== Отчёт по заданию ====
Отчёт — это набор сценариев, по одному на узел.
  * Для отсылки архива машины-моста надо временно настроить сеть на ней
==== Что будет в задании ====
=== Отчёт по заданию ===
Отчёт — это набор из 5 сценариев, по одному на узел.
  * Каждый сценарий — это текстовый файл на shell
  * Имя сценария в отчёте совпадает с именем узла в топологии, например `S0.sh` для узла `S0`, `H2.sh` для уздла `H` и т. п.

Сценарии присылать на почту (возможно, несколько), будет объявлено в группе.
=== Варианты ===
{{attachment:variants.png}}}

Текстовая версия:
 * 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

==== Описание =====
 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`)
 * От волшебного переименования интерфейсов пришлось отказаться: в некоторых интересующих нас случаях оно происходит ''позже'', чем применение соответствующих настроек, и всё ломается :(
  * Нынешняя схема именования — т. н. [[https://major.io/2015/08/21/understanding-systemds-predictable-network-device-names/|predictable network device names]]. Читать это не обязательно, просто в имя интерфейса зашивается номер шины и номер слота в шине, например, `enp0s3:` вместо `eth0:`
 * При клонировании не забываем
  * делать связную копию (а не полную, чтобы не забить диск)
  * включать крыжик «перегенерировать все MAC-адреса»
 * При добавлении нового сетевого интерфейса в настройках !VirtualBox не забываем включить разрешение promiscuous mode

=== Что будет в задании ===
Строка 34: Строка 100:
==== Полезные советы ====
 * Все системные действия делайте от root, в которого входите командой `su -` (не просто `su`, и не надо никаких `sudo`). Все информационные действия делайте в соседнем окне из-под обычного пользователя.
 * Для проверки работоспособности конфигурации сети используйте `systemctl restart network`
 * От волшебного переименования интерфейсов пришлось отказаться: в некоторых интересующих нас случаях оно происходит ''позже'', чем применение соответствующих настроек, и всё ломается :(
  * Нынешняя схема именования — т. н. [[https://major.io/2015/08/21/understanding-systemds-predictable-network-device-names/|predictable network device names]]. Читать это не обязательно, просто в имя интерфейса зашивается номер шины и номер слота в шине, например, `enp0s3:` вместо `eth0:`
 * При клонировании не забываем
  * делать связную копию (а не полную, чтобы не забить диск)
  * включать крыжик «перегенерировать все MAC-адреса»
 * При добавлении нового сетевого интерфейса в настройках !VirtualBox не забываем включить разрешение promiscuous mode

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

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

* Видео

Задание

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

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

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

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

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

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

Отчёт — это набор из 5 сценариев, по одному на узел.

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

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

Варианты

variants.png}

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

  • 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

==== Описание =====

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

Что будет в задании

В задании будет набор из четырёх-пяти виртуалок, объединённых в несколько сетей с выходом в интернет + описание требуемой топологии сети и ролей узлов в ней.

Возможная тематика:

  1. Статическая настройка IP (файлы /etc/net/ifaces/имя_интерфейса/ipv4address и /etc/net/ifaces/имя_интерфейса/options)

  2. Динамическое получение настроек IP (/etc/net/ifaces/имя_интерфейса/options)

  3. Настройка сервера, обеспечивающего выход в интернет
    • Скорее всего, внешний интерфейс настроен динамически
      • Файл /etc/resolv.conf, который при этом сгенерится, надо будет разложить на все машины, где нужно, чтобы DNS работал

    • NAT (одно правило типа MASQUERADE), есть на этом вики)
    • работа роутером (включение sys.net.ipv4.ip_forward в 1, настройка /etc/net/sysctl.conf)

    • если есть какие-то внутренние подсети, добавление маршрута до них
  4. Настройка маршрутизатора
    • работа роутером
    • возможно, дополнительные маршруты (/etc/net/ifaces/имя_интерфейса/ipv4rules)

    • policy routing (ip rule / ip route … table столько-то) (файлы /etc/net/ifaces/имя_интерфейса/ipv4route и /etc/net/ifaces/имя_интерфейса/ipv4rules)

  5. Настройка моста, объединяющего один или несколько интерфейсов
  6. Настройка vlan-ов (конкретно в смысле IEEE_802.1Q)

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

  • По утилите ip в конце страницы, там 95% нам не нужно)

  • по etcnet (тоже многое не нужно, всё, что нужно, было в лекциях)

    • Много (увы, слишком сложных) примеров настройки в каталоге /usr/share/doc/etcnet*

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