2.2. Практика
Схема виртуального лабораторного стенда
Задание 0. Построение стенда
1. Создать 2 виртуальные сети:
- labnet1
- labnet2
Название сети/подсети | Сетевой адрес | mtu |
---|---|---|
labnet1 | 192.168. |
1492 |
labnet2 | 192.168. |
1492 |
При создании подсети необходимо выбрать пункт "Запретить шлюз"
Создать порты для дальнейшего использования.
2. Создать виртуальные машины для работы
Перед созданием виртуальной машины необхоидмо продумать схему ip адресации для взаимодействия между узлами:
- Для взаимодействия между узлами labnode01 и labnode02 необходимо выбрать адреса из сети 192.168.11.0/24
- Для взаимодействия между узлами labnode02 и labnode03 необходимо выбрать адреса из сети 192.168.12.0/24
Название виртуальной машины | Источник | Тип инстанса | Сети для внешнего подключения |
---|---|---|---|
Образ-Ubuntu-server20.04 | small | external-net | |
Образ-Ubuntu-server20.04 | small | external-net | |
Образ-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.
sudo ip link set up dev eth1
Посмотреть изменения (состояние устройства 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:
sudo01, ip02 linkи set03
С labnode-1 п
pinglabnode03 -cс 4узла 10.0.12.30labnode01
После перезультагрузки сервера, или сервиса сети все изменения отменяются. Перезагрузить оба сервера, и посмотреть на состояние интерфейсов (необходимо проверить, сохранились ли на интерфейсе адреса, заданные предыдущими командами):
reboot
# Дождаться перезагрузки
Задание 2. Настройка трансляции адресов
Для самостоятельной работы нужно выполнить следующее:
- настроить статическ
ого адреса через конфигурационные файлыПодключениедомаршруты на узлжноахбыть01выполненои 03 - С помощью
следующей схеме (рис. 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Основные параметры:TYPE - Тип сетевого интерфейсаNAME - Имя интерфейсаDEVICE - Устройство, которое интерфейс используетBOOTPROTO - если этот параметр static, то интерфейс не будет автоматически получатьадресот сети, маску и другие параметры подключения. В случае необходимости автоматического получения адреса – необходимо указать значение этого параметра -dhcp.ONBOOT - включать ли интерфейс при загрузке.IPADDR - IP-адресDNS1 - DNS, через который обращаться к доменам. Можно указать несколько параметров: DNS1, DNS2...PREFIX - префикс, другой способ задания маски сети. Для префикса 24 маска будет 255.255.255.0GATEWAY - шлюз
Все остальные параметры являются необязательными в данной лабораторной работе, и должны быть удалены.Скопировать файл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Идолжен подставляться адривес центи еральногокшлюза) - Проверить доступность узла labnode03 с узла labnode01
- С помощью ути
нлиты tcpdump проверфейсить, что при пров:ерки(labnode-1)связиpingмежду-cузлами4labnode0110.0.12.30и(labnode-1)labnode03pingприходят-cпакеты,4адрес10.0.12.31источника(labnode-2)вpingкоторых-cравен4адресу10.0.12.20шлюза - Зафиксировать
pingрезультат-cпроверки4tcpdump
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
Задание 3. Настройка объединения интерфейсов.
"Объединение" (bonding)DNS сетевых интерфейсов - позволяет совокупно собрать несколько портов в одну группу, эффективно объединяя пропускную способность в одном направлении. Например, вы можете объединить два порта по 100 мегабит в 200 мегабитный магистральный порт.
<I>В некоторых случаях интерфейсы после перезапуска сетевой службы не удаляют ip адреса, что связано с особенностью работы up/down скриптов. В таком случае в системе на разных интерфейсах может присутствовать одинаковый ip адрес (проверить можно командой ip address). Для решения этой проблемы необходимо отчистить все адреса на узле labnode-3
- Установи
нтерфейсе. Сделатьэто можно кпакпросто удалив конкретныйадрес с интерфейса, так и воспользоваться специальной командой, которая очистит все имеющиеся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-eth2TYPE=Ethernet DEVICE=eth2 MASTER=bond0 SLAVE=yes
labnode03Перезагрузитьсеть. - Настроить на нём DNS зону example.com
- Настрои
нтерфейь A записbond0ь длясдоздамения отказоустойчивногоподключимения.Дlabnode03.example.com, указывающего на ip адрес узляа labnode03 - Прописать на узле labnode01 обращение к dns серверу labnode03.
- С помощью утилиты 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необходимо проверить доступность. - ДОП:
ping -c 4 10.0.12.30Теперь наlabnode-1необходимо отВключитьeth1посмотреть его состояние:sudo ip link set down eth1 ip addressИ с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Мост будет иметь следующую конфигурацию:sudoTYPE=Bridge DEVICE=br0 BOOTPROTO=static IPADDR=10.0.12.20 PREFIX=24 STP=on ONBOOT=yesSpanning 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:sudo ip link add vxlan10 type vxlan id 10 dstport 0 dev bond0Настроитькоммутацию Linux Bridge:sudo bridge fdb append to 00:00:00:00:00:00 dst 10.0.12.30 dev vxlan10Назначить vxlan10 IPадресу
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
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:
sudo ip link add vxlan10 type vxlan id 10 dstport 0 dev bond0
Настроить коммутацию 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 и настроить его:
sudo ip link add vxlan20 type vxlan id 20 dstport 0 dev bond0
sudo bridge fdb append to 00:00:00:00:00:00 dst 10.0.12.20 dev vxlan20
sudo ip addr add 192.168.1.30/24 dev vxlan20
sudo ip link set up dev vxlan20
ss -tulpn | grep 8472
Протестировать соединение через vxlan. Для этого на labnode-1:
ping 192.168.1.30 -c 4