Настройка сетевой инфраструктуры на ALT Linux

Справочник по настройке маршрутизации, VLAN, GRE-туннелей, NAT, динамической маршрутизации (OSPF), DHCP и DNS на ALT Linux. Каждый раздел содержит краткое пояснение и пример готовой конфигурации для соответствующего узла сети.

Адреса, маски подсетей, имена интерфейсов и доменные имена в примерах относятся к учебному стенду. При настройке подставляйте значения своей схемы.

Настройка узлов сети: маршрутизаторы и серверы

Граничный маршрутизатор

Граничный маршрутизатор на стыке с внешней сетью: получает адрес от вышестоящего провайдера и выполняет трансляцию адресов (NAT) для внутренних подсетей.

I. Идентификация хоста и времени

Имя хоста идентифицирует узел в сети и подставляется в приглашение командной строки, журналы и сетевые службы (DNS, Kerberos). hostnamectl записывает имя без перезагрузки, а вызов bash нужен, чтобы новое имя сразу отобразилось в приглашении. Часовой пояс через timedatectl важен для корректных меток времени в логах и протоколов, чувствительных ко времени.

Пример конфигурации
hostnamectl hostname isp.au-team.irpo
bash
timedatectl set-timezone Europe/Moscow

II. Включение маршрутизации (IP Forwarding)

По умолчанию Linux не пересылает пакеты между интерфейсами и ведёт себя как конечный узел, а не маршрутизатор. Параметр ядра net.ipv4.ip_forward включает пересылку IPv4-пакетов; правка в sysctl.conf делает её постоянной. Без этого роутер не сможет передавать трафик между подсетями.

Пример конфигурации
cd /etc/net/
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' sysctl.conf

III. Подготовка шаблонов интерфейсов

В ALT Linux каждый сетевой интерфейс описывается отдельным каталогом в /etc/net/ifaces/ (система etcnet) с файлами options, ipv4address, ipv4route. Копирование готового каталога через cp -R — быстрый способ создать новый интерфейс на основе шаблона, в том числе VLAN-подынтерфейсы (имя вида enpXsY.100) и туннели.

Пример конфигурации
cd ifaces/

cp -R ens19 ens20
cp -R ens20 ens21

IV. Настройка режимов BOOTPROTO и IPv4-адресов

Файл options задаёт способ получения адреса: BOOTPROTO=dhcp — адрес выдаёт вышестоящий сервер (для аплинка к провайдеру), static — адрес прописывается вручную (для внутренних сетей). Сам адрес с маской в формате CIDR записывается в файл ipv4address, а шлюз по умолчанию (default via …) — в ipv4route.

Пример конфигурации
cat << 'EOF' > /etc/net/ifaces/ens19/options
BOOTPROTO=dhcp
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=dhcp4
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/ens20/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/ens21/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

echo 172.16.1.1/28 > ens20/ipv4address
echo 172.16.2.1/28 > ens21/ipv4address

systemctl restart network

ens19 > DHCP (uplink к провайдеру)

ens20, ens21 > static (downlink к клиентам)

V. Скачивание nano, iptables

Установка базовых утилит: nano — простой текстовый редактор, iptables — инструмент управления правилами межсетевого экрана и NAT в ядре Linux. На минимальной установке они часто отсутствуют.

Пример конфигурации
apt-get update && apt-get install nano iptables -y

VI. Применение сетевых настроек и NAT

NAT (маскарадинг) подменяет приватные адреса внутренней сети на внешний адрес роутера, чтобы трафик мог выходить наружу. Правило в цепочке POSTROUTING таблицы nat с действием MASQUERADE применяется к исходящему интерфейсу. iptables-save сохраняет правила в файл, а включение службы iptables восстанавливает их после перезагрузки.

Пример конфигурации
systemctl restart network
iptables -t nat -A POSTROUTING -o ens19 -j MASQUERADE
iptables-save -f /etc/sysconfig/iptables
systemctl enable --now iptables.service

VII. Применение сетевых настроек

Перезапуск службы network перечитывает конфигурацию из /etc/net/ifaces/ и поднимает интерфейсы с новыми параметрами — применяются все правки адресов, маршрутов, VLAN и туннелей.

