Настройка сетевой инфраструктуры под управлением 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