5726
Комментарий:
|
10866
|
Удаления помечены так. | Добавления помечены так. |
Строка 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(две пары)
* Видео
Login: user, Password: user, пароль суперпользователя: root
Задание
Импортировать образ виртуальной машины для VirtualBox,
- Создать нужное количество клонов
- если на хост-системе недостаточно памяти, можно ограничить объём памяти одной виртуалки 512 Мб
для экономии места и времени делать связную копию
в клоне обязательно перегенерировать все mac-адреса
- не забудьте один клон оставить чистым
- Настроить топологию сети как предписано в варианте задания
Для каждого узла все настройки «с нуля» должны содержаться в одном шелл-сценарии (etcnet, etckeeper и прочая специфика отменяется)
- «Холодный старт» вируталки должен выглядеть так:
- запустить виртуалку
- войти в суперпользователя
- запустить сценарий
Отчёт по заданию
Отчёт — это набор из 5 сценариев, по одному на узел.
- Каждый сценарий — это текстовый файл на shell
Имя сценария в отчёте совпадает с именем узла в топологии, например S0.sh для узла S0, H2.sh для уздла H и т. п.
Сценарии присылать на почту (возможно, несколько), будет объявлено в группе.
Варианты
}
Текстовая версия:
- 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)
- Если на узле есть интерфейс типа NAT, вам нужно знать:
От волшебного переименования интерфейсов пришлось отказаться: в некоторых интересующих нас случаях оно происходит позже, чем применение соответствующих настроек, и всё ломается
Нынешняя схема именования — т. н. predictable network device names. Читать это не обязательно, просто в имя интерфейса зашивается номер шины и номер слота в шине, например, enp0s3: вместо eth0:
- При клонировании не забываем
- делать связную копию (а не полную, чтобы не забить диск)
- включать крыжик «перегенерировать все MAC-адреса»
При добавлении нового сетевого интерфейса в настройках VirtualBox не забываем включить разрешение promiscuous mode
Что будет в задании
В задании будет набор из четырёх-пяти виртуалок, объединённых в несколько сетей с выходом в интернет + описание требуемой топологии сети и ролей узлов в ней.
Возможная тематика:
Статическая настройка IP (файлы /etc/net/ifaces/имя_интерфейса/ipv4address и /etc/net/ifaces/имя_интерфейса/options)
Динамическое получение настроек IP (/etc/net/ifaces/имя_интерфейса/options)
- Настройка сервера, обеспечивающего выход в интернет
- Скорее всего, внешний интерфейс настроен динамически
Файл /etc/resolv.conf, который при этом сгенерится, надо будет разложить на все машины, где нужно, чтобы DNS работал
- NAT (одно правило типа MASQUERADE), есть на этом вики)
работа роутером (включение sys.net.ipv4.ip_forward в 1, настройка /etc/net/sysctl.conf)
- если есть какие-то внутренние подсети, добавление маршрута до них
- Скорее всего, внешний интерфейс настроен динамически
- Настройка маршрутизатора
- работа роутером
возможно, дополнительные маршруты (/etc/net/ifaces/имя_интерфейса/ipv4rules)
policy routing (ip rule / ip route … table столько-то) (файлы /etc/net/ifaces/имя_интерфейса/ipv4route и /etc/net/ifaces/имя_интерфейса/ipv4rules)
- Настройка моста, объединяющего один или несколько интерфейсов
Настройка vlan-ов (конкретно в смысле IEEE_802.1Q)
Документация
По утилите ip в конце страницы, там 95% нам не нужно)
по etcnet (тоже многое не нужно, всё, что нужно, было в лекциях)
Много (увы, слишком сложных) примеров настройки в каталоге /usr/share/doc/etcnet*