Пример конфигурации
systemctl restart network

Маршрутизатор площадки A

Маршрутизатор площадки A: терминирует VLAN пользователей и серверов, поднимает GRE-туннель до второй площадки, распространяет маршруты по OSPF и выдаёт адреса по DHCP.

I. Идентификация хоста и времени

Имя хоста идентифицирует узел в сети и подставляется в приглашение командной строки, журналы и сетевые службы (DNS, Kerberos). hostnamectl записывает имя без перезагрузки, а вызов bash нужен, чтобы новое имя сразу отобразилось в приглашении. Часовой пояс через timedatectl важен для корректных меток времени в логах и протоколов, чувствительных ко времени.

Пример конфигурации
hostnamectl hostname hq-rtr.au-team.irpo
bash
timedatectl set-timezone Europe/Moscow

II. Создание пользователей

Создаём пользователя net_admin в группе wheel с правами выполнять sudo без пароля. Пароль пользователя - P@ssw0rd

Пример конфигурации
useradd -m net_admin
echo "net_admin:P@ssw0rd" | chpasswd
usermod -aG wheel net_admin
echo 'net_admin ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers

III. Включение маршрутизации (IP Forwarding)

По умолчанию Linux не пересылает пакеты между интерфейсами и ведёт себя как конечный узел, а не маршрутизатор. Параметр ядра net.ipv4.ip_forward включает пересылку IPv4-пакетов; правка в sysctl.conf делает её постоянной. Без этого роутер не сможет передавать трафик между подсетями.

Пример конфигурации
cd /etc/net/
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' sysctl.conf

IV. Подготовка шаблонов интерфейсов

В ALT Linux каждый сетевой интерфейс описывается отдельным каталогом в /etc/net/ifaces/ (система etcnet) с файлами options, ipv4address, ipv4route. Копирование готового каталога через cp -R — быстрый способ создать новый интерфейс на основе шаблона, в том числе VLAN-подынтерфейсы (имя вида enpXsY.100) и туннели.

Пример конфигурации
cd ifaces/

cp -R ens19 ens20

cp -R ens19 ens20.100
cp -R ens19 ens20.200
cp -R ens19 ens20.999

cp -R ens19 gre10

V. Настройка IPv4-адресов и маршрутов

Файл options задаёт способ получения адреса: BOOTPROTO=dhcp — адрес выдаёт вышестоящий сервер (для аплинка к провайдеру), static — адрес прописывается вручную (для внутренних сетей). Сам адрес с маской в формате CIDR записывается в файл ipv4address, а шлюз по умолчанию (default via …) — в ipv4route.

Пример конфигурации
cat << 'EOF' > /etc/net/ifaces/ens19/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF


cat << 'EOF' > /etc/net/ifaces/ens20.100/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/ens20.200/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/ens20.999/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/gre10/options
BOOTPROTO=static
SYSTEMD_BOOTPROTO=static
TYPE=iptun
TUNTYPE=gre
CONFIG_WIRELESS=no
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
TUNLOCAL=172.16.1.2
TUNREMOTE=172.16.2.2
TUNTTL=32
TUNOPTIONS='ttl 32'
EOF

echo 172.16.1.2/28 > ens19/ipv4address
echo default via 172.16.1.1 > ens19/ipv4route

echo 192.168.100.1/27 > ens20.100/ipv4address
echo 192.168.200.1/28 > ens20.200/ipv4address
echo 192.168.99.1/29 > ens20.999/ipv4address

echo 10.0.0.1/30 > gre10/ipv4address

VI. Настройка VLAN-интерфейсов

VLAN разделяет один физический порт на несколько изолированных логических сетей по стандарту 802.1Q. В etcnet подынтерфейс описывается параметрами TYPE=vlan, VID=<тег> и HOST=<родительский интерфейс>. Так на одном линке между коммутатором и роутером поднимаются отдельные подсети — например, для пользователей, серверов и управления.

Пример конфигурации
echo HOST=ens20 >> ens20.100/options
echo HOST=ens20 >> ens20.200/options
echo HOST=ens20 >> ens20.999/options

echo VID=100 >> ens20.100/options
echo VID=200 >> ens20.200/options
echo VID=999 >> ens20.999/options

