Выполнение [домашнего задания](https://github.com/netology-code/sysadm-homeworks/blob/devsys10/03-sysadmin-07-net/README.md) 
по теме "3.7. Компьютерные сети, лекция 2".

## Q/A

### Задача 1

> Проверьте список доступных сетевых интерфейсов на вашем компьютере. Какие команды есть для этого в Linux и в Windows?

В Linux можно выполнить команду `ip link`, которая покажет все сетевые интерфейсы, включая виртуальные.
Для Windows аналогом данной команды является вызов `ipconfig /all`.

### Задача 2

> Какой протокол используется для распознавания соседа по сетевому интерфейсу? Какой пакет и команды есть в Linux для этого?

Для получения информации о соседнем устройстве используется протокол [LLDP](https://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol).
Данный протокол в ОС Linux реализован в утилите `lldpd`.

### Задача 3

> Какая технология используется для разделения L2 коммутатора на несколько виртуальных сетей? Какой пакет и команды есть в Linux для этого? Приведите пример конфига.

Технология имеет название [VLAN](https://en.wikipedia.org/wiki/Virtual_LAN).
В Linux для управления виртуальными сетями используется пакет `vlan`, а именно утилита `vconfig` (устарела, рекомендуется использовать утилиту `ip route`).

Вся конфигурация так или иначе хранится в файле `/etc/network/interfaces`, содержимое которого будет выглядеть примерно так

```
auto eth0.1400
iface eth0.1400 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        vlan_raw_device eth0
```

### Задача 4

> Какие типы агрегации интерфейсов есть в Linux? Какие опции есть для балансировки нагрузки? Приведите пример конфига.

В конфигурации Linux предусмотрены следующие типы агрегации:
* static/manual - ручная статическая настройка
* dynamic - динамическая

Типы балансировки нагрузки:
* `balance-rr` - балансировка по принципу [Round-robin](https://en.wikipedia.org/wiki/Round-robin_scheduling).
* `active-backup` - один активный интерфейс, в случае выхода из строя которого, трафик перенаправляется на запасной.
* `balance-xor` - "эксклюзивный ИЛИ", при котором происходит сопоставление MAC-адреса из запроса к MAC-адресу интерфейса. Эта связь используется в дальнейшем для всех запросов.
* `broadcase` - транслирование запроса на все интерфейсы.
* `802.3ad` - динамическая политика агрегации по стандарту [IEEE 802.3ad](https://www.ieee802.org/3/hssg/public/apr07/frazier_01_0407.pdf)
* `balance-tlb` - балансировка трафика в зависимости от нагрузки интерфейсов.
* `balance-alb` - надстройка над `balance-tlb`, убирающая необходимость специальной поддержки со стороны интерфейса.

Настройка производится в том же файле `/etc/network/interfaces`. Пример конфигурации с балансировкой нагрузки по типу `active-backup`,
когда основным является интерфейс `eth0`, а `wlan0` - запасным, который активируется при выходе из строя основного:

```
# Define slaves   
auto eth0
iface eth0 inet manual
    bond-master bond0
    bond-primary eth0
    bond-mode active-backup
   
auto wlan0
iface wlan0 inet manual
    wpa-conf /etc/network/wpa.conf
    bond-master bond0
    bond-primary eth0
    bond-mode active-backup

# Define master
auto bond0
iface bond0 inet dhcp
    bond-slaves none
    bond-primary eth0
    bond-mode active-backup
    bond-miimon 100
```

### Задача 5

> Сколько IP адресов в сети с маской `/29` ? Сколько `/29` подсетей можно получить из сети с маской `/24`. Приведите несколько примеров `/29` подсетей внутри сети `10.10.10.0/24`.

Всего в сети с маской `/29` находятся 8 IP адресов, 2 из которых зарезервированы.

Всего в сети с маской `/24` могут использоваться 256 IP адреса. 
Таким образом, если на каждую сеть с маской `/29` нужен пул из 8 адресов,
то в оригинальную сеть поместится 256 / 8 = 32 подсети с маской `/29`.

Примеры подсетей с маской `/29` внутри сети `10.10.10.0/24`:
* `10.10.10.1/29`
* `10.10.10.9/29`
* `10.10.10.19/29`

### Задача 6

> Задача: вас попросили организовать стык между 2-мя организациями. Диапазоны `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16` уже заняты. Из какой подсети допустимо взять частные IP адреса? Маску выберите из расчета максимум 40-50 хостов внутри подсети.

Так как самые ходовые сети, используемые для внутренних сетей, уже заняты, то остаётся только вариант с сетью `100.64.0.0/10`.
Если рассчитывать на 40-50 хостов в рамках данной сети, то можно взять подсеть `100.64.0.0/26`,
у которой будет диапазон доступных адресов `100.64.0.1 - 100.64.0.62`.

### Задача 7

> Как проверить ARP таблицу в Linux, Windows? Как очистить ARP кеш полностью? Как из ARP таблицы удалить только один нужный IP?

Работа с ARP-таблицами:
* linux

  ```shell
  # вывод данных таблицы
  ip neigh
  # полная очистка
  ip neigh flush all
  # удаление одного ip-адреса
  ip neigh del <ip-address> lladdr <link-layer address> <device>
  # пример удаления адреса
  ip neigh del 192.168.1.3 lladdr 02:01:02:03:04:05 dev eth0
  ```

* windows

  ```shell
  # вывод данных таблицы
  arp -a
  # полная очистка
  arp -d *
  # удаление одного ip-адреса
  arp -d <ip-address>
  # пример удаление адреса
  arp -d 192.168.1.3
  ```
