Добавить в корзинуПозвонить
Найти в Дзене
vatrushki

Настройка 3 машрутизаторов на основе ALT Linux

Настройка сетевой инфраструктуры под управлением ALT Linux - задача комплексная. Главная её сложность заключается в работе с уникальной подсистемой etcnet (каталог /etc/net/ifaces/), а также в интеграции современных утилит nftables и маршрутизатора FRR. Топология на этом примере состоит из устройств: Центральный маршрутизатор (провайдер) Роутер1, Роутер2 Сервер1, Клиент Сервер2 В этой статье собран абсолютно полный пошаговый лог команд для пяти узлов сети: ISP, HQ-RTR, BR-RTR, HQ-SRV, BR-SRV и HQ-CLI. 1. Настройка центрального роутера (Интернет-провайдер) Провайдер выступает шлюзом в глобальную сеть, настраивает внутренние интерфейсы и маскирует трафик. Bash# Имя хоста hostnamectl hostname ISP exec bash # Проверка настроек ВНЕШНЕГО интерфейса cat /etc/net/ifaces/ens18/options # Настройка ВНУТРЕННИХ интерфейсов mkdir -p /etc/net/ifaces/ens{19,20} echo 'TYPE=eth' | tee /etc/net/ifaces/ens{19,20}/options echo '172.16.1.1/28' > /etc/net/ifaces/ens19/ipv4address echo '172.16.2.1/28' >

Настройка сетевой инфраструктуры под управлением ALT Linux - задача комплексная. Главная её сложность заключается в работе с уникальной подсистемой etcnet (каталог /etc/net/ifaces/), а также в интеграции современных утилит nftables и маршрутизатора FRR. Топология на этом примере состоит из устройств:

Центральный маршрутизатор (провайдер)

Роутер1, Роутер2

Сервер1, Клиент

Сервер2

В этой статье собран абсолютно полный пошаговый лог команд для пяти узлов сети: ISP, HQ-RTR, BR-RTR, HQ-SRV, BR-SRV и HQ-CLI.

1. Настройка центрального роутера (Интернет-провайдер)

Провайдер выступает шлюзом в глобальную сеть, настраивает внутренние интерфейсы и маскирует трафик. Bash# Имя хоста

hostnamectl hostname ISP

exec bash

# Проверка настроек ВНЕШНЕГО интерфейса

cat /etc/net/ifaces/ens18/options

# Настройка ВНУТРЕННИХ интерфейсов

mkdir -p /etc/net/ifaces/ens{19,20}

echo 'TYPE=eth' | tee /etc/net/ifaces/ens{19,20}/options

echo '172.16.1.1/28' > /etc/net/ifaces/ens19/ipv4address

echo '172.16.2.1/28' > /etc/net/ifaces/ens20/ipv4address

# Настройка NAT через nftables

apt-get update && apt-get install nftables -y

cat << EOF > /etc/nftables/nftables.nft

#!/usr/sbin/nft -f

flush ruleset

table ip nat {

chain postrouting {

type nat hook postrouting priority srcnat;

oifname "ens18" masquerade

}

}

EOF

# Проверка созданного конфига и запуск службы

cat /etc/nftables/nftables.nft

systemctl enable --now nftables

# Включение маршрутизации в ядре

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf

systemctl restart network

sysctl net.ipv4.ip_forward

2. Настройка 1 роутера. Этот роутер делит локальную сеть на VLAN'ы, поднимает GRE-туннель до филиала, запускает динамическую маршрутизацию OSPF и DHCP-сервер.

hostnamectl hostname hq-rtr.au-team.irpo

exec bash

# Настройка сетевой структуры и VLAN

mkdir -p /etc/net/ifaces/{ens19,vlan{100,200,999},gre1}

echo 'TYPE=eth' | tee /etc/net/ifaces/ens{18,19}/options

# Внешний интерфейс (к центральному роутеру)

echo '172.16.1.2/28' > /etc/net/ifaces/ens18/ipv4address

echo 'default via 172.16.1.1' > /etc/net/ifaces/ens18/ipv4route