sed -i 's/TYPE=eth/TYPE=vlan/g' ens20.100/options
sed -i 's/TYPE=eth/TYPE=vlan/g' ens20.200/options
sed -i 's/TYPE=eth/TYPE=vlan/g' ens20.999/options

echo nameserver 77.88.8.8 > /etc/resolv.conf

VII. Применяем сетевые настройки

Перезапуск службы network перечитывает конфигурацию из /etc/net/ifaces/ и поднимает интерфейсы с новыми параметрами — применяются все правки адресов, маршрутов, VLAN и туннелей.

Пример конфигурации
systemctl restart network

VIII. Установка и настройка динамической маршрутизации (FRR / OSPF), nano и iptables

FRR (Free Range Routing) — пакет демонов динамической маршрутизации; за OSPF отвечает демон ospfd, выключенный по умолчанию и включаемый в /etc/frr/daemons. OSPF автоматически распространяет маршруты между роутерами, избавляя от ручной статики. Вместе ставятся вспомогательные утилиты.

Пример конфигурации
apt-get update
apt-get install frr dhcp-server sudo nano iptables -y
sed -i 's/ospfd=no/ospfd=yes/g' /etc/frr/daemons

systemctl enable --now frr

IX. Настройка NAT

NAT (маскарадинг) подменяет приватные адреса внутренней сети на внешний адрес роутера, чтобы трафик мог выходить наружу. Правило в цепочке POSTROUTING таблицы nat с действием MASQUERADE применяется к исходящему интерфейсу. iptables-save сохраняет правила в файл, а включение службы iptables восстанавливает их после перезагрузки.

Пример конфигурации
iptables -t nat -A POSTROUTING -o ens19 -j MASQUERADE
iptables-save -f /etc/sysconfig/iptables
systemctl enable --now iptables.service

X. Настройка DNS-резолвера

Файл /etc/resolv.conf указывает, какой DNS-сервер использовать для разрешения имён. nameserver — адрес сервера, search/domain — суффикс, автоматически дописываемый к коротким именам. На внутренних узлах сюда прописывают локальный DNS.

Пример конфигурации
cat << EOF > /etc/resolv.conf
nameserver 192.168.100.2
search au-team.irpo
domain au-team.irpo
EOF

XI. Конфигурация OSPF через vtysh

vtysh — единая консоль управления FRR, похожая на CLI сетевого оборудования. Здесь OSPF включается на нужных интерфейсах и объявляются сети по областям (area 0 — магистральная). passive-interface default отключает рассылку OSPF на всех интерфейсах, кроме явно разрешённых, а MD5-аутентификация защищает соседство от посторонних. Команда wr сохраняет конфигурацию.

Пример конфигурации
vtysh
conf t
interface gre10
ip ospf network point-to-point
ip ospf message-digest-key 1 md5 P@ssw0rd
ip ospf authentication message-digest
no ip ospf passive
exit
!
router ospf
passive-interface default
network 10.0.0.0/30 area 0
network 192.168.10.0/30 area 0
network 192.168.99.0/29 area 0
network 192.168.100.0/27 area 0
exit
exit
wr
exit

XII. Настройка DHCP-сервера

DHCP автоматически выдаёт клиентам адреса и сетевые параметры. В dhcpd.conf описывается подсеть, диапазон выдаваемых адресов (range), шлюз, маска, DNS и домен. Служба привязывается к конкретному интерфейсу через DHCPDARGS и включается для автозапуска.

Пример конфигурации
cat << EOF >  /etc/dhcp/dhcpd.conf
ddns-update-style none;

subnet 192.168.200.0 netmask 255.255.255.240 {
       option routers                   192.168.200.1;
       option subnet-mask              255.255.255.240;

       option domain-name               "au-team.irpo";
       option domain-name-servers       192.168.100.2;

       range dynamic-bootp 192.168.200.2 192.168.200.12;
       default-lease-time 21600;
       max-lease-time 43200;
}
EOF

echo DHCPDARGS=ens20.200 > /etc/sysconfig/dhcpd
systemctl enable --now dhcpd

XIII. Проверка службы dhcpd

