242 |
243 | `ovf: ../../template-vm/alt-server-p10.2-template.ova` - путь до файла с шаблоном виртуалки
244 |
245 |
246 |
247 |
248 |
--------------------------------------------------------------------------------
/ansible/createStend/deployVMs/configure_interface_mgmt.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | INTERFACE_NAME=`ip -o link | awk '$2 != "lo:" {print $2, $(NF-4)}' | awk -v mac=$INTERFACE_MAC '$2 == mac {print $1}'`
3 | INTERFACE_NAME=${INTERFACE_NAME//:/}
4 |
5 | # Проверяем существует ли папка для интерейса $INTERFACE_NAME
6 | if [ -d "/etc/net/ifaces/$INTERFACE_NAME" ]
7 | then
8 | # Удаляем всю папку, чтобы создать новую со своими параметрами
9 | rm -rf "/etc/net/ifaces/$INTERFACE_NAME"
10 | fi
11 |
12 | mkdir /etc/net/ifaces/$INTERFACE_NAME
13 |
14 | # Создаем файл /etc/net/ifaces/$INTERFACE_NAME/options
15 | echo "TYPE=eth
16 | DISABLED=no
17 | NM_CONTROLLED=no
18 | BOOTPROTO=static
19 | CONFIG_IPv4=yes" > /etc/net/ifaces/$INTERFACE_NAME/options
20 |
21 | # Настраиваем IP на интерфейс
22 | echo $IP_ADDRESS$IP_MASK > /etc/net/ifaces/$INTERFACE_NAME/ipv4address
23 |
24 | # Перезапускаем сеть
25 | systemctl restart network
--------------------------------------------------------------------------------
/ansible/createStend/deployVMs/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/createStend/deployVMs/pic1.png
--------------------------------------------------------------------------------
/ansible/createStend/deployVMs/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/createStend/deployVMs/pic2.png
--------------------------------------------------------------------------------
/ansible/createStructireProject/README.md:
--------------------------------------------------------------------------------
1 | ### Создание модулей проекта
2 |
3 | Сейчас все наш сценарий хранится в одном файле. Со временем в файл вы будите добавлять новые задачи. Что затруднит ориентацию в этотм сценарии. Поэтому разделим весь сценарий на части
4 |
5 | Для этого в корневой папке вашего проекта создадим папку `tasks`
6 |
7 | В этой папке создадим следующие файлы:
8 |
9 | ```
10 | setHostname.yaml
11 | enableRouting.yaml
12 | setIpAddress.yaml
13 | setDefaultGateway.yaml
14 | restartNetwork.yaml
15 | ```
16 |
17 | Теперь наполним созданные файлы следующим содержимом
18 |
19 | `setHostname.yaml`
20 |
21 | ```
22 | ---
23 |
24 | - name: Set hostname
25 | ansible.builtin.hostname:
26 | name: "{{ inventory_hostname }}"
27 | ```
28 |
29 | `enableRouting.yaml`
30 |
31 | ```
32 | ---
33 |
34 | - name: Enable routing
35 | shell:
36 | cmd: "sed -i -e 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf"
37 |
38 | ```
39 |
40 | `setIpAddress.yaml`
41 |
42 | ```
43 | ---
44 |
45 | - name: Creating a folder for interfaces
46 | ansible.builtin.file:
47 | path: "/etc/net/ifaces/{{ item['ifname'] }}"
48 | state: directory
49 | mode: '0777'
50 | loop: "{{ vars.vars.interfaces }}"
51 | - name: Creating a file with IP address
52 | ansible.builtin.copy:
53 | dest: "/etc/net/ifaces/{{ item['ifname'] }}/ipv4address"
54 | content: "{{ item['ifaddr']+item['mask'] }}"
55 | mode: '0777'
56 | loop: "{{ vars.vars.interfaces }}"
57 | - name: Creating a file options for interfaces
58 | ansible.builtin.copy:
59 | dest: "/etc/net/ifaces/{{ item['ifname'] }}/options"
60 | content: "TYPE=eth
61 | DISABLE=no
62 | NM_CONTROLLED=no
63 | BOOTPROTO=static
64 | CONFIG_IPV4=yes"
65 | mode: '0777'
66 | loop: "{{ vars.vars.interfaces }}"
67 | ```
68 |
69 | `setDefaultGateway.yaml`
70 |
71 | ```
72 | ---
73 |
74 | - name: Setting default gateway on Servers
75 | when: item['gw'] is defined
76 | ansible.builtin.copy:
77 | dest: "/etc/net/ifaces/{{ item['ifname'] }}/ipv4route"
78 | content: "default via {{ item['gw'] }}"
79 | mode: '0777'
80 | loop: "{{ vars.vars.interfaces }}"
81 | ```
82 |
83 | `restartNetwork.yaml`
84 |
85 | ```
86 | ---
87 |
88 | - name: Restart network
89 | ansible.builtin.systemd:
90 | name: network
91 | state: restarted
92 | ```
93 |
94 | ## Теперь объединим все эти задачи в один `playbook`
95 |
96 | в папке `/playbook` создадим файл `initSettings.yaml`
97 |
98 | ```
99 | ---
100 |
101 | - name: Init settings
102 | hosts: VMs
103 | tasks:
104 | - include_tasks: tasks/setHostname.yaml
105 | - include_tasks: tasks/enableRouting.yaml
106 | - include_tasks: tasks/setIpAddress.yaml
107 | - include_tasks: tasks/setDefaultGateway.yaml
108 | - include_tasks: tasks/restartNetwork.yaml
109 | ```
110 |
111 | тем самым мы сделали такой же сценарий, но теперь проще его воспринимать и масштабировать
--------------------------------------------------------------------------------
/ansible/createTunnelInterfaces/README.md:
--------------------------------------------------------------------------------
1 | ### Настрока шлюза по умолчанию и туннельных интерфейсов
2 |
3 | ```
4 | ---
5 |
6 | - name: Настраиваем DG для виртуальных машин
7 | hosts: VMs
8 | tasks:
9 | - name: Устанавливаем default_interface
10 | when:
11 | - ansible_facts[item].ipv4.address is defined
12 | - vars.vars.interfaces | selectattr('gw','defined')
13 | - vars.vars.interfaces | selectattr('gw','defined') | map(attribute='ifaddr') | first == ansible_facts[item].ipv4.address
14 | ansible.builtin.set_fact:
15 | default_interface: "{{ item }}"
16 | default_ip: "{{vars.vars.interfaces | selectattr('gw','defined') | map(attribute='gw') | first}}"
17 | loop: "{{ ansible_facts.interfaces }}"
18 |
19 | - name: Настраиваем шлюз для устройств
20 | when: default_interface is defined
21 | ansible.builtin.copy:
22 | dest: "/etc/net/ifaces/{{ default_interface }}/ipv4route"
23 | content: "default via {{ default_ip }}"
24 | mode: '0777'
25 |
26 | - name: Включаем маршрутизацию
27 | shell:
28 | cmd: "sed -i -e 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf"
29 |
30 | - name: Перезагружаем сеть
31 | ansible.builtin.systemd:
32 | name: network
33 | state: restarted
34 |
35 | - name: Настраиваем Tunnel для виртуальных машин
36 | hosts: VMs
37 | tasks:
38 | - name: Creating a folder for interfaces
39 | when: vars.vars.tunnels is defined
40 | ansible.builtin.file:
41 | path: "/etc/net/ifaces/{{ item['ifname'] }}"
42 | state: directory
43 | mode: '0777'
44 | loop: "{{ vars.vars.tunnels }}"
45 |
46 | - name: Creating a file with IP address
47 | when: vars.vars.tunnels is defined
48 | ansible.builtin.copy:
49 | dest: "/etc/net/ifaces/{{ item['ifname'] }}/ipv4address"
50 | content: "{{ item['ifaddr']+item['mask'] }}"
51 | mode: '0777'
52 | loop: "{{ vars.vars.tunnels }}"
53 |
54 | - name: Creating a file options for tunnel interfaces
55 | when: vars.vars.tunnels is defined
56 | ansible.builtin.copy:
57 | dest: "/etc/net/ifaces/{{ item['ifname'] }}/options"
58 | content: "TYPE=iptun
59 | TUNTYPE=gre
60 | TUNLOCAL={{ item['tunlocal'] }}
61 | TUNREMOTE={{ item['tunremote'] }}
62 | TUNOPTIONS='ttl 64'
63 | HOST={{ default_interface }}"
64 | mode: '0777'
65 | loop: "{{ vars.vars.tunnels }}"
66 |
67 | - name: Перезагружаем сеть
68 | ansible.builtin.systemd:
69 | name: network
70 | state: restarted
71 | ```
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/README.md:
--------------------------------------------------------------------------------
1 | # Подключение VSCode по SSH к серверу
2 |
3 | Проверяем что в `VSCode` установленно расширение `Remote explorer`
4 |
5 | Если нет расширения, то устанавливаем
6 |
7 |
8 |
9 |
10 |
11 | Жмакаем на плюсик и добавляем свою виртуалку в список SSH подключений
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Обнавляем список подключений
22 |
23 |
24 |
25 |
26 |
27 | Добавляем папку которая находится на удаленном устройстве
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | Ждем, когда на виртуалку установится VSCode
38 |
39 | Открываем папку `ansible`, если папки не существует, то создаем ее
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic1.png
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic2.png
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic3.png
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic4.png
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic5.png
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic6.png
--------------------------------------------------------------------------------
/ansible/init/connectVSCodeToAnsible/pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/connectVSCodeToAnsible/pic7.png
--------------------------------------------------------------------------------
/ansible/init/createVMsTemplate/README.md:
--------------------------------------------------------------------------------
1 | # Подготовка шаблона виртуальной машины для сборки стенда
2 |
3 | Нам нужно создать образ OVA с минимальным набором пакетов. Этот шаблон будет использоваться для всех виртуальных машин.
4 |
5 | Открываем ваш `ESXi` и в нем проводим стандартную установку виртуальной машины с минимальным набором пакетов.
6 |
7 | Рекомендую в параметрах виртуальной машины сделать 4 ядра для CPU и 4Гб оперативной памяти.
8 |
9 | Желательно обновить операционку до последней версии. В `ALT Linux` это делается вот так.
10 |
11 | ```
12 | apt-get update && apt-get dist-upgrade && update-kernel
13 | ```
14 |
15 | Обязательно установить `open-vm-tools-desktop` и `sshpass`
16 |
17 | ```
18 | apt-get install open-vm-tools-desktop
19 | apt-get install sshpass
20 | ```
21 |
22 | При желание вы можете предварительно поставить все пакеты, которые вы будите использовать в этом задание.
23 |
24 | Если не установите. Ничего страшного. Установим их в дальнейшем.
25 |
26 | ## Экспорт виртуальной машыны в OVA формат
27 |
28 | На понадобится следующая утилита:
29 | [Open Virtualization Format Tool (ovftool)
30 | ](./ovftool.zip)
31 |
32 | Скачиваем архив и распаковываем.
33 |
34 | Открываем `cmd` с правами администратора и переходим в папку `ovftool`, которую извлекли из архива. У меня она лежит на диске `C:\`
35 |
36 | Теперь вводим комманду такого формата
37 |
38 | `ovftool.exe `
39 |
40 | У меня эта команда будет выгдалять вот так:
41 |
42 | ```
43 | ovftool.exe vi://10.12.66.1/ALTTemplate C:\VMTemplate\alt-server-p10.2-template.ova
44 | ```
45 | где:
46 |
47 | `10.12.66.1` - ip моего ESXi
48 |
49 | `ALTTemplate` - имя виртуальной машины
50 |
51 | `C:\VMTemplate\alt-server-p10.2-template.ova` - путь на моем компьютере куда скачать шаблон
52 |
53 |
54 |
55 |
56 |
57 | Теперь давйте протестируем наш шаблон. Если ли какие-то ошибки при его разворачивание на `ESXi`.
58 |
59 | Для этого переходим на ваш `ESXi` и пункт `Create / Register VM`.
60 |
61 | В окне выбираем пункт `Deploy a virtual machine from an OVF or OVA file`
62 |
63 |
88 |
89 | Запустите созданную виртуальную машину. Убедитесь, что она запускается.
90 |
91 | После этого ее можно удалить.
92 |
93 | ## Копирование шаблона виртуальной машины на машину с Ansible
94 |
95 | Откройте `VSCode` и подключитесь через него в виртуальной машине с установленным `Ansible`
96 |
97 | Создайте отделную папку `template-vm`
98 |
99 |
100 |
101 |
102 |
103 | Теперь мышкой просто перетащите файл с шаблоном виртуальной машины в папку `template-vm`
104 |
105 |
106 |
107 |
108 |
109 | Дождитесь, когда процесс копирования завершится
110 |
111 |
--------------------------------------------------------------------------------
/ansible/init/installPython3.12/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/installPython3.12/pic1.png
--------------------------------------------------------------------------------
/ansible/init/installPython3.12/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/ansible/init/installPython3.12/pic2.png
--------------------------------------------------------------------------------
/ansible/mount-local-repo/README.md:
--------------------------------------------------------------------------------
1 | # Монтируем локальный репозиторий на DVD диске
2 |
3 |
4 | Законченный `play-book`:
5 | ```
6 | ---
7 |
8 | - name: Подключаем репозиторой на DVD диске.
9 | hosts: VMs
10 | gather_facts: no
11 | tasks:
12 | - name: Выключаем виртуальные машины
13 | community.vmware.vmware_guest:
14 | validate_certs: false
15 | hostname: '{{ esxi_hostname }}'
16 | username: '{{ esxi_username }}'
17 | password: '{{ esxi_password }}'
18 | name: "{{ inventory_hostname }}"
19 | state: poweredoff
20 | delegate_to: localhost
21 |
22 | - name: Подключаем DVD с репозиторием
23 | community.vmware.vmware_guest:
24 | validate_certs: false
25 | hostname: '{{ esxi_hostname }}'
26 | username: '{{ esxi_username }}'
27 | password: '{{ esxi_password }}'
28 | name: "{{ inventory_hostname }}"
29 | cdrom:
30 | - controller_number: 0
31 | unit_number: 0
32 | state: present
33 | type: iso
34 | iso_path: "[{{ esxi_datastore }}] ALT Linux 10.1 repo.iso"
35 | delegate_to: localhost
36 |
37 | - name: Включаем виртуальные машины
38 | community.vmware.vmware_guest:
39 | validate_certs: false
40 | hostname: '{{ esxi_hostname }}'
41 | username: '{{ esxi_username }}'
42 | password: '{{ esxi_password }}'
43 | name: "{{ inventory_hostname }}"
44 | state: poweredon
45 | delegate_to: localhost
46 |
47 | - name: Пауза 20 секунд для дозагрузки виртуалок
48 | ansible.builtin.pause:
49 | seconds: 20
50 |
51 | - name: Меняем репозиторий на DVD диск
52 | shell: |
53 | rm /etc/apt/sources.list.d/alt.list
54 | apt-repo add 'rpm-dir file:/mnt x86-64 classic'
55 |
56 | - name: Монтируем DVD диск с репозиторием в директорию /mnt/x86-64/
57 | shell: |
58 | umount -a
59 | mkdir -p /mnt/x86-64/
60 | mount /dev/sr0 /mnt/x86-64/
61 | apt-get update
62 | ```
--------------------------------------------------------------------------------
/задание/README.md:
--------------------------------------------------------------------------------
1 | # Образец задания для демонстрационного экзамена по комплекту оценочной документации.
2 | Предисловие:
3 |
4 | Администрирование сетей и систем является одной из ключевых задач при создании и поддержке информационной инфраструктуры организации. Качественная настройка и управление сетевыми компонентами, серверами и сервисами играет важную роль в обеспечении стабильной и безопасной работы всей системы.
5 |
6 | Данное задание представляет собой комплексную программу по администрированию, которая включает в себя несколько модулей. Каждый модуль охватывает различные аспекты настройки и поддержки системы, начиная с базовой конфигурации устройств и заканчивая реализацией сложных сервисов и технологий.
7 |
8 | Модуль А посвящен базовой настройке устройств, включая присвоение имен, расчет IP-адресации и настройку внутренней динамической маршрутизации. Эти шаги позволяют создать основу для дальнейшего развития и масштабирования сети.
9 |
10 | Модуль Б фокусируется на настройке DNS-сервера, синхронизации времени между устройствами, реализации файлового SMB(NFS)-сервера и других сервисов, таких как мониторинг и центр сертификации. Все эти шаги направлены на обеспечение безопасности, доступности и функциональности системы.
11 |
12 | Модуль В включает в себя настройку защищенного туннеля между офисами, управление трафиком и конфигурирование вебсервера. Эти меры способствуют обеспечению безопасности коммуникаций, контролю трафика и предоставлению доступа к веб-приложениям.
13 |
14 | Цель данного задания состоит в том, чтобы разработать и настроить комплексную систему, которая удовлетворяет требованиям безопасности, функциональности и производительности. Работа в рамках этого задания требует глубоких знаний и навыков в области администрирования сетей и ПА, ГИА/ДЭ БУ, ГИА/ДЭ ПУ29 систем, а также умения применять современные технологии и методы для достижения поставленных целей.
15 |
16 | Учтите, что в некоторых заданиях необходимо составить отчёт о проделанной работе в электронном виде.
17 |
--------------------------------------------------------------------------------
/задание/topology.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/задание/topology.png
--------------------------------------------------------------------------------
/задание/Модуль 1 - Задание №1.md:
--------------------------------------------------------------------------------
1 | # Модуль 1 - Задание №1
2 |
3 | 
4 | 1. Выполните базовую настройку всех устройств:
5 | * Присвоить имена в соответствии с топологией
6 | * Рассчитайте IP-адресацию IPv4. Необходимо заполнить таблицу №1, чтобы эксперты могли проверить ваше рабочее место.
7 | * Пул адресов для сети офиса `BRANCH` - не более 16
8 | * Пул адресов для сети офиса `HQ` - не более 64
9 |
10 | | HOSTNAME | INTERFACE | IP | MASK | DG |
11 | | ------------- | ------------- | ---------- | ---------- | ----------|
12 | | CLI |
13 | | ISP |
14 | | HQ-R |
15 | | HQ-SRV |
16 | | BR-R |
17 | | BR-SRV |
18 |
19 |
20 | 2. Настройте внутреннюю динамическую маршрутизацию по средствам FRR. Выберите и обоснуйте выбор протокола динамической маршрутизации из расчёта, что в дальнейшем сеть будет масштабироваться.
21 | - Составьте топологию сети `L3`
22 |
23 | 3. Настройте автоматическое распределение IP-адресов на роутере `HQ-R`.
24 | - Учтите, что у сервера должен быть зарезервирован адрес
25 |
26 | 4. Настройте локальные учётные записи на всех устройствах в соответствии с таблицей 2.
27 |
28 | | Учетная запись | Пароль | Устройство |
29 | | -------------- | ------ | ---------- |
30 | | admin | P@ssw0rd | CLI, HQ-SRV, HQ-R |
31 | | branch_admin | P@ssw0rd | BR-SRV BR-R |
32 | | network_admin | P@ssw0rd | HQ-R BR-R BR-SRV |
33 |
34 | 5. Измерьте пропускную способность сети между двумя узлами `HQ-R-ISP` по средствам утилиты `iperf3`. Предоставьте описание пропускной способности канала со скриншотами
35 |
36 | 6. Составьте `backup` скрипты для сохранения конфигурации сетевых устройств, а именно `HQ-R BR-R`. Продемонстрируйте их работу.
37 |
38 | 7. Настройте подключение по `SSH` для удалённого конфигурирования устройства HQ-SRV по порту 2222. Учтите, что вам необходимо перенаправить трафик на этот порт по средствам контролирования трафика.
39 |
40 | 8. Настройте контроль доступа до `HQ-SRV` по `SSH` со всех устройств, кроме `CLI`.
--------------------------------------------------------------------------------
/решение/Модуль 1/README.md:
--------------------------------------------------------------------------------
1 | # Модуль 1
2 |
3 | [Задание](../../задание/Модуль%201%20-%20Задание%20№1.md)
4 |
5 | Решение сделанно на системе виртуализации ESXi 8.0
6 |
7 |
8 |
9 |
10 | 0. Сборка стенда
11 | - 0.1 Создание виртуальных подключений [->](./createStend/createVirtualConnect/README.md)
12 | - 0.2 Создание виртуальной машины [->](./createStend/createVirtualMashin/README.md)
13 | - 0.3 Устанорвка Alt Linux [->](./createStend/installAltLinux/README.md)
14 | - 0.4 (Опционально) Настройка внеполосного управления виртуальными машинами [->](./createStend/connectToConsole/README.md)
15 | - 0.5 Подключение виртуальной машины к интернету [->](./createStend/connectVirtualMashinToInternet/README.md)
16 | - 0.6 Обновление до последнией версии [->](./createStend/updateAltLinux/README.md)
17 | - 0.7 Установка NMTUI [->](./createStend/instalNMTui/README.md)
18 | - 0.8 Соединение виртуальных машин между собой [->](./createStend/connectingVirtualMashin/README.md)
19 | - 0.9 Создание локального репозитория [->](./createStend/createLocalRepo/README.md)
20 | 1. Базовая настройка
21 | - 1.1 Настройка HOSTNAME [->](./createIPAddresses/assignHostname/README.md)
22 | - 1.2 Заполнение таблицы [->](./createIPAddresses/README.md)
23 | - 1.3 Настройка IP на интерфейсы способ 1 [->](./createIPAddresses/assignIPAddressesNMTui/README.md)
24 | - 1.4 Настройка IP на интерфейсы способ 2 [->](./createIPAddresses/assignIPAdressesEtcnet/README.md)
25 | - 1.4.1 Настройка IP на интерфейсы HQ-R [->](./createIPAddresses/assignIPAdressesEtcnet/HQ-R.md)
26 | - 1.4.2 Настройка IP на интерфейсы BR-R [->](./createIPAddresses/assignIPAdressesEtcnet/BR-R.md)
27 | - 1.4.3 Настройка IP на интерфейсы HQ-SRV [->](./createIPAddresses/assignIPAdressesEtcnet/HQ-SRV.md)
28 | - 1.4.3 Настройка IP на интерфейсы BR-SRV [->](./createIPAddresses/assignIPAdressesEtcnet/BR-SRV.md)
29 | - 1.5 Настройка туннелей [->](./createIPAddresses/createTunnel/README.md)
30 | 2. Настройка динамической маршрутизации
31 | - 2.1 Установка FRR [->](./createDynamicRouting/installFRRtoInternet/README.md)
32 | - 2.2 Настройка FRR [->](./createDynamicRouting/settingsFRR/README.md)
33 | 3. Настройка автоматического распределения IP-адресов на роутере HQ-R [->](./createDHCPServer//README.md)
34 | 4. Создание пользователей [->](./createUserName/README.md)
35 | 5. Проверка пропускной способности при помощи `iperf3` [->](./iperf/README.md)
36 | 6. Скрипт для резервного копирования FRR [->](./backup/README.md)
--------------------------------------------------------------------------------
/решение/Модуль 1/backup/README.md:
--------------------------------------------------------------------------------
1 | # Создаем резервную копию настроек FRR
2 |
3 | Конфигурация для FRR храниться в /etc/frr/frr.conf
4 |
5 | Нужно ее просто копировать по расписанию
6 |
7 | Создадим папку для хранения резервной копии
8 |
9 | ```
10 | mkdir /vat/backup
11 | ```
12 |
13 | Добавим задание в планировщик cronetab
14 |
15 | ```
16 | cronetab -e
17 | ```
18 |
19 | ```
20 | 0 0 * * * cp /etc/frr/frr.conf /vat/backup
21 | ```
22 |
23 | Конфигурация будет копироваться каждый день в 00:00
--------------------------------------------------------------------------------
/решение/Модуль 1/createDHCPServer/README.md:
--------------------------------------------------------------------------------
1 | # Настройка автоматической раздачи IP адресов на HQ-R
2 |
3 | Подключаем интернет, как это дедали при установке [frr](../createDynamicRouting/installFRRtoInternet/README.md)
4 |
5 | Подробнее про [DHCP-сервер](https://www.altlinux.org/DHCP_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80)
6 |
7 | Устанавливаем `dhcp-server`
8 |
9 | ```
10 | apt-get install dhcp-server
11 | ```
12 |
13 | В первую очередь настроим на каком интерфейсе будет работать DHCP-сервер
14 |
15 | В моем случае это `ens192`.
16 |
17 | Отредактируем файл `/etc/sysconfig/dhcpd`
18 |
19 | ```
20 | sed -i -e 's/DHCPDARGS=/DHCPDARGS=ens192/g' /etc/sysconfig/dhcpd
21 | ```
22 |
23 | Проверьте, что все получилось правильно
24 |
25 | ```
26 | cat /etc/sysconfig/dhcpd
27 | ```
28 |
29 |
30 |
31 |
32 |
33 | В комплекте с DHCP-сервером есть примеры конфигурации, которые находятся здесь `/etc/dhcp/`
34 |
35 | Воспользуемся самым простым примером
36 |
37 | ```
38 | cp /etc/dhcp/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
39 | ```
40 |
41 | Теперь редактируем `/etc/dhcp/dhcpd.conf`
42 |
43 | ```
44 | vim /etc/dhcp/dhcpd.conf
45 | ```
46 |
47 | Приводим его к такому виду .
48 |
49 | ```
50 | # See dhcpd.conf(5) for further configuration
51 |
52 | ddns-update-style none;
53 |
54 | subnet 192.168.0.0 netmask 255.255.255.128 {
55 | option routers 192.168.0.1;
56 | option subnet-mask 255.255.255.128;
57 |
58 | # option nis-domain "domain.org";
59 | # option domain-name "domain.org";
60 | # option domain-name-servers 192.168.1.1;
61 |
62 | range dynamic-bootp 192.168.0.2 192.168.0.100;
63 | default-lease-time 21600;
64 | max-lease-time 43200;
65 |
66 | host HQ-SRV
67 | {
68 | hardware ethernet 00:50:56:b6:89:75;
69 | fixed-address 192.168.0.2;
70 | }
71 | }
72 | ```
73 |
74 | ВНИМАНИЕ!.
75 | > [!CAUTION]
76 | > Кусок конфига, который относится к резервированию IP адреса содержит MAC-адрес `HQ-SRV`. У каждого он будет свовой
77 |
78 |
79 | ```
80 | host HQ-SRV
81 | {
82 | hardware ethernet 00:50:56:b6:89:75;
83 | fixed-address 192.168.0.2;
84 | }
85 | ```
86 |
87 | Включаем DHCP-сервер
88 |
89 | ```
90 | systemctl enable --now dhcpd
91 | ```
92 |
93 | Проверка
94 |
95 | ```
96 | systemctl status dhcpd
97 | ```
98 |
99 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createDHCPServer/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createDHCPServer/pic1.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createDHCPServer/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createDHCPServer/pic2.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createDHCPServer/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createDHCPServer/pic3.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createDynamicRouting/installFRRtoInternet/README.md:
--------------------------------------------------------------------------------
1 | # Настройка динамической маршрутизации
2 |
3 | Для настройки маршрутизации нужно установить пакет frr на HQ-R и BR-R.
4 |
5 | Но проблема в отсутствие интернета на этих устройствах. Здесь могут быть два подхода. Подключить установочный диск и установить с него, а можно временно подключить интернет.
6 |
7 | Попробуем сделать методом подключения интернета.
8 |
9 | ### HQ-R
10 |
11 | Выключаем HQ-R и добавляем еще один интерфейс с сетью VMnetwork
12 |
13 |
14 |
15 |
16 |
17 | Назначим ему свободный IP из сети VMnetwork. У меня это сеть 10.12.66.0/24
18 |
19 | - 10.12.66.1 занят под сам ESXi
20 | - 10.12.66.2 занят под ISP
21 | - 10.12.66.3 назначим HQ-R
22 | - 10.12.66.4 назначим BR-R
23 |
24 | Настраиваем IP, шлюз и DNS на ens256
25 |
26 | Удаляем шлюз с ens224. После установки FRR нужно будет все вернуть назад
27 |
28 |
29 | ```
30 | mkdir /etc/net/ifaces/ens256
31 | echo "TYPE=eth
32 | DISABLED=no
33 | NM_CONTROLLED=no
34 | BOOTPROTO=static
35 | CONFIG_IPv4=yes" > /etc/net/ifaces/ens256/options
36 | echo 10.12.66.3/24 > /etc/net/ifaces/ens256/ipv4address
37 | echo default via 10.12.66.254 > /etc/net/ifaces/ens256/ipv4route
38 | echo nameserver 8.8.8.8 > /etc/net/ifaces/ens256/resolv.conf
39 | rm -rf /etc/net/ifaces/ens224/ipv4route
40 | systemctl restart network
41 | ```
42 |
43 | Проверка
44 |
45 |
46 |
47 |
48 |
49 | Может быть, что ESXi будет блокировать трафик. Добавим разрешения.
50 |
51 |
16 |
17 | Для удобства можно изменить имя профиля.
18 |
19 |
20 |
21 |
22 |
23 | После настройки всех IP адресов нужно перезагрузить интерфейсы. Это можно сделать в `nmtui`
24 |
25 |
26 |
27 |
28 |
29 | Выключаем, затем сразу включаем каждый интерфейс
30 |
31 |
32 |
33 |
34 |
35 | Либо коммандой в консоле
36 |
37 | ```
38 | systemctl restart network.service
39 | ```
40 |
41 | Должна получиться вот такая картина в `ip a`
42 |
43 |
44 |
45 |
46 |
47 | Теперь на каждом устройстве делаем тоже самое.
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic1.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic2.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic3.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic4.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic5.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/assignIPAddressesNMTui/pic6.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAdressesEtcnet/BR-R.md:
--------------------------------------------------------------------------------
1 | # Настойка сети на BR-R
2 |
3 | Смотрим какие интерфейсы существуют
4 |
5 | ```
6 | ip a
7 | ```
8 |
9 | Проверяем существуют ли директории для интерфейсов
10 |
11 | ```
12 | ls -l /etc/net/ifaces/
13 | ```
14 |
15 | Если не существуют, то создаем
16 |
17 | ```
18 | mkdir /etc/net/ifaces/ens192
19 | mkdir /etc/net/ifaces/ens224
20 | ```
21 |
22 | Создаем файл `/etc/net/ifaces/ens192/options`
23 |
24 | ```
25 | echo "TYPE=eth
26 | DISABLED=no
27 | NM_CONTROLLED=no
28 | BOOTPROTO=static
29 | CONFIG_IPv4=yes" > /etc/net/ifaces/ens192/options
30 | ```
31 |
32 | Копируем `/etc/net/ifaces/ens192/options` в `/etc/net/ifaces/ens224/`
33 |
34 | ```
35 | cp /etc/net/ifaces/ens192/options /etc/net/ifaces/ens224/
36 | ```
37 |
38 | Настраиваем IP адреса на интерфейсах
39 |
40 | ```
41 | echo 2.2.2.2/30 > /etc/net/ifaces/ens192/ipv4address
42 | echo 192.168.0.129/27 > /etc/net/ifaces/ens224/ipv4address
43 | ```
44 |
45 | Добавим маршрут по умолчанию в сторону ISP:
46 |
47 | ```
48 | echo default via 2.2.2.1 > /etc/net/ifaces/ens192/ipv4route
49 | ```
50 |
51 | Включаем маршрутизацию
52 |
53 | ```
54 | sed -i -e 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf
55 | ```
56 |
57 | Перезагружаем виртуалку
58 |
59 | ```
60 | systemctl reboot
61 | ```
62 |
63 | Проверяем, что IP адреса настроились
64 |
65 | ```
66 | ip a
67 | ```
68 |
69 | Если до этого настраивали ISP должен работать ping
70 |
71 | ```
72 | ping 2.2.2.1
73 | ```
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAdressesEtcnet/BR-SRV.md:
--------------------------------------------------------------------------------
1 | # Настойка сети на BR-SRV
2 |
3 | Смотрим какие интерфейсы существуют
4 |
5 | ```
6 | ip a
7 | ```
8 |
9 | Проверяем существуют ли директории для интерфейсов
10 |
11 | ```
12 | ls -l /etc/net/ifaces/
13 | ```
14 |
15 | Если не существуют, то создаем
16 |
17 | ```
18 | mkdir /etc/net/ifaces/ens192
19 | ```
20 |
21 | Создаем файл `/etc/net/ifaces/ens192/options`
22 |
23 | ```
24 | echo "TYPE=eth
25 | DISABLED=no
26 | NM_CONTROLLED=no
27 | BOOTPROTO=static
28 | CONFIG_IPv4=yes" > /etc/net/ifaces/ens192/options
29 | ```
30 |
31 | Настраиваем IP адреса на интерфейсах
32 |
33 | ```
34 | echo 192.168.0.130/25 > /etc/net/ifaces/ens192/ipv4address
35 | ```
36 |
37 | Добавим маршрут по умолчанию в сторону HQ-R:
38 |
39 | ```
40 | echo default via 192.168.0.129 > /etc/net/ifaces/ens192/ipv4route
41 | ```
42 |
43 | Включаем маршрутизацию
44 |
45 | ```
46 | sed -i -e 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf
47 | ```
48 |
49 | Перезагружаем виртуалку
50 |
51 | ```
52 | systemctl reboot
53 | ```
54 |
55 | Проверяем, что IP адреса настроились
56 |
57 | ```
58 | ip a
59 | ```
60 |
61 | Если до этого настраивали ISP должен работать ping
62 |
63 | ```
64 | ping 192.168.0.129
65 | ```
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAdressesEtcnet/HQ-R.md:
--------------------------------------------------------------------------------
1 | # Настойка сети на HQ-R
2 |
3 | Смотрим какие интерфейсы существуют
4 |
5 | ```
6 | ip a
7 | ```
8 |
9 | Проверяем существуют ли директории для интерфейсов
10 |
11 | ```
12 | ls -l /etc/net/ifaces/
13 | ```
14 |
15 | Если не существуют, то создаем
16 |
17 | ```
18 | mkdir /etc/net/ifaces/ens192
19 | mkdir /etc/net/ifaces/ens224
20 | ```
21 |
22 | Создаем файл `/etc/net/ifaces/ens192/options`
23 |
24 | ```
25 | echo "TYPE=eth
26 | DISABLED=no
27 | NM_CONTROLLED=no
28 | BOOTPROTO=static
29 | CONFIG_IPv4=yes" > /etc/net/ifaces/ens192/options
30 | ```
31 |
32 | Копируем `/etc/net/ifaces/ens192/options` в `/etc/net/ifaces/ens224/`
33 |
34 | ```
35 | cp /etc/net/ifaces/ens192/options /etc/net/ifaces/ens224/
36 | ```
37 |
38 | Настраиваем IP адреса на интерфейсах
39 |
40 | ```
41 | echo 192.168.0.1/25 > /etc/net/ifaces/ens192/ipv4address
42 | echo 1.1.1.2/30 > /etc/net/ifaces/ens224/ipv4address
43 | ```
44 |
45 | Добавим маршрут по умолчанию в сторону ISP:
46 |
47 | ```
48 | echo default via 1.1.1.1 > /etc/net/ifaces/ens224/ipv4route
49 | ```
50 |
51 | Включаем маршрутизацию
52 |
53 | ```
54 | sed -i -e 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf
55 | ```
56 |
57 | Перезагружаем виртуалку
58 |
59 | ```
60 | systemctl reboot
61 | ```
62 |
63 | Проверяем, что IP адреса настроились
64 |
65 | ```
66 | ip a
67 | ```
68 |
69 | Если до этого настраивали ISP должен работать ping
70 |
71 | ```
72 | ping 1.1.1.1
73 | ```
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAdressesEtcnet/HQ-SRV.md:
--------------------------------------------------------------------------------
1 | # Настойка сети на HQ-SRV
2 |
3 | Смотрим какие интерфейсы существуют
4 |
5 | ```
6 | ip a
7 | ```
8 |
9 | Проверяем существуют ли директории для интерфейсов
10 |
11 | ```
12 | ls -l /etc/net/ifaces/
13 | ```
14 |
15 | Если не существуют, то создаем
16 |
17 | ```
18 | mkdir /etc/net/ifaces/ens192
19 | ```
20 |
21 | Создаем файл `/etc/net/ifaces/ens192/options`
22 |
23 | ```
24 | echo "TYPE=eth
25 | DISABLED=no
26 | NM_CONTROLLED=no
27 | BOOTPROTO=static
28 | CONFIG_IPv4=yes" > /etc/net/ifaces/ens192/options
29 | ```
30 |
31 | Настраиваем IP адреса на интерфейсах
32 |
33 | ```
34 | echo 192.168.0.2/25 > /etc/net/ifaces/ens192/ipv4address
35 | ```
36 |
37 | Добавим маршрут по умолчанию в сторону HQ-R:
38 |
39 | ```
40 | echo default via 192.168.0.1 > /etc/net/ifaces/ens192/ipv4route
41 | ```
42 |
43 | Включаем маршрутизацию
44 |
45 | ```
46 | sed -i -e 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/net/sysctl.conf
47 | ```
48 |
49 | Перезагружаем виртуалку
50 |
51 | ```
52 | systemctl reboot
53 | ```
54 |
55 | Проверяем, что IP адреса настроились
56 |
57 | ```
58 | ip a
59 | ```
60 |
61 | Если до этого настраивали ISP должен работать ping
62 |
63 | ```
64 | ping 192.168.0.1
65 | ```
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/assignIPAdressesEtcnet/README.md:
--------------------------------------------------------------------------------
1 | # Назначение IP адреса через etcnet
2 |
3 | Если `NetworkManager` не установлен, то можно использовать встроенную систему `etcnet`
4 |
5 | Подробнее про `etcnet` [здесь](https://www.altlinux.org/Etcnet#%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_/etc/net)
6 |
7 | Для каждого интрефейса из `ip a` должна быть создана однаимённая директория в `/etc/net/ifaces/`
8 |
9 |
10 |
11 |
12 |
13 | Если таких директорий не существует, то нужно их создать
14 |
15 | ```
16 | mkdir /etc/net/ifaces/ens161
17 | mkdir /etc/net/ifaces/ens192
18 | mkdir /etc/net/ifaces/ens224
19 | mkdir /etc/net/ifaces/ens256
20 | ```
21 |
22 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/createTunnel/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/createTunnel/pic1.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createIPAddresses/createTunnel/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createIPAddresses/createTunnel/pic2.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/README.md:
--------------------------------------------------------------------------------
1 | # Подключение к виртуальной машине через консоль
2 |
3 | Управление виртуальной машиной через веб интерфейс не очень удобно. Например нет возможности копирования через буфер обмена рабочей машины.
4 |
5 | Для этого можно сделать внеполосное управление виртуальной машиной подключаясь непосредственно к ESXi серверу.
6 |
7 | Для этого добавим дополнительное устройство `Serial port` в виртуальной машине.
8 |
9 |
10 |
11 |
12 |
13 | Для каждой виртуалки порт должен быть уникальным.
14 | Например если есть две машины ISP и HQ-R, то для ISP делаем порт 5001, а для HQ-R - 5002
15 |
16 |
17 |
18 |
19 | В самой ОС нужно включить службу, добавить ее в автозагрузку и проверить статус:
20 | ```
21 | systemctl start serial-getty@ttyS0.service
22 | systemctl enable serial-getty@ttyS0.service
23 | systemctl status serial-getty@ttyS0.service
24 | ```
25 |
26 |
27 |
28 |
29 |
30 | #### Чтобы ESXi не блокировал трафик идущий на serial интерфейс виртуальных машин, нужно включить правило `remoteSerialPort` в фаерволе самого ESXi
31 |
32 | Проверим список правил Firewall
33 | Теперь нужно правило `remoteSerialPort` переключить в состояние `true`:
34 |
35 |
36 |
37 |
38 |
39 | Пробуем подключиться к нашей виртуальной машине. В качестве IP адреса выступает адрес ESXi сервера
40 |
41 |
42 |
43 |
44 | По умолчанию пользователю `root` запрещен доступ через Serial консоль, поэтому залогинимся обычным пользователем.
45 |
46 |
47 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectToConsole/pic1.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectToConsole/pic2.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectToConsole/pic3.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectToConsole/pic4.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectToConsole/pic8.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectToConsole/pic9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectToConsole/pic9.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectVirtualMashinToInternet/README.md:
--------------------------------------------------------------------------------
1 | # Подключение виртуальной машины к Интернет.
2 |
3 | Если при установке ОС вы следовали моей инструкции, то интернет у вас уже подключен. Давайте проверим это.
4 | Попробуйте сделать пинг любого сайта в интернете.
5 |
6 | ```
7 | ping mail.ru
8 | ```
9 |
10 | Если в результате выполнения команды ping вы видите вот такую картину, то я вас поздравляю! Интернет подключен и дальнейшие шаги не нужны.
11 |
12 | > [!CAUTION]
13 | > Настоятельно рекомендую ознакомиться с дальнейшей инструкцией, чтобы знать что делать если что-то пошло не так
14 |
15 |
16 |
17 |
18 |
19 | Чтобы подключить любую виртуальную машину к Интернету достаточно подключить ее сетевой интерфейс к `VMnetwork` и задать IP из тойже подсети, что и ESXi. Не забывайте, что еще нужно задать `IP шлюза` и `DNS сервера`.
20 |
21 |
22 |
23 |
24 |
25 | Если на виртуальной машине есть несколько интерфейсов, то не всегда понятно как они соотносятся с интерфейсами в самой ОС.
26 | Идентифицировать их можно по mac-адресу
27 |
28 | В данном примере в ОС интерфейс под `номером 3`, а в списке оборудования виртуальной машины `Network Adapter 1`
29 |
30 |
31 |
32 |
33 |
34 | ## Настройка IP адреса
35 |
36 | В ALT Linux по умолчанию нет всеми любимого редактора `nano`, поэтому будем пользоваться `vim`.
37 |
38 | Надеюсь вы уже нашли мануал как пользоваться `VIM`. Не переживайте, дальше это будем делать более простым способом.
39 |
40 | ```
41 | i - режим редактирования
42 | - выход из режима редактирования
43 | :q! - выйти без сохранения
44 | :wq - выйти с сохранением
45 | ```
46 |
47 | В файл /etc/net/ifaces/ens192/ipv4address прописываем IP.
48 |
49 | > [!CAUTION]
50 | > Если вы настроете на виртуалке такой же `IP` как и на `ESXi`, то вы `потеряете` доступ к вашему стенду полностью
51 |
52 | ```
53 | vim /etc/net/ifaces/ens192/ipv4address
54 | ```
55 |
56 |
69 |
70 | Зададим шлюз. Это такой же IP как и шлюз у вашего ESXi
71 |
72 | ```
73 | vim /etc/net/ifaces/ens192/ipv4route
74 | ```
75 |
76 |
77 |
78 |
79 |
80 | Чтобы имена в интернете преобразовывались в IP (mail.ru, ya.ru ит т.д.), нужен DNS сервер. Также укажем его
81 |
82 | ```
83 | vim /etc/net/ifaces/ens192/resolv.conf
84 | ```
85 |
86 |
87 |
88 |
89 |
90 | После внесения изменений нужно перезапустить службу network
91 |
92 | ```
93 | systemctl restart network
94 | ```
95 |
96 | Теперь проверим, что у нас получилось:
97 |
98 | ```
99 | systemctl status network
100 | ```
101 |
102 | ```
103 | ip a
104 | ```
105 |
106 |
8 |
9 | Включаем виртуалку и через `ip a` определяем кто из них кто.
10 |
11 |
12 |
13 |
14 |
15 | Смотрим на топологию и подключаем в соответствующие сети. MAC адреса у вас будут отличаться! Будте внимательны.
16 |
17 |
18 |
19 |
20 |
21 | Такие действия проделываем с каждой виртуалкой.
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectingVirtualMashin/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectingVirtualMashin/pic1.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectingVirtualMashin/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectingVirtualMashin/pic2.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/connectingVirtualMashin/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/connectingVirtualMashin/pic3.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/README.md:
--------------------------------------------------------------------------------
1 | # Создание локального репозитория
2 |
3 | Чтобы устанавливать пакеты на виртуалки без Интернерта нужно сделать `ISO` образ репозитория и монтировать его как `DVD` диск к каждой виртуалке.
4 |
5 | Он будет храниться в `Datastore` на самом `ESXi`. Учитывайте, что полный репозиторий classic весит порядка 32 Gb.
6 |
7 | Можно весь репозиторий не качать, а скачать только необходимые пакеты и их зависимости.
8 |
9 | Мы пойдем по универсальному пути. Будем делать полный репозиторий.
10 |
11 | ### Скачиваем пакеты с офф сайта [здесь](http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/branch/x86_64/RPMS.classic/)
12 |
13 | Создаем ISO образ. Название папки обязательно должно начинаться на `RPMS`.
14 |
15 |
16 |
17 |
18 |
19 | Закидываем это образ на ESXi
20 |
21 |
22 |
23 |
24 |
25 | Подключаем к виртуалке
26 |
27 |
28 |
29 |
30 |
31 | Проверяем, что виртуалка его видит. Если его нет, то выключите виртуалку. Подключите диск. Включите виртуалку. Убедитесь, что стоит галка `Connect` напротив `CD/DVD Drive`
32 |
33 | ```
34 | lsblk
35 | ```
36 |
37 |
38 |
39 |
40 |
41 | Создаем папку куда будем монтировать диск
42 |
43 | ```
44 | mkdir -p /mnt/x86-64/
45 | ```
46 |
47 | Монтируем диск
48 |
49 | ```
50 | mount /dev/sr0 /mnt/x86-64/
51 | ```
52 |
53 | Должно получиться вот так.
54 |
55 |
82 |
83 | Обнавляем репозитории. Репозиторий большой, процесс может занимать некоторое время
84 |
85 | ```
86 | apt-get update
87 | ```
88 |
89 | Пробуем установить `iperf3`
90 |
91 | ```
92 | apt-get install -y iperf3
93 | ```
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic1.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic2.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic3.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic4.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic5.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic6.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic7.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createLocalRepo/pic8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netadmin-str/demo2024/880cfc3358953b0bf03e164d93d82ed59e4e5086/решение/Модуль 1/createStend/createLocalRepo/pic8.png
--------------------------------------------------------------------------------
/решение/Модуль 1/createStend/createVirtualConnect/README.md:
--------------------------------------------------------------------------------
1 | ## Создание виртуальных "проводов" для подключения виртуальных машин друг к другу
2 | Прежде чем собирать топологию нужно подумать как отделить трафик интерфейсов виртуальных машин друг от друга.
3 | Для этого создадим виртуальный коммутатор, который в дальнейшем разобъем на vlan. Каждая vlan будет служить отдельной канальной средой для подключения виртуальных машин друг к другу.
4 |
5 |
6 |
7 |
8 | Чтобы исключить блокировку трафика виртуалок сделаем настройки безопасности `Accept`
9 |
10 |
11 |
12 |
13 | Создадим `Port Group` к которым будем подключать виртуальные машины.
14 | Важно, чтобы номера vlan у каждой `Port Group` были разные. Также следите чтобы создаваемые `Port Group` были подключены к созданному прежде вами виртуальному коммутатору.
15 |
10 |
11 | На этапе выбора шаблона операционной системы в списке нет шаблона для ALT Linux, поэтому выберем примерно похожую конфигурацию.
12 |
13 |
14 |
15 |
16 |
17 | Название места хранения у вас может отличаться от моего, но это не важно. Просто выберите любой доступный диск. Скорее всего у вас он будет один и с другими параметрами объема.
18 |
19 |
20 |
21 |
22 |
23 | 1. Чтобы упростить себе жизнь и не заниматься ручным созданиев разделов на диске, объем диска для виртуалки нужно сделать больше 26 Gb. Возьмём немного с запасом и изменим на 32 Gb.
24 | 2. Предварительно выпустим нашу виртуалку в интернет, чтобы обновить до последней версии и установим пакеты, которые потребуются на первое время. Т.е. этот интерфейс подключен к тойже сети, что и ваш ESXi.
25 | 3. В хранилище ESXi должен быть образ ОС с Alt Server. Выберите его. Если такого образа нет, нужно его туда загрузить. Последнюю актуальну версию можно взять [здесь](https://www.altlinux.org/Releases/Download)
26 |
27 | Нажимаем Next и Finish
28 |
29 |
30 |
31 |
32 | Виртуальная машина была создана. Теперь ее можно запускать.
33 |
35 |
36 | Поздравляю! Теперь вы можете радактировать интерфейсы без страшного VIM-a
37 |
38 | Осталось только убедиться, что вы видите все интерфейсы из `ip a` внутри `nmtui`.
39 | Если каких-то интерфейсов нет, то проверяем `/etc/net/ifaces/[имя интерфейса]/options`
40 |
41 | Например:
42 | ```
43 | cat /etc/net/ifaces/ens161/options
44 | ```
45 |
46 |