echo 'nameserver 8.8.8.8' > /etc/net/ifaces/ens18/resolv.conf

# Нарезка VLAN 100, 200, 999

echo $'100\n200\n999' | xargs -i bash -c 'echo -e "TYPE=vlan\nHOST=ens19\nVID={}" > /etc/net/ifaces/vlan{}/options'

# Проверка опций VLAN и назначение IP

cat /etc/net/ifaces/vlan999/options

echo '192.168.100.1/27' > /etc/net/ifaces/vlan100/ipv4address

echo '192.168.200.1/28' > /etc/net/ifaces/vlan200/ipv4address

echo '192.168.99.1/29' > /etc/net/ifaces/vlan999/ipv4address

# Включение маршрутизации

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf

# Настройка GRE-туннеля

cat << EOF > /etc/net/ifaces/gre1/options

TYPE=iptun

TUNTYPE=gre

TUNLOCAL=172.16.1.2

TUNREMOTE=172.16.2.2

TUNOPTIONS='ttl 64'

EOF

cat /etc/net/ifaces/gre1/options

echo "10.10.10.1/30" > /etc/net/ifaces/gre1/ipv4address

systemctl restart network

# Проверки сети

ip -br -c a

ping 10.10.10.2 -c 3

ping ya.ru -c 2

# Установка ПО

apt-get install frr dnsmasq nftables -y

# Смена DNS на локальный (направляем на будущий сервер1)

rm -f /etc/net/ifaces/ens18/resolv.conf

echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/vlan100/resolv.conf

# Локальный NAT

cat << EOF > /etc/nftables/nftables.nft

#!/usr/sbin/nft -f

flush ruleset

table ip nat {

chain postrouting {

type nat hook postrouting priority srcnat

oifname "ens18" masquerade

}

}

EOF

systemctl enable --now nftables

# Настройка часового пояса

timedatectl set-timezone Europe/Moscow

# Создание администратора net_admin

useradd net_admin

echo "net_admin:P@ssw0rd" | chpasswd

usermod -aG wheel net_admin

echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/net_admin

su -l net_admin

sudo id

# Настройка OSPF через FRR

sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons ; grep ospf /etc/frr/daemons

cat <<'EOF' > /etc/frr/frr.conf

interface gre

no ip ospf passive

exit

!

interface gre1

ip ospf area 0

ip ospf authentication

ip ospf authentication-key P@ssw0rd

no ip ospf passive

exit

!

interface vlan100

ip ospf area 0

exit

!

interface vlan200

ip ospf area 0

exit

!

interface vlan999

ip ospf area 0

exit

!

router ospf

passive-interface default

exit

EOF

# Настройка DHCP (dnsmasq)

sed -i 's/AUTO_LOCAL_RESOLVER=yes/AUTO_LOCAL_RESOLVER=no/' /etc/sysconfig/dnsmasq ; grep AUTO_LOCAL_RESOLVER /etc/sysconfig/dnsmasq

cat <<'EOF' > /etc/dnsmasq.conf

port=0

interface=vlan200

listen-address=192.168.200.1

dhcp-authoritative

dhcp-range=interface:vlan200,192.168.200.2,192.168.200.2,255.255.255.240,6h

dhcp-option=3,192.168.200.1

dhcp-option=6,192.168.100.2

leasefile-ro

EOF

# Запуск сервисов и финальная проверка вывода

systemctl enable --now frr dnsmasq ; ss -lun | grep 67

systemctl restart network

cat /etc/resolv.conf

ip r | grep ospf

3. Настройка узла роутер2 (Роутер филиала)Логин/пароль: root/toor. Настраивает встречный GRE-туннель, OSPF и локального пользователя. Bash# Имя хоста

hostnamectl hostname br-rtr.au-team.irpo

exec bash

# Сетевые интерфейсы

mkdir -p /etc/net/ifaces/{ens19,gre1}

echo 'TYPE=eth' | tee /etc/net/ifaces/ens{18,19}/options

# Маршрут к центральному роутеру