Проверка, успешно ли запущена служба dhcp-сервера

Пример конфигурации
systemctl status dhcpd

Маршрутизатор площадки B

Маршрутизатор площадки B: подключается к площадке A через GRE-туннель и обменивается маршрутами по OSPF.

I. Идентификация хоста и времени

Имя хоста идентифицирует узел в сети и подставляется в приглашение командной строки, журналы и сетевые службы (DNS, Kerberos). hostnamectl записывает имя без перезагрузки, а вызов bash нужен, чтобы новое имя сразу отобразилось в приглашении. Часовой пояс через timedatectl важен для корректных меток времени в логах и протоколов, чувствительных ко времени.

Пример конфигурации
hostnamectl hostname br-rtr.au-team.irpo
bash
timedatectl set-timezone Europe/Moscow

II. Создание пользователей

Создаём пользователя net_admin в группе wheel с правами выполнять sudo без пароля. Пароль пользователя - P@ssw0rd

Пример конфигурации
useradd -m net_admin
echo "net_admin:P@ssw0rd" | chpasswd
usermod -aG wheel net_admin
echo 'net_admin ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers

III. Включение маршрутизации (IP Forwarding)

По умолчанию Linux не пересылает пакеты между интерфейсами и ведёт себя как конечный узел, а не маршрутизатор. Параметр ядра net.ipv4.ip_forward включает пересылку IPv4-пакетов; правка в sysctl.conf делает её постоянной. Без этого роутер не сможет передавать трафик между подсетями.

Пример конфигурации
cd /etc/net/
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' sysctl.conf
cd ifaces/

IV. Подготовка шаблонов интерфейсов

В ALT Linux каждый сетевой интерфейс описывается отдельным каталогом в /etc/net/ifaces/ (система etcnet) с файлами options, ipv4address, ipv4route. Копирование готового каталога через cp -R — быстрый способ создать новый интерфейс на основе шаблона, в том числе VLAN-подынтерфейсы (имя вида enpXsY.100) и туннели.

Пример конфигурации
cp -R ens19 ens20
cp -R ens19 gre10

V. Настройка IPv4-адресов и маршрутов

Файл options задаёт способ получения адреса: BOOTPROTO=dhcp — адрес выдаёт вышестоящий сервер (для аплинка к провайдеру), static — адрес прописывается вручную (для внутренних сетей). Сам адрес с маской в формате CIDR записывается в файл ipv4address, а шлюз по умолчанию (default via …) — в ipv4route.

Пример конфигурации
cat << 'EOF' > /etc/net/ifaces/ens19/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/ens20/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

cat << 'EOF' > /etc/net/ifaces/gre10/options
BOOTPROTO=static
SYSTEMD_BOOTPROTO=static
TYPE=iptun
TUNTYPE=gre
CONFIG_WIRELESS=no
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
TUNLOCAL=172.16.2.2
TUNREMOTE=172.16.1.2
TUNTTL=32
TUNOPTIONS='ttl 32'
EOF

echo 172.16.2.2/28 > ens19/ipv4address
echo default via 172.16.2.1 > ens19/ipv4route

echo 192.168.0.1/28 > ens20/ipv4address

echo 10.0.0.2/30 > gre10/ipv4address

VI. Настраиваем временный DNS-резолвер

Пока внутренний DNS ещё не поднят, в /etc/resolv.conf временно прописывается публичный сервер (nameserver), чтобы работало разрешение имён и установка пакетов. Позже его заменяют на локальный DNS.

Пример конфигурации
echo nameserver 77.88.8.8 > /etc/resolv.conf

VII. Установка и настройка динамической маршрутизации (FRR / OSPF), nano и iptables

FRR (Free Range Routing) — пакет демонов динамической маршрутизации; за OSPF отвечает демон ospfd, выключенный по умолчанию и включаемый в /etc/frr/daemons. OSPF автоматически распространяет маршруты между роутерами, избавляя от ручной статики. Вместе ставятся вспомогательные утилиты.

Пример конфигурации
systemctl restart network

apt-get update
apt-get install frr dhcp-server sudo nano iptables -y
sed -i 's/ospfd=no/ospfd=yes/g' /etc/frr/daemons

