Модуль 1. Настройка сетевой инфраструктуры — инструкция (псевдонимы)
Перед запуском ВМ: в Proxmox → Hardware → сетевой адаптер → VLAN Tag задайте тег для клиентских ВМ HQ (п.4): HQ-SRV — @@VID_VLAN100@@, HQ-CLI — @@VID_VLAN200@@. Без тега трафик не попадёт в нужный VLAN на HQ-RTR. При другом варианте задания сверьте номера VLAN с п.4; на маршрутизаторе тег задаётся внутри ВМ (
VID=…).
0.1. Таблица замены @@псевдонимов@@
Скопируйте таблицу в блокнот. Колонку «Ваше значение» заполните по листу задания. Затем в инструкции (Ctrl+H): для каждого @@…@@ — «Заменить всё».
Как читать токены
| Токен | Что подставлять | Где |
|---|---|---|
@@PLEN_*@@ |
Только длина префикса (число после /): 27, 28, 30 |
192.168.100.1/@@PLEN_VLAN100@@, @@ISP_HQ_ADDR@@/@@PLEN_ISP_HQ@@ |
@@*_ADDR@@ |
Хост без маски (п.2, п.6): 172.16.1.1, 10.10.10.2 |
default via, TUNLOCAL/TUNREMOTE, ping, A-записи DNS |
@@VID_*@@ |
Номер VLAN (п.4): 100, 200, 999 |
VID=…, enp7s2.NNN, Proxmox VLAN Tag, dnsmasq/OSPF |
Октеты 192.168.* — литералы; при смене только маски в п.1 — @@PLEN_*@@. На линках ISP (п.2) при смене сети — @@*_ADDR@@ и @@PLEN_ISP_*@@. hq-cli в DNS — IP с HQ-CLI после DHCP (§6 → §7). Подставляйте сначала все @@PLEN_*@@, потом @@*_ADDR@@.
GRE (п.6): в задании нет конкретных адресов туннеля — только GRE или IPIP. Если в листе адреса не указаны, оставьте образец:
@@GRE_HQ_ADDR@@=10.10.10.1,@@GRE_BR_ADDR@@=10.10.10.2,@@PLEN_GRE@@=30.
| Псевдоним | Образец (задание.txt) |
Ваше значение | Пункт | Примечание |
|---|---|---|---|---|
@@PORT_SSH@@ |
2026 |
п.5 | sshd_config на HQ-SRV, BR-SRV |
|
@@LOGIN_SSH@@ |
sshuser |
п.3, п.5 | useradd, AllowUsers, sudoers | |
@@LOGIN_NET@@ |
net_admin |
п.3 | HQ-RTR, BR-RTR | |
@@VID_VLAN100@@ |
100 |
п.4 | HQ-SRV; enp7s2.@@VID_VLAN100@@, Proxmox Tag |
|
@@VID_VLAN200@@ |
200 |
п.4, п.9 | HQ-CLI; DHCP interface=enp7s2.@@VID_VLAN200@@ |
|
@@VID_VLAN999@@ |
999 |
п.4 | управление; enp7s2.@@VID_VLAN999@@ |
|
@@PLEN_VLAN100@@ |
27 |
п.1 | маска VLAN @@VID_VLAN100@@ | |
@@PLEN_VLAN200@@ |
28 |
п.1, п.9 | маска VLAN @@VID_VLAN200@@; dhcp-range |
|
@@PLEN_VLAN999@@ |
29 |
п.1 | маска VLAN @@VID_VLAN999@@ | |
@@PLEN_BR_LAN@@ |
28 |
п.1 | BR: …10.1/…, …10.2/… |
|
@@PLEN_ISP_HQ@@ |
28 |
п.2 | маска линка ISP↔HQ (172.16.1.0/28) |
|
@@PLEN_ISP_BR@@ |
28 |
п.2 | маска линка ISP↔BR (172.16.2.0/28) |
|
@@PLEN_GRE@@ |
30 |
п.6 | маска туннеля; если в задании нет — образец | |
@@ISP_HQ_ADDR@@ |
172.16.1.1 |
п.2 | ISP enp7s2; шлюз HQ-RTR, docker, ping |
|
@@ISP_BR_ADDR@@ |
172.16.2.1 |
п.2 | ISP enp7s3; шлюз BR-RTR, web, ping |
|
@@HQ_ISP_ADDR@@ |
172.16.1.2 |
п.2 | HQ-RTR enp7s1, GRE TUNLOCAL (не в DNS для клиентов) |
|
@@BR_ISP_ADDR@@ |
172.16.2.2 |
п.2 | BR-RTR enp7s1, GRE TUNREMOTE HQ (не в DNS для клиентов) |
|
@@GRE_HQ_ADDR@@ |
10.10.10.1 |
п.6 | HQ-RTR gre1; если в задании нет — образец |
|
@@GRE_BR_ADDR@@ |
10.10.10.2 |
п.6 | BR-RTR gre1; если в задании нет — образец |
Важно: в «Заменить всё» подставляйте целые токены (
@@PLEN_VLAN100@@,@@ISP_HQ_ADDR@@,@@VID_VLAN200@@), не отдельные числа100/200/27/28— иначе сломаются соседние@@…@@. Сначала все@@PLEN_*@@, затем@@*_ADDR@@.
Вне таблицы замены (сверить с заданием, без @@…@@)
- домен / FQDN (
au-team.irpo, табл. 3) - пароли, UID
2026 dhcp-range,dhcp-option=15, forwarder BIND, OSPF, баннер, часовой пояс- IP hq-cli для зоны DNS — с HQ-CLI после DHCP (§7)
Если в п.1 задана только вместимость сегмента (без новой сети)
Меняют только @@PLEN_*@@ (и при необходимости границы dhcp-range). Октеты и @@VID_*@@ в образце не трогают. При смене номера VLAN в п.4 — замените все @@VID_*@@ и пересоздайте каталоги enp7s2.NNN / enp7s1.NNN под новый NNN.
Что обычно не меняют (инвариант логики)
- Топология: ISP — HQ-RTR — HQ-SRV / HQ-CLI; ISP — BR-RTR — BR-SRV.
- Требования RFC1918, VLAN на одном порту HQ-RTR, GRE или IPIP, OSPF на туннеле, NAT, DHCP на HQ-RTR, DNS на HQ-SRV.
- Имена ролей ВМ: ISP, HQ-RTR, BR-RTR, HQ-SRV, BR-SRV, HQ-CLI.
- Ресурсы ВМ — таблица 1 в задании.
0. Что нельзя автоматизировать (настройка в Proxmox)
Скрипты настраивают всё внутри ВМ. Но есть вещи, которые делаются в свойствах ВМ в Proxmox:
VLAN Tag в Proxmox (п.4)
| ВМ | VLAN Tag |
|---|---|
| HQ-SRV | @@VID_VLAN100@@ |
| HQ-CLI | @@VID_VLAN200@@ |
Остальные ВМ — без тега на адаптере (или по топологии стенда). На HQ-RTR VLAN задаются внутри ОС (VID в options).
Порядок выполнения
Рекомендуемый порядок: ISP → HQ-RTR → BR-RTR → HQ-SRV (сеть и SSH) → BR-SRV → HQ-CLI → DNS на HQ-SRV (§7)
Маршрутизаторы первыми. DNS (п.10, табл. 3, в т.ч. hq-cli) — после HQ-CLI: адрес клиента известен только после DHCP.
В каждом разделе ниже:
- «Правка файлов (кратко)» — что изменить в конфигах (удобно сверять с заданием без «готового скрипта»);
- «Ручная настройка» — те же шаги командами (основной способ выполнения на экзамене).
Сначала замените все @@…@@ по §0.1; затем настройте параметры «вне таблицы» по заданию.
1. ISP — магистральный маршрутизатор
Роль: шлюз в интернет для HQ и BR. Раздаёт NAT, соединяет два офиса с «провайдером».
| Интерфейс | IP/сеть | Назначение |
|---|---|---|
| enp7s1 | DHCP | В сторону провайдера |
| enp7s2 | @@ISP_HQ_ADDR@@/@@PLEN_ISP_HQ@@ |
В сторону HQ-RTR (п.2) |
| enp7s3 | @@ISP_BR_ADDR@@/@@PLEN_ISP_BR@@ |
В сторону BR-RTR (п.2) |
Правка файлов (кратко)
| Файл | Что сделать |
|---|---|
/etc/net/ifaces/enp7s2/ipv4address |
Одна строка: @@ISP_HQ_ADDR@@/@@PLEN_ISP_HQ@@ (п.2 — сеть задана явно, меняется и адрес сети, и маска) |
/etc/net/ifaces/enp7s3/ipv4address |
Одна строка: @@ISP_BR_ADDR@@/@@PLEN_ISP_BR@@ |
/etc/net/ifaces/enp7s2/options, enp7s3/options |
Добавить строку TYPE=eth (если каталоги уже созданы) |
/etc/net/sysctl.conf |
Строку net.ipv4.ip_forward = 0 заменить на net.ipv4.ip_forward = 1 |
После правок: systemctl restart network. Ниже — те же шаги командами.
Ручная настройка
# 1. Имя устройства (п.1 задания)
hostnamectl set-hostname ISP.au-team.irpo
# 2. Настройка интерфейсов
cd /etc/net/ifaces/
# Интерфейс в сторону HQ-RTR (п.2 — @@ISP_HQ_ADDR@@/@@PLEN_ISP_HQ@@)
mkdir -p enp7s2
echo "TYPE=eth" > enp7s2/options
echo "@@ISP_HQ_ADDR@@/@@PLEN_ISP_HQ@@" > enp7s2/ipv4address
# Интерфейс в сторону BR-RTR (п.2 — @@ISP_BR_ADDR@@/@@PLEN_ISP_BR@@)
mkdir -p enp7s3
echo "TYPE=eth" > enp7s3/options
echo "@@ISP_BR_ADDR@@/@@PLEN_ISP_BR@@" > enp7s3/ipv4address
# 3. Включаем IP forwarding (чтобы пакеты ходили между интерфейсами)
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf
systemctl restart network
# 4. Проверяем что интерфейсы поднялись
ip -br a
# 5. NAT — динамическая трансляция для HQ-RTR и BR-RTR (п.2, п.8)
apt-get update && apt-get install iptables tzdata -y
# Маскарадинг: все кто выходят через enp7s1 (интернет) получают адрес ISP
iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE
iptables-save >> /etc/sysconfig/iptables
systemctl enable --now iptables
# 6. Часовой пояс (п.11)
timedatectl set-timezone Asia/Yekaterinburg
Проверка
hostname # должно быть ISP.au-team.irpo
ip -br a # enp7s2=@@ISP_HQ_ADDR@@, enp7s3=@@ISP_BR_ADDR@@
iptables -t nat -L POSTROUTING -v # должна быть строчка MASQUERADE на enp7s1
2. HQ-RTR — маршрутизатор офиса HQ
Роль: ядро сети HQ. Маршрутизация между VLAN, DHCP-сервер для HQ-CLI, OSPF-туннель в BR, NAT в интернет.
| Интерфейс | IP/сеть | VLAN | Назначение |
|---|---|---|---|
| enp7s1 | @@HQ_ISP_ADDR@@/@@PLEN_ISP_HQ@@ |
— | В сторону ISP |
| enp7s2 | транк | — | Транковый порт в сторону HQ-SRV/HQ-CLI |
| enp7s2.@@VID_VLAN100@@ | 192.168.100.1/@@PLEN_VLAN100@@ |
@@VID_VLAN100@@ | HQ-SRV (п.1, п.4) |
| enp7s2.@@VID_VLAN200@@ | 192.168.200.1/@@PLEN_VLAN200@@ |
@@VID_VLAN200@@ | HQ-CLI, DHCP (п.1, п.4, п.9) |
| enp7s2.@@VID_VLAN999@@ | 192.168.99.1/@@PLEN_VLAN999@@ |
@@VID_VLAN999@@ | Управление (п.4) |
| gre1 | @@GRE_HQ_ADDR@@/@@PLEN_GRE@@ |
— | Туннель в BR-RTR (п.6; адреса — образец, если в задании не заданы) |
Правка файлов (кратко)
Сеть к ISP (п.2, сеть указана явно):
| Файл | Действие |
|---|---|
/etc/net/ifaces/enp7s1/ipv4address |
@@HQ_ISP_ADDR@@/@@PLEN_ISP_HQ@@ |
/etc/net/ifaces/enp7s1/ipv4route |
default via @@ISP_HQ_ADDR@@ |
/etc/net/ifaces/enp7s1/resolv.conf |
nameserver 192.168.100.2 и search au-team.irpo |
VLAN на enp7s2 (п.1 — часто меняют только маску, хост .1 оставляют):
| Файл | Действие |
|---|---|
.../enp7s2.@@VID_VLAN100@@/options |
Строки TYPE=vlan, HOST=enp7s2, VID=@@VID_VLAN100@@, BOOTPROTO=static |
.../enp7s2.@@VID_VLAN100@@/ipv4address |
192.168.100.1/@@PLEN_VLAN100@@ |
.../enp7s2.@@VID_VLAN200@@/ipv4address |
192.168.200.1/@@PLEN_VLAN200@@ |
.../enp7s2.@@VID_VLAN999@@/ipv4address |
192.168.99.1/@@PLEN_VLAN999@@ |
Туннель и сервисы:
| Файл | Действие |
|---|---|
/etc/net/ifaces/gre1/options |
TUNLOCAL=@@HQ_ISP_ADDR@@, TUNREMOTE=@@BR_ISP_ADDR@@, TUNTYPE=gre |
/etc/net/ifaces/gre1/ipv4address |
@@GRE_HQ_ADDR@@/@@PLEN_GRE@@ |
/etc/dnsmasq.conf.d/hq-cli.conf |
Создать: interface=enp7s2.@@VID_VLAN200@@, dhcp-range=…, dhcp-option=3/6/15 — см. команды ниже |
/etc/frr/daemons |
ospfd=no → ospfd=yes |
/etc/frr/frr.conf |
В interface gre1 — ip ospf authentication-key … (п.7) |
Ручная настройка
# 1. Имя устройства (п.1)
hostnamectl set-hostname HQ-RTR.au-team.irpo
# 2. Интерфейсы
cd /etc/net/ifaces/
# Интерфейс в сторону ISP (п.2)
mkdir -p enp7s1
echo "TYPE=eth" > enp7s1/options
echo "@@HQ_ISP_ADDR@@/@@PLEN_ISP_HQ@@" > enp7s1/ipv4address
echo "default via @@ISP_HQ_ADDR@@" > enp7s1/ipv4route
echo "nameserver 192.168.100.2" > /etc/net/ifaces/enp7s1/resolv.conf
echo "search au-team.irpo" >> /etc/net/ifaces/enp7s1/resolv.conf
# 3. Коммутация — VLAN-интерфейсы на одном физическом порту enp7s2 (п.4)
mkdir -p enp7s2
echo "TYPE=eth" > enp7s2/options
# VLAN @@VID_VLAN100@@ — HQ-SRV (п.1, п.4)
mkdir -p enp7s2.@@VID_VLAN100@@
echo "TYPE=vlan" > enp7s2.@@VID_VLAN100@@/options
echo "HOST=enp7s2" >> enp7s2.@@VID_VLAN100@@/options
echo "VID=@@VID_VLAN100@@" >> enp7s2.@@VID_VLAN100@@/options
echo "BOOTPROTO=static" >> enp7s2.@@VID_VLAN100@@/options
echo "192.168.100.1/@@PLEN_VLAN100@@" > enp7s2.@@VID_VLAN100@@/ipv4address # префикс @@PLEN_VLAN100@@
# VLAN @@VID_VLAN200@@ — HQ-CLI (маска, пул DHCP — п.1, п.4, п.9)
mkdir -p enp7s2.@@VID_VLAN200@@
echo "TYPE=vlan" > enp7s2.@@VID_VLAN200@@/options
echo "HOST=enp7s2" >> enp7s2.@@VID_VLAN200@@/options
echo "VID=@@VID_VLAN200@@" >> enp7s2.@@VID_VLAN200@@/options
echo "BOOTPROTO=static" >> enp7s2.@@VID_VLAN200@@/options
echo "192.168.200.1/@@PLEN_VLAN200@@" > enp7s2.@@VID_VLAN200@@/ipv4address # префикс @@PLEN_VLAN200@@
# VLAN @@VID_VLAN999@@ — управление (п.1, п.4)
mkdir -p enp7s2.@@VID_VLAN999@@
echo "TYPE=vlan" > enp7s2.@@VID_VLAN999@@/options
echo "HOST=enp7s2" >> enp7s2.@@VID_VLAN999@@/options
echo "VID=@@VID_VLAN999@@" >> enp7s2.@@VID_VLAN999@@/options
echo "BOOTPROTO=static" >> enp7s2.@@VID_VLAN999@@/options
echo "192.168.99.1/@@PLEN_VLAN999@@" > enp7s2.@@VID_VLAN999@@/ipv4address # префикс @@PLEN_VLAN999@@
# 4. GRE-туннель в BR-RTR (п.6)
# Если в листе нет адресов туннеля — @@GRE_*_ADDR@@ и @@PLEN_GRE@@ из §0.1 (образец 10.10.10.1/2, /30)
mkdir -p gre1
echo "TYPE=iptun" > gre1/options
echo "TUNTYPE=gre" >> gre1/options
echo "TUNLOCAL=@@HQ_ISP_ADDR@@" >> gre1/options # наш адрес
echo "TUNREMOTE=@@BR_ISP_ADDR@@" >> gre1/options # адрес BR-RTR
echo "TUNTTL=64" >> gre1/options
echo "TUNOPTIONS='ttl 64'" >> gre1/options
echo "@@GRE_HQ_ADDR@@/@@PLEN_GRE@@" > gre1/ipv4address
# Включаем IP forwarding и применяем сеть
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf
systemctl restart network
# 5. Пользователь @@LOGIN_NET@@ (п.3)
useradd @@LOGIN_NET@@
echo "@@LOGIN_NET@@:P@ssw0rd" | chpasswd
# 6. Пакеты: sudo, iptables (NAT), frr (OSPF), dnsmasq (DHCP) (п.7,8,9)
apt-get update && apt-get install sudo iptables frr dnsmasq -y
echo "@@LOGIN_NET@@ ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/@@LOGIN_NET@@
chmod 440 /etc/sudoers.d/@@LOGIN_NET@@
# 7. DHCP-сервер для HQ-CLI (п.9)
# Раздаём адреса в VLAN @@VID_VLAN200@@, кроме адреса маршрутизатора (.1)
echo "interface=enp7s2.@@VID_VLAN200@@" > /etc/dnsmasq.conf.d/hq-cli.conf
echo "dhcp-range=192.168.200.2,192.168.200.14,12h" >> /etc/dnsmasq.conf.d/hq-cli.conf # пул п.9 — пересчитать после замены @@PLEN_VLAN200@@
echo "dhcp-option=3,192.168.200.1" >> /etc/dnsmasq.conf.d/hq-cli.conf
echo "dhcp-option=6,192.168.100.2" >> /etc/dnsmasq.conf.d/hq-cli.conf
echo "dhcp-option=15,au-team.irpo" >> /etc/dnsmasq.conf.d/hq-cli.conf
systemctl enable --now dnsmasq
# 8. OSPF — динамическая маршрутизация через GRE-туннель (п.7)
# Включаем ospfd в FRR
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
# Конфигурация OSPF с аутентификацией (пароль п.7 — сверить с заданием)
cat <<'EOT' > /etc/frr/frr.conf
interface gre1
ip ospf area 0.0.0.0
ip ospf authentication
ip ospf authentication-key P@$$word
no ip ospf passive
exit
!
interface enp7s2.@@VID_VLAN100@@
ip ospf area 0.0.0.0
exit
!
interface enp7s2.@@VID_VLAN200@@
ip ospf area 0.0.0.0
exit
!
interface enp7s2.@@VID_VLAN999@@
ip ospf area 0.0.0.0
exit
!
router ospf
passive-interface default
exit
EOT
systemctl enable --now frr
# 9. NAT для офиса HQ (п.8)
iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE
iptables-save >> /etc/sysconfig/iptables
systemctl enable --now iptables
# 10. Часовой пояс (п.11)
timedatectl set-timezone Asia/Yekaterinburg
Проверка
hostname # HQ-RTR.au-team.irpo
ip -br a # enp7s1=@@HQ_ISP_ADDR@@, enp7s2.@@VID_VLAN100@@=192.168.100.1, enp7s2.@@VID_VLAN200@@=192.168.200.1, gre1=@@GRE_HQ_ADDR@@
ping @@ISP_HQ_ADDR@@ # пинг ISP
ping @@GRE_BR_ADDR@@ # пинг BR-RTR через туннель (после его настройки)
systemctl status dnsmasq # должен быть active
systemctl status frr # должен быть active
3. BR-RTR — маршрутизатор офиса BR
Роль: ядро сети BR. GRE-туннель в HQ, OSPF, NAT, пользователь @@LOGIN_NET@@.
| Интерфейс | IP/сеть | Назначение |
|---|---|---|
| enp7s1 | @@BR_ISP_ADDR@@/@@PLEN_ISP_BR@@ |
В сторону ISP |
| enp7s2 | 192.168.10.1/@@PLEN_BR_LAN@@ |
BR-SRV (п.1) |
| gre1 | @@GRE_BR_ADDR@@/@@PLEN_GRE@@ |
Туннель (п.6; адреса — образец, если в задании не заданы) |
Правка файлов (кратко)
| Файл | Действие |
|---|---|
/etc/net/ifaces/enp7s1/ipv4address |
@@BR_ISP_ADDR@@/@@PLEN_ISP_BR@@ |
/etc/net/ifaces/enp7s1/ipv4route |
default via @@ISP_BR_ADDR@@ |
/etc/net/ifaces/enp7s2/ipv4address |
192.168.10.1/@@PLEN_BR_LAN@@ |
/etc/net/ifaces/gre1/ipv4address |
@@GRE_BR_ADDR@@/@@PLEN_GRE@@ |
/etc/net/ifaces/gre1/options |
TUNLOCAL=@@BR_ISP_ADDR@@, TUNREMOTE=@@HQ_ISP_ADDR@@ |
/etc/frr/frr.conf |
Как на HQ-RTR: OSPF на gre1 и enp7s2, ключ |
Ручная настройка
# 1. Имя устройства (п.1)
hostnamectl set-hostname BR-RTR.au-team.irpo
# 2. Интерфейсы
cd /etc/net/ifaces/
# Интерфейс в сторону ISP (п.2)
mkdir -p enp7s1
echo "TYPE=eth" > enp7s1/options
echo "@@BR_ISP_ADDR@@/@@PLEN_ISP_BR@@" > enp7s1/ipv4address
echo "default via @@ISP_BR_ADDR@@" > enp7s1/ipv4route
echo "nameserver 192.168.100.2" > /etc/net/ifaces/enp7s1/resolv.conf
echo "search au-team.irpo" >> /etc/net/ifaces/enp7s1/resolv.conf
# Локальная сеть BR (п.1 — не более 16 адресов → /28)
mkdir -p enp7s2
echo "TYPE=eth" > enp7s2/options
echo "192.168.10.1/@@PLEN_BR_LAN@@" > enp7s2/ipv4address # префикс @@PLEN_BR_LAN@@
# 3. GRE-туннель в HQ-RTR (п.6)
# Если в листе нет адресов туннеля — @@GRE_*_ADDR@@ и @@PLEN_GRE@@ из §0.1 (образец 10.10.10.1/2, /30)
mkdir -p gre1
echo "TYPE=iptun" > gre1/options
echo "TUNTYPE=gre" >> gre1/options
echo "TUNLOCAL=@@BR_ISP_ADDR@@" >> gre1/options # наш адрес
echo "TUNREMOTE=@@HQ_ISP_ADDR@@" >> gre1/options # адрес HQ-RTR
echo "TUNTTL=64" >> gre1/options
echo "TUNOPTIONS='ttl 64'" >> gre1/options
echo "@@GRE_BR_ADDR@@/@@PLEN_GRE@@" > gre1/ipv4address
# Применяем
sed -i 's/ net.ipv4.ip_forward = 0/ net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf
systemctl restart network
ip -br a
# 4. Пользователь @@LOGIN_NET@@ (п.3)
useradd @@LOGIN_NET@@
echo "@@LOGIN_NET@@:P@ssw0rd" | chpasswd
# 5. Пакеты (п.7,8)
apt-get update && apt-get install sudo iptables frr -y
echo "@@LOGIN_NET@@ ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/@@LOGIN_NET@@
chmod 440 /etc/sudoers.d/@@LOGIN_NET@@
# 6. OSPF (п.7) — анонсируем только туннель и локальную сеть
sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons
cat <<'EOT' > /etc/frr/frr.conf
interface gre1
ip ospf area 0.0.0.0
ip ospf authentication
ip ospf authentication-key P@$$word
no ip ospf passive
exit
!
interface enp7s2
ip ospf area 0.0.0.0
exit
!
router ospf
passive-interface default
exit
EOT
systemctl enable --now frr
# 7. NAT для офиса BR (п.8)
iptables -t nat -A POSTROUTING -o enp7s1 -j MASQUERADE
iptables-save >> /etc/sysconfig/iptables
systemctl enable --now iptables
# 8. Часовой пояс (п.11)
timedatectl set-timezone Asia/Yekaterinburg
Проверка
hostname # BR-RTR.au-team.irpo
ip -br a # enp7s1=@@BR_ISP_ADDR@@, enp7s2=192.168.10.1, gre1=@@GRE_BR_ADDR@@
ping @@ISP_BR_ADDR@@ # пинг ISP
ping @@GRE_HQ_ADDR@@ # пинг HQ-RTR через туннель
ping 192.168.100.1 # пинг HQ-RTR VLAN @@VID_VLAN100@@ (через OSPF)
4. HQ-SRV — сервер офиса HQ
Проверьте теги VLAN в свойствах сетевого адаптера ВМ
Роль: сервер HQ в VLAN @@VID_VLAN100@@; SSH (порт @@PORT_SSH@@), пользователь @@LOGIN_SSH@@. DNS (п.10) — в §7, после настройки HQ-CLI.
| Интерфейс | IP/сеть | Назначение |
|---|---|---|
| enp7s1 | 192.168.100.2/@@PLEN_VLAN100@@ |
VLAN @@VID_VLAN100@@ |
Правка файлов (кратко)
| Файл | Действие |
|---|---|
/etc/net/ifaces/enp7s1/ipv4address |
192.168.100.2/@@PLEN_VLAN100@@ |
/etc/net/ifaces/enp7s1/ipv4route |
default via 192.168.100.1 |
/etc/openssh/sshd_config |
#Port 22 → Port @@PORT_SSH@@; #MaxAuthTries 6 → MaxAuthTries 2; в конец: AllowUsers @@LOGIN_SSH@@; #Banner none → Banner /etc/openssh/banner |
/etc/openssh/banner |
Одна строка: Authorized access only |
/etc/sudoers.d/@@LOGIN_SSH@@ |
@@LOGIN_SSH@@ ALL=(ALL) NOPASSWD:ALL |
Ручная настройка
# 1. Имя устройства (п.1)
hostnamectl set-hostname HQ-SRV.au-team.irpo
# 2. Пользователь @@LOGIN_SSH@@ (п.3; uid и пароль — сверить с заданием)
useradd -u 2026 @@LOGIN_SSH@@
echo "@@LOGIN_SSH@@:P@ssw0rd" | chpasswd
echo "@@LOGIN_SSH@@ ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/@@LOGIN_SSH@@
chmod 440 /etc/sudoers.d/@@LOGIN_SSH@@
# 3. Сеть — VLAN @@VID_VLAN100@@ (п.1, п.4)
cd /etc/net/ifaces/
mkdir -p enp7s1
echo "TYPE=eth" > enp7s1/options
echo "192.168.100.2/@@PLEN_VLAN100@@" > enp7s1/ipv4address # префикс @@PLEN_VLAN100@@
echo "default via 192.168.100.1" > enp7s1/ipv4route
echo "nameserver 77.88.8.8" > /etc/net/ifaces/enp7s1/resolv.conf
systemctl restart network
ip -br a
# 4. SSH (п.5; баннер — сверить с заданием)
sed -i 's/#Port 22/Port @@PORT_SSH@@/' /etc/openssh/sshd_config
sed -i 's/#MaxAuthTries 6/MaxAuthTries 2/' /etc/openssh/sshd_config
echo "" >> /etc/openssh/sshd_config
echo "AllowUsers @@LOGIN_SSH@@" >> /etc/openssh/sshd_config
echo "Authorized access only" > /etc/openssh/banner
sed -i 's|#Banner none|Banner /etc/openssh/banner|' /etc/openssh/sshd_config
systemctl restart sshd
# 5. Часовой пояс (п.11)
timedatectl set-timezone Asia/Yekaterinburg
Проверка
hostname # HQ-SRV.au-team.irpo
ip -br a # enp7s1=192.168.100.2
systemctl status sshd # active, port @@PORT_SSH@@
ping 192.168.100.1 # пинг шлюза HQ-RTR
5. BR-SRV — сервер офиса BR
Роль: SSH (порт @@PORT_SSH@@), пользователь @@LOGIN_SSH@@. Аналог HQ-SRV для офиса BR.
| Интерфейс | IP/сеть | Назначение |
|---|---|---|
| enp7s1 | 192.168.10.2/@@PLEN_BR_LAN@@ |
Локальная сеть BR |
Правка файлов (кратко)
| Файл | Действие |
|---|---|
/etc/net/ifaces/enp7s1/ipv4address |
192.168.10.2/@@PLEN_BR_LAN@@ |
/etc/net/ifaces/enp7s1/ipv4route |
default via 192.168.10.1 |
/etc/net/ifaces/enp7s1/resolv.conf |
nameserver 192.168.100.2, search au-team.irpo |
/etc/openssh/sshd_config, /etc/openssh/banner |
Как на HQ-SRV (п.5): порт , баннер, AllowUsers |
/etc/sudoers.d/@@LOGIN_SSH@@ |
@@LOGIN_SSH@@ ALL=(ALL) NOPASSWD:ALL |
Ручная настройка
# 1. Имя устройства (п.1)
hostnamectl set-hostname BR-SRV.au-team.irpo
# 2. Пользователь @@LOGIN_SSH@@ (п.3)
useradd -u 2026 @@LOGIN_SSH@@
echo "@@LOGIN_SSH@@:P@ssw0rd" | chpasswd
echo "@@LOGIN_SSH@@ ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/@@LOGIN_SSH@@
chmod 440 /etc/sudoers.d/@@LOGIN_SSH@@
# 3. Сеть (п.1)
cd /etc/net/ifaces/
mkdir -p enp7s1
echo "TYPE=eth" > enp7s1/options
echo "192.168.10.2/@@PLEN_BR_LAN@@" > enp7s1/ipv4address # префикс @@PLEN_BR_LAN@@
echo "default via 192.168.10.1" > enp7s1/ipv4route
echo "nameserver 192.168.100.2" > /etc/net/ifaces/enp7s1/resolv.conf
echo "search au-team.irpo" >> /etc/net/ifaces/enp7s1/resolv.conf
systemctl restart network
ip -br a
# 4. SSH (п.5) — так же как HQ-SRV
sed -i 's/#Port 22/Port @@PORT_SSH@@/' /etc/openssh/sshd_config
sed -i 's/#MaxAuthTries 6/MaxAuthTries 2/' /etc/openssh/sshd_config
echo "" >> /etc/openssh/sshd_config
echo "AllowUsers @@LOGIN_SSH@@" >> /etc/openssh/sshd_config
echo "Authorized access only" > /etc/openssh/banner
sed -i 's|#Banner none|Banner /etc/openssh/banner|' /etc/openssh/sshd_config
systemctl restart sshd
# 5. Часовой пояс (п.11)
timedatectl set-timezone Asia/Yekaterinburg
Проверка
hostname # BR-SRV.au-team.irpo
ip -br a # enp7s1=192.168.10.2
systemctl status sshd # active, port @@PORT_SSH@@
ping 192.168.10.1 # пинг BR-RTR
ping 192.168.100.2 # пинг HQ-SRV (через OSPF, после настройки всего)
6. HQ-CLI — клиентская машина офиса HQ
Проверьте теги VLAN в свойствах сетевого адаптера ВМ
Роль: клиент, получает адрес по DHCP от HQ-RTR в VLAN @@VID_VLAN200@@.
| Интерфейс | IP/сеть | Назначение |
|---|---|---|
| enp7s1 | DHCP (VLAN @@VID_VLAN200@@) | Клиентская сеть, адрес от HQ-RTR |
Правка файлов (кратко)
| Файл | Действие |
|---|---|
/etc/net/ifaces/enp7s1/options |
TYPE=eth и BOOTPROTO=dhcp |
/etc/net/ifaces/enp7s1.@@VID_VLAN200@@/options |
Если нужен VLAN: TYPE=vlan, HOST=enp7s1, VID=@@VID_VLAN200@@, BOOTPROTO=dhcp |
Пул и шлюз задаются на HQ-RTR в dnsmasq; при смене только маски VLAN @@VID_VLAN200@@ клиент подхватит новый диапазон после systemctl restart network.
Ручная настройка
# 1. Имя устройства (п.1)
hostnamectl set-hostname HQ-CLI.au-team.irpo
# 2. Сеть — получение по DHCP (п.9)
systemctl restart network #если ВМ была запущена до настройки DHCP, то она будет без адреса даже после настроки сервера
ip -br a
# Должен получить адрес из пула DHCP (п.9; пересчитать пул после замены @@PLEN_VLAN200@@)
ip -4 -br a
# Запишите выданный адрес — он понадобится для A/PTR hq-cli в §7 (табл. 3, п.10)
# 3. Часовой пояс (п.11)
timedatectl set-timezone Asia/Yekaterinburg
Проверка
hostname # HQ-CLI.au-team.irpo
ip -br a # адрес из пула DHCP VLAN @@VID_VLAN200@@
7. DNS на HQ-SRV (п.10, табл. 3)
Роль: основной DNS для внутренних клиентов (HQ-CLI, HQ-SRV, BR-SRV). Им нужны имена и PTR в сетях 192.168.* — шлюзы VLAN, серверы, клиент. Транзитные 172.16.* на enp7s1 маршрутизаторов в зоны не включаем: с рабочих станций эти адреса не видны и не используются как шлюз/DNS.
По табл. 3 отдельно остаются только docker и web (интерфейсы ISP на линках п.2) — A-записи на @@ISP_HQ_ADDR@@ / @@ISP_BR_ADDR@@. Обратная зона 16.172.in-addr.arpa для проверки клиентов не нужна.
Выполняется на уже настроенном HQ-SRV после §6: адрес hq-cli известен только после DHCP.
Перед правкой зон: IP HQ-CLI
На HQ-CLI (§6) выполните ip -4 -br a и запишите IPv4, например 192.168.200.5. Далее подставьте его вместо 192.168.200.5 в примерах ниже (и в PTR — последний октет: для .5 → 5.200).
Правка файлов (кратко)
| Файл | Действие |
|---|---|
/etc/bind/options.conf |
forwarders — 77.88.8.8 (или из п.10) |
/etc/bind/local.conf |
зоны au-team.irpo, 168.192.in-addr.arpa |
/etc/bind/zone/au-team.irpo.zone |
A по табл. 3; hq-cli — IP с HQ-CLI (DHCP) |
/etc/bind/zone/168.192.rev |
PTR; строка hq-cli — X.200 (X = последний октет IP HQ-CLI) |
Ручная настройка
# 1. DNS-сервер bind (п.10) — на HQ-SRV
apt-get update && apt-get install nano bind bind-utils -y
sed -i 's/listen-on { 127.0.0.1; };/listen-on { any; };/' /etc/bind/options.conf
sed -i 's|//forwarders { };|forwarders { 77.88.8.8; };|' /etc/bind/options.conf
sed -i '/forwarders { 77.88.8.8; };/adnssec-validation no;' /etc/bind/options.conf
sed -i 's|//allow-query { localnets; };|allow-query { any; };|' /etc/bind/options.conf
cat >> /etc/bind/local.conf << 'EOF'
zone "au-team.irpo" {
type master;
file "/etc/bind/zone/au-team.irpo.zone";
};
zone "168.192.in-addr.arpa" {
type master;
file "/etc/bind/zone/168.192.rev";
};
EOF
# 2. Файлы зон (п.10, табл. 3)
# hq-cli: подставьте IP с HQ-CLI (ip -4 -br a), не фиксированный .10
mkdir -p /etc/bind/zone
cat > /etc/bind/zone/au-team.irpo.zone << 'EOF'
$TTL 86400
@ IN SOA hq-srv.au-team.irpo. admin.au-team.irpo. (
2026010101
3600
1800
604800
86400 )
@ IN NS hq-srv.au-team.irpo.
hq-rtr IN A 192.168.100.1
hq-rtr IN A 192.168.200.1
hq-rtr IN A 192.168.99.1
br-rtr IN A 192.168.10.1
hq-srv IN A 192.168.100.2
hq-cli IN A 192.168.200.5
br-srv IN A 192.168.10.2
docker IN A @@ISP_HQ_ADDR@@
web IN A @@ISP_BR_ADDR@@
EOF
# Строку hq-cli: замените 192.168.200.5 на фактический IP с HQ-CLI
cat > /etc/bind/zone/168.192.rev << 'EOF'
$TTL 86400
@ IN SOA hq-srv.au-team.irpo. admin.au-team.irpo. (
2026010101
3600
1800
604800
86400 )
@ IN NS hq-srv.au-team.irpo.
1.100 IN PTR hq-rtr.au-team.irpo.
2.100 IN PTR hq-srv.au-team.irpo.
1.200 IN PTR hq-rtr.au-team.irpo.
5.200 IN PTR hq-cli.au-team.irpo.
1.10 IN PTR br-rtr.au-team.irpo.
2.10 IN PTR br-srv.au-team.irpo.
1.99 IN PTR hq-rtr.au-team.irpo.
EOF
# Строку 5.200 (hq-cli): замените 5 на последний октет IP HQ-CLI в сети 200
chown named:named /etc/bind/zone/*
systemctl enable --now bind
Проверка
systemctl status bind
nslookup hq-rtr.au-team.irpo 127.0.0.1 # 192.168.100.1
nslookup 192.168.100.2 127.0.0.1 # hq-srv.au-team.irpo
nslookup hq-cli.au-team.irpo 127.0.0.1 # IP с HQ-CLI (DHCP)
nslookup 192.168.200.5 127.0.0.1 # hq-cli.au-team.irpo (ваш IP HQ-CLI)
На HQ-CLI: nslookup hq-srv.au-team.irpo и nslookup hq-cli.au-team.irpo — после §7.
Приложение А. Сводная таблица IP-адресов (Таблица 2)
Образец для таблицы 2 отчёта; префиксы 192.168.* — через @@PLEN_*@@ после замены по §0.1.
| Устройство | IP-адрес | Шлюз по умолчанию |
|---|---|---|
| ISP (enp7s2) | @@ISP_HQ_ADDR@@/@@PLEN_ISP_HQ@@ | — |
| ISP (enp7s3) | @@ISP_BR_ADDR@@/@@PLEN_ISP_BR@@ | — |
| HQ-RTR (enp7s1) | @@HQ_ISP_ADDR@@/@@PLEN_ISP_HQ@@ | @@ISP_HQ_ADDR@@ |
| HQ-RTR (enp7s2.@@VID_VLAN100@@) | 192.168.100.1/@@PLEN_VLAN100@@ | — |
| HQ-RTR (enp7s2.@@VID_VLAN200@@) | 192.168.200.1/@@PLEN_VLAN200@@ | — |
| HQ-RTR (enp7s2.@@VID_VLAN999@@) | 192.168.99.1/@@PLEN_VLAN999@@ | — |
| HQ-RTR (gre1) | @@GRE_HQ_ADDR@@/@@PLEN_GRE@@ | — |
| BR-RTR (enp7s1) | @@BR_ISP_ADDR@@/@@PLEN_ISP_BR@@ | @@ISP_BR_ADDR@@ |
| BR-RTR (enp7s2) | 192.168.10.1/@@PLEN_BR_LAN@@ | — |
| BR-RTR (gre1) | @@GRE_BR_ADDR@@/@@PLEN_GRE@@ | — |
| HQ-SRV | 192.168.100.2/@@PLEN_VLAN100@@ | 192.168.100.1 |
| BR-SRV | 192.168.10.2/@@PLEN_BR_LAN@@ | 192.168.10.1 |
| HQ-CLI | DHCP (см. ip -4 -br a на HQ-CLI) |
192.168.200.1 |