echo '172.16.2.2/28' > /etc/net/ifaces/ens18/ipv4address

echo 'default via 172.16.2.1' > /etc/net/ifaces/ens18/ipv4route

echo 'nameserver 8.8.8.8' > /etc/net/ifaces/ens18/resolv.conf

# Внутренняя сеть (к роутеру2)

echo '192.168.3.1/28' > /etc/net/ifaces/ens19/ipv4address

# Включение маршрутизации

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/net/sysctl.conf

# GRE-туннель

cat << EOF > /etc/net/ifaces/gre1/options

TYPE=iptun

TUNTYPE=gre

TUNLOCAL=172.16.2.2

TUNREMOTE=172.16.1.2

TUNTTL=64

TUNOPTIONS='ttl 64'

EOF

cat /etc/net/ifaces/gre1/options

echo "10.10.10.2/30" > /etc/net/ifaces/gre1/ipv4address

systemctl restart network

ip -br -c a

# Установка FRR

apt-get install frr -y

# Перенаправление DNS на центральный DNS-сервер

rm -f /etc/net/ifaces/ens18/resolv.conf

echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/ens18/resolv.conf

# NAT на внешнем интерфейсе

cat << EOF > /etc/nftables/nftables.nft

#!/usr/sbin/nft -f

flush ruleset

table ip nat {

chain postrouting {

type nat hook postrouting priority srcnat;

oifname "ens18" masquerade

}

}

EOF

# Таймзона

timedatectl set-timezone Europe/Moscow

# Создание net_admin

useradd net_admin

echo "net_admin:P@ssw0rd" | chpasswd

usermod -aG wheel net_admin

echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/net_admin

su -l net_admin

sudo id

# Настройка OSPF

sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons ; grep ospf /etc/frr/daemons

cat <<'EOF' > /etc/frr/frr.conf

interface gre1

ip ospf area 0

ip ospf authentication

ip ospf authentication-key P@ssw0rd

no ip ospf passive

exit

!

interface ens19

ip ospf area 0

exit

!

router ospf

passive-interface default

exit

EOF

# Запуск служб и проверка таблиц маршрутов

systemctl restart network

systemctl enable --now nftables frr

cat /etc/resolv.conf

ip r

4. Настройка узла сервер1 (Центральный сервер) Важно перед началом: установить тег VLAN 100 на интерфейс виртуализации. Логин/пароль: root/toor. Здесь настраивается защищенный SSH и DNS-сервер BIND9.

Bash# Имя хоста и NTP

hostnamectl hostname hq-srv.au-team.irpo

exec bash

timedatectl set-timezone Europe/Moscow

# Конфигурация сети

echo 'TYPE=eth' > /etc/net/ifaces/ens18/options

echo '192.168.100.2/27' > /etc/net/ifaces/ens18/ipv4address

echo 'default via 192.168.100.1' > /etc/net/ifaces/ens18/ipv4route

echo 'nameserver 8.8.8.8' > /etc/net/ifaces/ens18/resolv.conf

systemctl restart network

ping zz.ru -c3

# Создание пользователя sshuser

useradd -u 2026 sshuser

echo "sshuser:P@ssw0rd" | chpasswd

usermod -aG wheel sshuser

echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/sshuser

su -l sshuser

sudo id

# Кастомизация и защита SSH (порт 2026)

echo "Authorized access only" > /etc/openssh/banner

echo -e "Port 2026\nMaxAuthTries 2\nAllowUsers sshuser\nBanner /etc/openssh/banner\n" >> /etc/openssh/sshd_config

systemctl restart sshd

ss -ltnp | grep sshd

# Проверка локального подключения по измененному порту

ssh sshuser@127.0.0.1 -p 2026

# Установка BIND9

apt-get update && apt-get install bind bind-utils -y

# Изменение DNS на себя (петля)

echo $'search au-team.irpo\nnameserver 127.0.0.1' > /etc/net/ifaces/ens18/resolv.conf

# Генерация ключа rndc и создание глобальных опций BIND

rndc-confgen -a -c /etc/bind/rndc.key