systemctl enable --now frr

VIII. Настройка DNS-резолвера

Файл /etc/resolv.conf указывает, какой DNS-сервер использовать для разрешения имён. nameserver — адрес сервера, search/domain — суффикс, автоматически дописываемый к коротким именам. На внутренних узлах сюда прописывают локальный DNS.

Пример конфигурации
cat << EOF > /etc/resolv.conf
nameserver 192.168.100.2
search au-team.irpo
domain au-team.irpo
EOF

IX. Применяем сетевые настройки

Перезапуск службы network перечитывает конфигурацию из /etc/net/ifaces/ и поднимает интерфейсы с новыми параметрами — применяются все правки адресов, маршрутов, VLAN и туннелей.

Пример конфигурации
systemctl restart network

X. Настройка NAT

NAT (маскарадинг) подменяет приватные адреса внутренней сети на внешний адрес роутера, чтобы трафик мог выходить наружу. Правило в цепочке POSTROUTING таблицы nat с действием MASQUERADE применяется к исходящему интерфейсу. iptables-save сохраняет правила в файл, а включение службы iptables восстанавливает их после перезагрузки.

Пример конфигурации
iptables -t nat -A POSTROUTING -o ens19 -j MASQUERADE
iptables-save -f /etc/sysconfig/iptables
systemctl enable --now iptables.service

XI. Конфигурация OSPF через vtysh

vtysh — единая консоль управления FRR, похожая на CLI сетевого оборудования. Здесь OSPF включается на нужных интерфейсах и объявляются сети по областям (area 0 — магистральная). passive-interface default отключает рассылку OSPF на всех интерфейсах, кроме явно разрешённых, а MD5-аутентификация защищает соседство от посторонних. Команда wr сохраняет конфигурацию.

Пример конфигурации
vtysh
conf t
interface gre10
ip ospf network point-to-point
ip ospf message-digest-key 1 md5 P@ssw0rd
ip ospf authentication message-digest
no ip ospf passive
exit
!
router ospf
passive-interface default
network 10.0.0.0/30 area 0
network 192.168.0.0/28 area 0
exit
exit
wr
exit

Сервер площадки A

Сервер площадки A: выполняет роль внутреннего DNS-сервера (dnsmasq) для домена сети и настроен на защищённый SSH-доступ.

I. Идентификация хоста и времени

Имя хоста идентифицирует узел в сети и подставляется в приглашение командной строки, журналы и сетевые службы (DNS, Kerberos). hostnamectl записывает имя без перезагрузки, а вызов bash нужен, чтобы новое имя сразу отобразилось в приглашении. Часовой пояс через timedatectl важен для корректных меток времени в логах и протоколов, чувствительных ко времени.

Пример конфигурации
hostnamectl hostname hq-srv.au-team.irpo
bash
timedatectl set-timezone Europe/Moscow

II. Настройка сетевого интерфейса и DNS-резолвера

На сервере интерфейс настраивается статически: адрес и маска — в ipv4address, шлюз по умолчанию — в ipv4route. DNS-резолвер указывает на внутренний DNS-сервер сети с нужным доменным суффиксом, после чего сетевая служба перезапускается.

Пример конфигурации
cd /etc/net/ifaces/

cat << 'EOF' > /etc/net/ifaces/ens19/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

echo 192.168.100.2/27 > ens19/ipv4address
echo default via 192.168.100.1 > ens19/ipv4route

echo nameserver 77.88.8.8 > ens19/resolv.conf

systemctl restart network

III. Настройка безопасного SSH-доступа (с паролем P@ssw0rd)

Базовое усиление SSH: создаётся отдельный пользователь для входа вместо root и получает права sudo. В sshd_config меняется порт (снижает фоновый перебор), ограничивается число попыток входа (MaxAuthTries), задаётся список разрешённых пользователей (AllowUsers) и баннер-предупреждение. После правок служба sshd перезапускается.

Пример конфигурации
useradd sshuser -m -u 2026
echo "ssh_user:P@ssw0rd" | chpasswd
gpasswd -a sshuser wheel

echo 'sshuser ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers

cat << EOF >> /etc/openssh/sshd_config
port 2026
MaxAuthTries 2 
AllowUsers sshuser
Banner /etc/openssh/banner
EOF

