Перейти к основному контенту

2.2. Практика

Схема виртуального лабораторного стенда network05.pngnetwork05.png

рисунок 1. Схема стенда

Задание 0. Построение стенда

1. Создать 2 виртуальные сети:
  1. labnet1
  2. labnet2
Название сети/подсети Сетевой адрес mtu
labnet1 192.168.1.11.0/24 1492
labnet2 192.168.2.12.0/24 1492

При создании подсети необходимо выбрать пункт "Запретить шлюз"

Пример создания сетей

Для создания сети нужно перейти в сети:

Создать порты для дальнейшего использования.

Пример создания порта Cоздать порты:

2. Создать виртуальные машины для работы

Перед созданием виртуальной машины необхоидмо продумать схему ip адресации для взаимодействия между узлами:

  1. Для взаимодействия между узлами labnode01 и labnode02 необходимо выбрать адреса из сети 192.168.11.0/24
  2. Для взаимодействия между узлами labnode02 и labnode03 необходимо выбрать адреса из сети 192.168.12.0/24
Название виртуальной машины Источник Тип инстанса Сети для внешнего подключения
labnode-1labnode01 Образ-Ubuntu-server20.04 small external-net
labnode-2labnode02 Образ-Ubuntu-server20.04 small external-net
labnode-3labnode03 Образ-Ubuntu-server20.04 small external-net

З

Таданик же 1. Установка статического IP адреса физическому интерфейсу

Подключение должно быпроверить развыполернено по следутующей схеме (рис. 1).

Воспользоваться утилитой ip. Для того чтобы увидеть существующие в системе интерфейсы, набрать команду:

ip address

Там же будут отображены основные параметрыуктуру этих сетевых интерфейсов.
Команда ip позволяет использовать короткие имена команд. В данном случае, вместо ip address можно использовать команду

ip a

В случае правильного выполнения команд (для всех команд кроме ip address) утилита ip не будет возвращать никакого значения. В случае, если команда выполнена неправильно, будет возвращена соответствие схеме на рисующаянке ошибка.1.

Задание 1. Настьройка маршрутизации

В данном задании на развернутом стенде нужно настрфейсу eth1 IP адрес:

sudo ip address add 10.0.12.20/24 dev eth1

Изменоить статическую маршрутизацию на узле.

Для самостояние на up.

Посмотреть изменения (состояние устройства eth1 должно измениться на UP):

ip address

Подключиться к labnode-2. Установить интерфейсу eth1 IP адрес: Необходимо привести конфиг на labnode-2 к его минимальной конфигурацииботы неужнобходимой для выподключения:

sudo vi /etc/netplan/50-cloud-init.yaml

И привести его кь следующему видуе:

network:
    version: 2 ethernets: eth0: dhcp4: true mtu: 9000

