# Writeup: Сеть двух баз Minecraft

**Категория:** Сети  
**Класс:** 10  
**Флаги:** 3

---

## Задание 1: Сеть двух баз Minecraft (1/3)
---
На карте мира Minecraft изображены две базы, соединенные через Интернет. Слева база Стива с локальным сервером `SRV1` и роутерами `R1–R3`, справа база Херобрина и Эндермена за роутером `R4` и каскадом коммутаторов.

![alt text](Network_10.png)

**Что нужно найти:**
Наибольшую по размеру подсеть, которую можно назначить сети Стива так, чтобы диапазон ее адресов не включал адреса других сетей или сегментов на схеме. Ответ укажите в формате `/20`.

**Рекомендуемые утилиты:** черновик, калькулятор степеней двойки
**Цель работы:** определить допустимый префикс подсети по схеме адресации
**Критерий оценки:** предоставление корректного ответа

---
**Разбор задания:**
На схеме к сети Стива относятся адреса `192.168.10.1`, `192.168.10.5`, `192.168.10.10`.
Рядом уже есть другие сегменты с адресами `192.168.10.32`, `192.168.10.40`, `192.168.10.41`, `192.168.10.65`, `192.168.10.70`.

Нужна максимально большая подсеть, которая включает сеть Стива, но не захватывает чужие адреса.

- `192.168.10.0/26` покрывает `0`–`63`, поэтому включает `192.168.10.32`, `192.168.10.40`, `192.168.10.41` — это уже пересечение с другими сегментами.
- `192.168.10.0/27` покрывает `0`–`31`, включает `192.168.10.1`, `192.168.10.5`, `192.168.10.10` и не захватывает адреса других сетей.

**Ответ:** `/27`

---

## Задание 2: Сеть двух баз Minecraft (2/3)
---
Справа на карте база Херобрина и Эндермена: их ПК подключены к `SW TOP`, который вместе с `SW L` и `SW R` образует треугольник из трех коммутаторов. За `SW R` подключен роутер `R4`.

На устройствах получены листинги, представленные в книге `Listings.txt`. Выберите все верные утверждения из книги `Statements.txt`.

**Что нужно найти:**
Номера всех верных утверждений. Ответ запишите через подчеркивание в порядке возрастания, например: `1_3_5`.

**Рекомендуемые утилиты:** текстовый редактор, черновик
**Цель работы:** разобрать `STP`, роли портов и обучение MAC-адресов
**Критерий оценки:** предоставление корректного ответа

`Listings.txt:`

Считайте, что:
- `0011.2233.4455` — MAC ПК Herobrine
- `0011.2233.4466` — MAC ПК Enderman
- `00aa.bbcc.ddee` — MAC интерфейса роутера `R4`, подключенного к `SW R`

```bash
SW TOP: show spanning-tree vlan 1
VLAN0001   Root ID	Priority	24577
           Address 	0000.5e00.0101
           Cost    	4
           Port    	Gi0/2
  Bridge ID  Priority	32769
           Address 	0000.5e00.0110
Interface   Role Sts Cost Prio.Nbr Type
Gi0/1       Desg FWD 4    128.1    P2p
Gi0/2       Root FWD 4    128.2    P2p
Fa0/1       Desg FWD 19   128.3    Edge
Fa0/2       Desg FWD 19   128.4    Edge

show mac address-table dynamic
0011.2233.4455   DYNAMIC   Fa0/1
0011.2233.4466   DYNAMIC   Fa0/2
00aa.bbcc.ddee   DYNAMIC   Gi0/2

SW L:
show spanning-tree vlan 1
VLAN0001   Root ID	Priority	24577
           Address 	0000.5e00.0101
           Cost    	4
           Port    	Gi0/2
  Bridge ID  Priority	32769
           Address 	0000.5e00.0120
Interface   Role Sts Cost Prio.Nbr Type
Gi0/1       Altn BLK 4    128.1    P2p
Gi0/2       Root FWD 4    128.2    P2p

show mac address-table dynamic
0011.2233.4455   DYNAMIC   Gi0/2
0011.2233.4466   DYNAMIC   Gi0/2
00aa.bbcc.ddee   DYNAMIC   Gi0/2

SW R:
show spanning-tree vlan 1
VLAN0001
  This bridge is the root
  Bridge ID  Priority	24577
             Address 	0000.5e00.0101
Interface   Role Sts Cost Prio.Nbr Type
Gi0/1       Desg FWD 4    128.1    P2p
Gi0/2       Desg FWD 4    128.2    P2p
Fa0/24      Desg FWD 19   128.24   Edge

show mac address-table dynamic
0011.2233.4455   DYNAMIC   Gi0/1
0011.2233.4466   DYNAMIC   Gi0/1
00aa.bbcc.ddee   DYNAMIC   Fa0/24
```