cat << EOF > /etc/openssh/banner
................................
... Authorized access only ...
................................
EOF

systemctl restart sshd

IV. Установка + создание всего конфига dnsmasq

В конфигурационном файле dnsmasq задаются глобальные параметры: interface — на каких сетевых интерфейсах слушать запросы, server — вышестоящие DNS-серверы для пересылки запросов, cache-size — размер кэша. Директивы host-record и address используются для создания статических записей и перенаправления целых доменов на определенные IP-адреса.

Пример конфигурации
apt-get update
apt-get install sudo nano openssh-server dnsmasq -y
cat << EOF > /etc/dnsmasq.conf
no-hosts
server=77.88.8.8
cache-size=1000
all-servers
no-negcache
interface=*
host-record=isp.au-team.irpo,172.16.1.1
host-record=isp.au-team.irpo,172.16.2.1
host-record=hq-rtr.au-team.irpo,192.168.100.1
host-record=hq-rtr.au-team.irpo,192.168.200.1
host-record=hq-rtr.au-team.irpo,192.168.99.1
host-record=hq-srv.au-team.irpo,192.168.100.2
host-record=hq-cli.au-team.irpo,192.168.200.2
host-record=br-rtr.au-team.irpo,172.16.2.2
host-record=br-rtr.au-team.irpo,192.168.0.1
host-record=br-srv.au-team.irpo,192.168.0.2
EOF

V (опционально). Поиск конфликтных процессов, использующих 53 порт

Поскольку dnsmasq для работы требуется 53-й порт (UDP/TCP), необходимо убедиться, что он не занят другими процессами (например, systemd-resolved). Команда ss позволяет просмотреть список слушающих сокетов и найти PID процесса, который перехватил нужный порт.

Пример конфигурации
ss -tlpn | grep :53

VI. Добавляем службу в автозапуск

С помощью systemctl служба dnsmasq добавляется в автозагрузку (enable) и сразу же запускается (--now). Это гарантирует, что DNS-сервер будет стартовать при каждой загрузке операционной системы и начнет обслуживать запросы без необходимости ручной активации.

Пример конфигурации
systemctl enable --now dnsmasq.service

VII (опционально). Убиваем процесс, который использует 53 порт

Если на 53-м порту висит нежелательный процесс, его нужно принудительно завершить по PID (идентификатору процесса), который мы узнали на предыдущем шаге, чтобы освободить порт для успешного запуска dnsmasq.

Пример конфигурации
kill (id process)

VIII. Смотрим статус службы dnsmasq

Команда systemctl status отображает текущее состояние службы dnsmasq: активна ли она, не упала ли с ошибкой, а также показывает последние строки журнала (логов), что крайне полезно для первичной диагностики и подтверждения успешного запуска сервиса.

Пример конфигурации
systemctl status dnsmasq

IX. Синхронизация часового пояса (доп. проверка)

Повторная установка часового пояса и вывод timedatectl — контрольная проверка, что время и зона выставлены верно. Это важно для протоколов, завязанных на время (Kerberos, TLS, таймеры OSPF).

Пример конфигурации
timedatectl set-timezone Europe/Moscow
timedatectl

Сервер площадки B

Сервер площадки B: базовая сетевая настройка и защищённый SSH-доступ.

I. Идентификация хоста и времени

Имя хоста идентифицирует узел в сети и подставляется в приглашение командной строки, журналы и сетевые службы (DNS, Kerberos). hostnamectl записывает имя без перезагрузки, а вызов bash нужен, чтобы новое имя сразу отобразилось в приглашении. Часовой пояс через timedatectl важен для корректных меток времени в логах и протоколов, чувствительных ко времени.

Пример конфигурации
hostnamectl hostname br-srv.au-team.irpo
bash
timedatectl set-timezone Europe/Moscow

II. Настройка сетевого интерфейса и DNS-резолвера

На сервере интерфейс настраивается статически: адрес и маска — в ipv4address, шлюз по умолчанию — в ipv4route. DNS-резолвер указывает на внутренний DNS-сервер сети с нужным доменным суффиксом, после чего сетевая служба перезапускается.