З

  • надасть адрес интерфейса eth1

    sudo ip address add 10.0.12.30/24 dev eth1
    

    Изменоить сотатичестоянкие маршруты на up:

    узлах
  • up dev eth1

    С labnode-1 п

  • Проверить доступность labnode-2:

    узла
    pinglabnode03 -cс 4узла 10.0.12.30labnode01
  • Зафиксировать

    После перезультагрузки сервера, или сервиса сети все изменения отменяются. Перезагрузить оба сервера, и посмотреть на состояние интерфейсов (необходимо проверить, сохранились ли на интерфейсе адреса, заданные предыдущими командами):

    reboot
    # Дождаться перезагрузки
  • системы ip address

    Задание 2. Настройка трансляции адресов

    Для самостоятельной работы нужно выполнить следующее:

    1. настроить статического адреса через конфигурационные файлы

      Подключение домаршруты на узлжноах быть01 выполненои 03

    2. С помощью следующей схеме (рис. 1). Для того чтобы изменения оставались в силе, нужноiptables настроить интерфейс через конфигурационный файсл. Тогда настройки будут загружаться при старте системы. Создать конфигурацию интерфейса eth1 на labnode-1:

      sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
      

      И привести его к следующему виду:

      TYPE=Ethernet
      DEVICE=eth1
      BOOTPROTO=static
      IPADDR=10.0.12.20
      PREFIX=24
      ONBOOT=yes
      

      Основные параметры:

      1. TYPE - Тип сетевого интерфейса
      2. NAME - Имя интерфейса
      3. DEVICE - Устройство, которое интерфейс использует
      4. BOOTPROTO - если этот параметр static, то интерфейс не будет автоматически получать адрес от сети, маску и другие параметры подключения. В случае необходимости автоматического получения адреса – необходимо указать значение этого параметра -dhcp.
      5. ONBOOT - включать ли интерфейс при загрузке.
      6. IPADDR - IP-адрес
      7. DNS1 - DNS, через который обращаться к доменам. Можно указать несколько параметров: DNS1, DNS2...
      8. PREFIX - префикс, другой способ задания маски сети. Для префикса 24 маска будет 255.255.255.0
      9. GATEWAY - шлюз

      Все остальные параметры являются необязательными в данной лабораторной работе, и должны быть удалены.

      Скопировать файл ifcfg-eth1 с именем ifcfg-eth2:

      sudo cp /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth2
      

      Отредактировать его с помощью редактора vi:

      sudo vi /etc/sysconfig/network-scripts/ifcfg-eth2
      

      И привести его содержимое к следующему виду:

      TYPE=Ethernet
      DEVICE=eth2
      BOOTPROTO=static
      IPADDR=10.0.12.21
      PREFIX=24
      ONBOOT=yes
      

      Перезагрузить сеть и посмотреть интерфейсы:

      sudo systemctl restart network
      ip address
      

      Далее необходимо настроить интерфейсы на узле labnode-2иlabnode02(вмеспользуя netplan. Сначала необходимто отадредактировать создать конфигурацию интерфейса eth1 источника labnode-2:

      sudo vi /etc/netplan/51-eth1.yaml
      

      Идолжен подставляться адривес центи ерального кшлюза)

    3. следующему виду:

      network:
          version: 2
          ethernets:
              eth1:
                  addresses:
                  - 10.0.12.30/24
                  mtu: 1492
      

      Скопировать файл 51-eth1.yaml с именем 51-eth2.yaml:

      sudo cp /etc/netplan/51-eth1.yaml /etc/netplan/52-eth2.yaml
      

      Отредактировать его через vi:

      sudo vi /etc/netplan/52-eth2.yaml
      

      И привести к следующему виду:

      network:
          version: 2
          ethernets:
              eth2:
                  addresses:
                  - 10.0.12.31/24
                  mtu: 1492
      

      Примените конфигурацию и посмотреть интерфейсы:

      sudo netplan try
      ip address
      

    4. Проверить доступность узла labnode03 с узла labnode01
    5. С помощью утинлиты tcpdump проверфейсить, что при пров:

      ерки
      (labnode-1)связи pingмежду -cузлами 4labnode01 10.0.12.30и (labnode-1)labnode03 pingприходят -cпакеты, 4адрес 10.0.12.31источника (labnode-2)в pingкоторых -cравен 4адресу 10.0.12.20шлюза
    6. (labnode-2)
    7. Зафиксировать pingрезультат -cпроверки 4tcpdump
    8. 10.0.12.21

    Задание 3. Настройка объединения интерфейсов.

    "Объединение" (bonding)DNS сетевых интерфейсов - позволяет совокупно собрать несколько портов в одну группу, эффективно объединяя пропускную способность в одном направлении. Например, вы можете объединить два порта по 100 мегабит в 200 мегабитный магистральный порт.

    <I>В некоторых случаях интерфейсы после перезапуска сетевой службы не удаляют ip адреса, что связано с особенностью работы up/down скриптов. В таком случае в системе на разных интерфейсах может присутствовать одинаковый ip адрес (проверить можно командой ip address). Для решения этой проблемы необходимо отчистить все адреса на узле labnode-3

    1. Установинтерфейсе. Сделать это можно кпак просто удалив конкретный адрес с интерфейса, так и воспользоваться специальной командой, которая очистит все имеющиесяBind на нём адреса:

      sudo ip address flush dev eth1
      sudo ip address flush dev eth2
      

      Подключение должно быть выполнено по следующей схеме (рис. 2).

      Для того, чтобы создать интерфейс bond0, нужно создать файл конфигурации:

      sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0
      

      Конфигурация bond0 интерфейса на labnode-1 будет следующей:

      TYPE=Bond
      DEVICE=bond0
      BOOTPROTO=static
      IPADDR=10.0.12.20
      PREFIX=24
      BONDING_MASTER=yes
      BONDING_OPTS="mode=0 miimon=100"
      ONBOOT=yes
      

      Это создаст сам bond0 интерфейс. Но нужно также назначить физические интерфейсы eth1 и eth2, как подчиненные ему. Необходимо изменить конфигурационный файл eth1:

      sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
      

      И привести его к следующему виду:

      TYPE=Ethernet
      DEVICE=eth1
      MASTER=bond0
      SLAVE=yes
      

      То же самое сделать и с eth2:

      sudo vi /etc/sysconfig/network-scripts/ifcfg-eth2
      
      TYPE=Ethernet
      DEVICE=eth2
      MASTER=bond0
      SLAVE=yes
      

      Перезагрузить сеть.

      labnode03
    2. sudo systemctl restart network
      

      Посмотреть, что получилось:

      ip a
      

      В полученном выводе интерфейсы eth1 и eth2 должны быть в подчиненном режиме (SLAVE), а интерфейс bond0 должен иметь ip адрес и находиться в состоянии UP. Также необходимо проверить, что на интерфейсах eth1 и eth2 нет никаких ip адресов. Теперь необходимо проделать аналогичные манипуляции на labnode-2.

      Удалить содержимое файлов 51-eth1.yaml и 52-eth2.yaml

      rm -rf /etc/netplan/51-eth1.yaml
      rm -rf /etc/netplan/52-eth2.yaml
      

    3. Настроить на нём DNS зону example.com
    4. Настроинтерфейь A запис bond0ь для сдоздамения отказоустойчивного подключимения. Дlabnode03.example.com, указывающего на ip адрес узляа labnode03
    5. Прописать на узле labnode01 обращение к dns серверу labnode03.
    6. С помощью утилиты dig, обратившись к этого открыть новый файл конфигмурации 53-bond0.yaml:

      sudo vi /etc/netplan/53-bond0.yaml
      

      Конфигурация bond0 интерфейса будет следующей:

      network:
          version: 2
          ethernets:
              eth1: {}
              eth2: {}
          bonds:
              bond0:
                  mtu: 1492
                  interfaces:
                      - eth1
                      - eth2
                  parameters:
                      mode: balance-rr
                      mii-monitor-interval: 100
                  addresses:
                      - 10.0.12.30/24
      

      Перечитать конфигурационные файлы сетрвевых рустройств и проверить после- эчтого нзапистройки возвращаются корректевых интерфейсов:

      sudo netplan try
      

      С labnode-1 необходимо проверить доступность.

    7. labnode-2
    8. ДОП:

      ping -c 4 10.0.12.30
      

      Теперь на labnode-1 необходимо отВключить eth1 логи посмотреть его состояние:

      И с labnode-2 проверить его доступность:

      ping 10.0.12.20 -c 4
      

      Если объединение интерфейсов настроено правильно, то узел будет доступен, даже после выключения одного из интерфейсов.

      Задание 4. Настройка bridge интерфейса.

      Ядро Linux имеет встроенный механизм коммутации пакетов между интерфейсами, и может функционировать как обычный сетевой коммутатор. Интерфейс Bridge представляет собой как сам виртуальный сетевой коммутатор, так и сетевой интерфейс с ip адресом, назначенным на порт этого коммутатора. Подключение должно быть выполнено по следующей схеме (рис. 3).

      На labnode-1 требуется создать конфиг ifcfg-br0:

      sudo vi /etc/sysconfig/network-scripts/ifcfg-br0
      

      Мост будет иметь следующую конфигурацию:sudo

      TYPE=Bridge
      DEVICE=br0
      BOOTPROTO=static
      IPADDR=10.0.12.20
      PREFIX=24
      STP=on
      ONBOOT=yes
      

      Spanning Tree Protocol (STP) нужен, чтобы избежать петель коммутации.

      Интерфейс bond0, настроенный до этого, может быть интерфейсом этого сетевого коммутатора, но в таком случае ip адрес уже будет назначен на интерфейс виртуального сетевого коммутатора, и все настройки ip с интерфейса bond0 можно будет убрать. Для этого в конфигурационный файл интерфейса bond0 также нужно добавить параметр BRIDGE=br0. Также удалить из него параметры BOOTPROTO, IPADDR, PREFIX, ONBOOT (можно просто закомментировать с помощью символа #, когда пригодятся, раскомментировать их, убрав символ #):

      sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0
      

      Перезагрузить сеть:

      sudo systemctl restart network
      

      Можно проверить результат. Для этого на labnode-2 выполнить следующую команду:

      ip address
      

      Проверить, что в результате вывода этой команды ip адрес будет назначен только на интерфейс br0, и он будет в состоянии UP. Если все правильно, то проверить доступность соседнего узла командой:

      ping -c 4 10.0.12.20
      

      Мост может подняться не сразу. Необходимо подождать.

      Задание 5. Создание VxLAN интерфейсов.

      VxLAN является механизмом построения виртуальных сетей на основаниях тоннелей, поверх реальных сетей, но при этом позволяющим их разграничивать.

      Подключение должно быть выполнено по следующей схеме (рис. 4).

      На labnode-1 удалить конфигурацию моста br0:

      sudo rm /etc/sysconfig/network-scripts/ifcfg-br0
      

      И привести bond0 к прежнему виду:

      TYPE=Bond
      DEVICE=bond0
      BOOTPROTO=static
      IPADDR=10.0.12.20
      PREFIX=24
      BRIDGE=br0
      BONDING_MASTER=yes
      BONDING_OPTS="mode=0 miimon=100"
      ONBOOT=yes
      

      И перезагрузить сервер:

      sudo reboot
      

      После зBind и обнагрузки сервера провержить в нем обработу сщетни с узла labnode-2:

      ping -c 4 10.0.12.20
      

      На labnode-1 добавить интерфейс vxlan10:

      Настроить коммутацию Linux Bridge:

        sudo bridge fdb append to 00:00:00:00:00:00 dst 10.0.12.30 dev vxlan10
      

      Назначить vxlan10 IP адресу

    9. и
    перевести его в состояние up:

    sudo ip addr add 192.168.1.20/24 dev vxlan10
    sudo ip link set up dev vxlan10
    

    VxLAN работает как приложение. Пакеты инкапсулируются в udp, и для работы VxLAN требуется udp порт 8472. Открыть его в фаерволе:

    sudo firewall-cmd --permanent --add-port=8472/udp
    sudo firewall-cmd --reload
    

    После нужно сделать все то же самое на labnode-2. Добавить интерфейс vxlan10:

    Настроить коммутацию Linux Bridge:

    sudo bridge fdb append to 00:00:00:00:00:00 dst 10.0.12.20 dev vxlan10
    

    Назначить vxlan10 IP адрес и перевести его в состояние up:

    sudo ip addr add 192.168.1.30/24 dev vxlan10
    sudo ip link set up dev vxlan10
    

    Открыть порт 8472/udp в фаерволе:

    sudo firewall-cmd --permanent --add-port=8472/udp
    sudo firewall-cmd --reload
    

    Протестировать соединение через vxlan. Для этого на labnode-1:

    ping -c 4 192.168.1.30
    

    Посмотреть на arp таблицу. Там можно увидеть соответствие mac адресов с ip адресами.

    arp
    

    Нужно убедиться, что появилось приложение, которое слушает порт 8472.

    ss -tulpn | grep 8472
    

    Теперь необходимо добавить vxlan с другим тегом (20), и убедиться в том, что из него не будет доступа к vxlan с тегом 10 (пакеты будут отбрасываться из-за разных тегов). Перезагрузить labnode-2. Текущая настройка vxlan сбросится.

    sudo reboot
    

    На labnode-2 добавить интерфейс vxlan20 и настроить его:

    Протестировать соединение через vxlan. Для этого на labnode-1:

    ping 192.168.1.30 -c 4