cat <<'EOF' > /etc/bind/options.conf

logging { };

options {

listen-on { localnets; 127.0.0.1; };

forwarders { 77.88.8.7; 77.88.8.3; };

recursion yes;

allow-recursion { any; };

allow-query { any; };

dnssec-validation no;

directory "/etc/bind/zone";

dump-file "/var/run/named/named_dump.db";

statistics-file "/var/run/named/named.stats";

recursing-file "/var/run/named/named.recursing";

secroots-file "/var/run/named/named.scroots";

pid-file none;

};

zone "au-team.irpo" {

type master;

file "au-team.irpo";

};

zone "168.192.in-addr.arpa" {

type master;

file "168.192.in-addr.arpa";

};

EOF

# Создание прямой зоны базы данных DNS

cat <<'EOF' > /etc/bind/zone/au-team.irpo

$TTL 1D

@ IN SOA au-team.irpo. root.au-team.irpo.

(

2025020600 ; serial

12H ; refresh

1H ; retry

1W ; expire

1H ; ncache

)

@ IN NS hq-srv.au-team.irpo.

hq-rtr IN A 192.168.100.1

hq-srv IN A 192.168.100.2

hq-cli IN A 192.168.200.2

br-rtr IN A 192.168.1.1

br-srv IN A 192.168.1.2

docker IN A 172.16.1.1

web IN A 172.16.2.1

EOF [cite: 23, 24, 25, 26]

# Создание обратной зоны базы данных DNS

cat <<'EOF' > /etc/bind/zone/168.192.in-addr.arpa

$TTL 1D

@ IN SOA au-team.irpo.

root.au-team.irpo. (

2025020600 ; serial

12H ; refresh

1H ; retry

1W ; expire

1H ; ncache

)

IN NS au-team.irpo.

1.100 IN PTR hq-rtr.au-team.irpo.

2.100 IN PTR hq-srv.au-team.irpo.

2.200 IN PTR hq-cli.au-team.irpo.

EOF

# Права на файлы зон и старт DNS-сервера

chown :named /etc/bind/zone/au-team.irpo /etc/bind/zone/168.192.in-addr.arpa

systemctl enable --now bind

# Финальный перезапуск сети и проверка разрешения имен

service network restart [

host br-rtr

host -t PTR 192.168.100.2

5. Настройка узлов сервер 2(Сервер филиала) и Клиент. Узлы периферии инфраструктуры. На сервере филиала также настраивается кастомный SSH-доступ. Настройка BR-SRV. Bash# Имя хоста и часовой пояс

hostnamectl hostname br-srv.au-team.irpo

exec bash

timedatectl set-timezone Europe/Moscow

# Сеть

echo 'TYPE=eth' > /etc/net/ifaces/ens18/options

echo '192.168.3.2/26' > /etc/net/ifaces/ens18/ipv4address

echo 'default via 192.168.3.1' > /etc/net/ifaces/ens18/ipv4route

echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/ens18/resolv.conf

systemctl restart network

# Проверка связи с центральным сервером

ping hq-srv -c 3

# Создание пользователя sshuser

useradd -u 2026 sshuser

echo "sshuser:P@ssw0rd" | chpasswd

usermod -aG wheel sshuser

echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/sshuser [cite: 32]

su -l sshuser

sudo id

# Настройка безопасного SSH

echo "Authorized access only" > /etc/openssh/banner

echo -e "Port 2026\nMaxAuthTries 2\nAllowUsers sshuser\nBanner /etc/openssh/banner\n" >> /etc/openssh/sshd_config

systemctl restart sshd

# Контроль прослушивания портов

ss -ltnp | grep sshd

Настройка HQ-CLI:Важно: Предварительно установить тег VLAN 200 на сетевом интерфейсе в панели виртуализации. Bash# Имя хоста и таймзона

hostnamectl hostname hq-cli.au-team.irpo

exec bash

timedatectl set-timezone Europe/Moscow

# Контроль получения сетевых настроек от DHCP (dnsmasq роутера HQ-RTR)

ip -br -c a