Пример конфигурации
cd /etc/net/ifaces/

cat << 'EOF' > /etc/net/ifaces/ens19/options
BOOTPROTO=static
TYPE=eth
CONFIG_WIRELESS=no
SYSTEMD_BOOTPROTO=static
CONFIG_IPv4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
EOF

echo 192.168.0.2/28 > ens19/ipv4address
echo default via 192.168.0.1 > ens19/ipv4route

cat << EOF > ens19/resolv.conf
nameserver 192.168.100.2
search au-team.irpo
domain au-team.irpo
EOF

systemctl restart network

III. Настройка безопасного SSH-доступа (пароль - P@ssw0rd)

Базовое усиление SSH: создаётся отдельный пользователь для входа вместо root и получает права sudo. В sshd_config меняется порт (снижает фоновый перебор), ограничивается число попыток входа (MaxAuthTries), задаётся список разрешённых пользователей (AllowUsers) и баннер-предупреждение. После правок служба sshd перезапускается.

Пример конфигурации
useradd sshuser -m -u 2026
echo "ssh_user:P@ssw0rd" | chpasswd
gpasswd -a sshuser wheel

echo 'sshuser ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers

cat << EOF >> /etc/openssh/sshd_config
port 2026
MaxAuthTries 2 
AllowUsers sshuser
Banner /etc/openssh/banner
EOF

cat << EOF > /etc/openssh/banner
................................
... Authorized access only ...
................................
EOF

systemctl restart sshd

Диагностика и проверка конфигурации

Блок 0. Сквозной smoke-тест и MTU

Базовая проверка доступности узлов от самой дальней точки (br-srv) до целевых серверов строго по IP. Тест MTU с флагом -M do ловит «чёрные дыры» фрагментации: когда ICMP-пинг проходит, а TCP-сессии (SSH, SCP, HTTP) зависают из-за некорректного MTU в GRE-туннеле.

Команды проверки
# Последовательный пинг от br-srv (самая дальняя точка):
ping -c2 192.168.0.1        # свой шлюз (br-rtr LAN)
ping -c2 192.168.10.1       # дальний конец туннеля (hq-rtr)
ping -c2 192.168.100.1      # шлюз серверной VLAN на HQ
ping -c2 192.168.100.2      # hq-srv — цель

# Проверка MTU через туннель:
ping -M do -s 1448 -c2 192.168.100.2   # 1448+28=1476 — ДОЛЖНО пройти
ping -M do -s 1500 -c2 192.168.100.2   # ДОЛЖНО НЕ пройти (Frag needed)

Блок 1. Граничный маршрутизатор (ISP) — NAT и форвардинг

Проверка адресов на внешних интерфейсах, работы трансляции адресов (MASQUERADE) и того, что пересылка пакетов (ip_forward) включена как в рантайме, так и в конфигурации для сохранения после перезагрузки.

Команды проверки
ip -br a            # ens19 — адрес от DHCP; ens20 .1.1/28; ens21 .2.1/28; все UP

iptables -t nat -nvL POSTROUTING           # MASQUERADE на out ens19, счётчики растут

cat /proc/sys/net/ipv4/ip_forward          # 1 (в рантайме)
grep ip_forward /etc/net/sysctl.conf       # = 1, без # (постоянность!)

Блок 2. Маршрутизатор площадки A (hq-rtr) — VLAN

Проверка состояния VLAN-интерфейсов

Команды проверки
cat /etc/net/ifaces/ens20.100/options
cat /etc/net/ifaces/ens20.100/ipv4address

cat /etc/net/ifaces/ens20.200/options
cat /etc/net/ifaces/ens20.200/ipv4address

cat /etc/net/ifaces/ens20.999/options
cat /etc/net/ifaces/ens20.999/ipv4address

Блок 3. Маршрутизатор площадки B (br-rtr) — GRE и OSPF

Проверка маршрутизатора филиала: параметры GRE-туннеля, состояние OSPF и наличие маршрутов до всех серверных VLAN площадки A. Также проверяется, что транспортная сеть туннеля не попала в OSPF.

Команды проверки
cat etc/net/ifaces/gre10/options
cat etc/net/ifaces/gre10/ipv4address