`Statements.txt:`

1. Root bridge в VLAN 1 — `SW R`.
2. На `SW L` порт `Gi0/1` в блокировке, поэтому пользовательские кадры через него идти не должны.
3. На `SW TOP` root port — `Gi0/2`, то есть путь к root bridge идет через `SW R`.
4. MAC-адреса Herobrine и Enderman в таблице `SW L` не доказывают их физическое подключение к `SW L`: это могут быть транзитно выученные MAC.
5. Так как к `SW L` не подключены конечные устройства, его таблица MAC должна быть пустой.
6. Если один из межкоммутаторных линков не в forwarding, VLAN 1 работать не сможет.
7. MAC Herobrine на `SW R` в `Gi0/1` доказывает, что ПК Herobrine физически подключен к `SW R`.

**Разбор задания:**

1. Верно. На `SW R` явно написано `This bridge is the root`, значит root bridge — `SW R`.
2. Верно. На `SW L` порт `Gi0/1` имеет состояние `Altn BLK`, значит пользовательский трафик через него не форвардится.
3. Верно. На `SW TOP` root port — `Gi0/2`, следовательно путь к root bridge идет через `SW R`.
4. Верно. MAC-адреса Herobrine и Enderman на `SW L` изучены на uplink-порту `Gi0/2`, то есть это транзитно выученные адреса, а не доказательство прямого подключения к `SW L`.
5. Неверно. Даже если к `SW L` не подключены конечные устройства, он все равно может учить MAC-адреса транзитного трафика.
6. Неверно. Именно так и работает `STP`: один из линков может быть в блокировке, при этом VLAN продолжает работать по оставшемуся дереву.
7. Неверно. MAC Herobrine на `SW R` в `Gi0/1` показывает только то, что кадры до него приходят через этот порт, но не доказывает физическое прямое подключение ПК к `SW R`.

**Ответ:** `1_2_3_4`

---

## Задание 3: Сеть двух баз Minecraft (3/3)
---
Роутер `R3` публикует локальный веб-интерфейс сервера Стива `SRV1` (`192.168.10.10`). Снаружи `R3` доступен по адресу `203.0.113.2`, а сервис работает по `443/tcp`.

Зайди на `R3` по SSH и настрой `iptables` так, чтобы входящие подключения к `203.0.113.2:443` перенаправлялись на `192.168.10.10:443`, но только для источника `203.0.113.6/32`.

**Рекомендуемые утилиты:** ssh, bash, iptables
**Цель работы:** настроить корректное правило `DNAT`
**Критерий оценки:** получение правильного флага

**Разбор задания:**

Нужно опубликовать внутренний сервис `192.168.10.10:443` на внешнем адресе `203.0.113.2:443`, но только для клиента `203.0.113.6`.

Подходит правило:

```bash
iptables -t nat -A PREROUTING -p tcp -s 203.0.113.6/32 -d 203.0.113.2 --dport 443 -j DNAT --to-destination 192.168.10.10:443
```

Почему именно оно:

- используется таблица `nat`, цепочка `PREROUTING`, потому что нужно поменять адрес назначения до маршрутизации
- ограничение по `-s 203.0.113.6/32` оставляет доступ только для `R4`
- меняется только `tcp/443`
- перенаправление идет ровно на `SRV1:443`

После добавления правила запускаем:

```bash
python3 /opt/router/check_rule.py
```

**Флаг:** `vsosh{ipt4pl3s_prer0ut1n6}`