vtysh -c "show ip route ospf"

Блок 4. DHCP-сервер (hq-rtr, VLAN 200)

Контроль работы DHCP-сервера для клиентской подсети. Перед перезапуском или при ошибках обязательно проверяется синтаксис конфигурационного файла.

Команды проверки
dhcpd -t                                 # Проверка синтаксиса dhcpd.conf (должно быть тихо)
systemctl status dhcpd                   # active (running)
grep DHCPDARGS /etc/sysconfig/dhcpd      # DHCPDARGS=ens20.200 (привязка к VLAN!)
journalctl -u dhcpd --no-pager -n 30     # DHCPDISCOVER/OFFER/ACK при запросах

Блок 5. DNS-сервер (hq-srv) — dnsmasq

Проверка работы dnsmasq: валидация синтаксиса конфига, статус службы, отсутствие конфликтов на 53 порту, корректное разрешение внутренних имён и успешный форвардинг внешних запросов.

Команды проверки
dnsmasq --test                           # Проверка синтаксиса dnsmasq.conf
systemctl status dnsmasq                 # active (running)
systemctl is-active dnsmasq              # active
ss -tulpn | grep :53                     # dnsmasq слушает 53 (udp и tcp)

# Прямые записи домена:
nslookup hq-rtr.au-team.irpo 127.0.0.1   # 192.168.100.1
nslookup br-srv.au-team.irpo 127.0.0.1   # 192.168.0.2
nslookup hq-cli.au-team.irpo 127.0.0.1   # 192.168.200.2

# Форвардинг наружу:
nslookup ya.ru 127.0.0.1                 # пересылка на 77.88.8.8 работает

Блок 6. SSH и безопасность (Hardening)

Аудит конфигурации SSH-демона: смена стандартного порта, ограничение попыток авторизации, явное разрешение пользователей. Перед применением изменений или при падении службы проверяется синтаксис sshd_config.

Команды проверки
sshd -t                                  # Проверка синтаксиса sshd_config (ошибок быть не должно)
grep -E "^port|MaxAuthTries|AllowUsers|Banner" /etc/openssh/sshd_config
# Ожидаемо: port 2026 / MaxAuthTries 2 / AllowUsers sshuser / Banner /etc/openssh/banner

systemctl status sshd                    # active
ss -tlpn | grep 2026                     # слушает 2026

# Тест входа с клиента:
ssh -p 2026 sshuser@192.168.100.2        # должен показать баннер и пустить

Блок 7. Сквозные «грабли» и постоянность настроек

Проверка параметров, которые часто ломаются после перезагрузки или вызывают асимметричные сбои: MSS-клампинг для TCP через туннель, сохранение правил iptables и привязка resolv.conf к конкретному интерфейсу.

Команды проверки
# MSS-клампинг (ловит "зависание" TCP при работающем пинге)
iptables -t mangle -nvL FORWARD | grep TCPMSS

# Проверка синтаксиса сохранённых правил iptables (перед загрузкой/рестартом)
iptables-restore --test < /etc/sysconfig/iptables

# Постоянность форвардинга на всех роутерах
grep ip_forward /etc/net/sysctl.conf     # = 1, без #

# Постоянность resolv.conf на роутерах (защита от затирания etcnet)
ls /etc/net/ifaces/ens19/resolv.conf    # должен существовать

# Reverse Path Filtering
sysctl net.ipv4.conf.all.rp_filter       # 0 или 2 — ок; 1 (strict) может резать асимметрию

ОСНОВНЫЕ ПАРАМЕТРЫ

Команды проверки
доменное имя - linux-skills.irpo

сеть hq-rtr - 172.20.1.0/28
сеть br-rtr - 172.20.2.0/28

в сторону hq-srv (vlan 110) 192.168.110.0/26
в сторону hq-cli (vlan 120) 192.168.120.0/24
в сторону просто vlan (vlan 888) 192.168.88.0/28

в сторону br-srv 192.168.0.0/27

пользователь rtr - net_mgr
пароль rtr - Mgr@P@ss88

пользователь ssh - srv_user
uid пользователя ssh - 2200
пароль ssh - Srv@P@ss456
порт ssh - 2030