VyOS. Конфигурирование

2026-10-18 · 11 мин. для прочтения
blog computer-science

VyOS. Конфигурирование.

Содержание

1 Быстрая настройка (старая)

1.1 Конфигурация интерфейсов

  • Внешний интерфейс: eth0. Он получает адрес по DHCP.
  • Внутренний интерфейс: eth1. Использует статический IP-адрес 192.168.0.1/24.
  • После перехода в режим конфигурации введём следующие команды:
    set interfaces ethernet eth0 address dhcp
    set interfaces ethernet eth0 description 'OUTSIDE'
    set interfaces ethernet eth1 address '192.168.0.1/24'
    set interfaces ethernet eth1 description 'INSIDE'
    

1.2 SSH-сервер

  • Включим ssh-сервер:
    set service ssh port '22'
    

1.3 Сервисы DHCP и DNS

  • Сетевые настройки:
    • Шлюз по умолчанию и адрес сервера DNS: 192.168.0.1/24.
    • Диапазон адресов для статических назначений: 192.168.0.2/24–192.168.0.8/24.
    • Диапазон адресов для клиентов DHCP: 192.168.0.9–192.168.0.254.
    • Время аренды адреса DHCP: однин день (86400 секунд).
    • Рекурсор DNS могут использовать только хосты из локальной сети.
  • Конфигурация:
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 default-router '192.168.0.1'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 name-server '192.168.0.1'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 domain-name 'vyos.net'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 lease '86400'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 start 192.168.0.9
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 stop '192.168.0.254'
    
    set service dns forwarding cache-size '0'
    set service dns forwarding listen-address '192.168.0.1'
    set service dns forwarding allow-from '192.168.0.0/24'
    

1.4 Настройка NAT

  • Настроим правила SNAT для внутренней сети:
    set nat source rule 100 outbound-interface 'eth0'
    set nat source rule 100 source address '192.168.0.0/24'
    set nat source rule 100 translation address masquerade
    

1.5 Брандмауэр

  • Блокируем весь трафик, который не был инициирован со стороны локальной сети:
    set firewall name OUTSIDE-IN default-action 'drop'
    set firewall name OUTSIDE-IN rule 10 action 'accept'
    set firewall name OUTSIDE-IN rule 10 state established 'enable'
    set firewall name OUTSIDE-IN rule 10 state related 'enable'
    
    set firewall name OUTSIDE-LOCAL default-action 'drop'
    set firewall name OUTSIDE-LOCAL rule 10 action 'accept'
    set firewall name OUTSIDE-LOCAL rule 10 state established 'enable'
    set firewall name OUTSIDE-LOCAL rule 10 state related 'enable'
    set firewall name OUTSIDE-LOCAL rule 20 action 'accept'
    set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request'
    set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp'
    set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'
    
  • Разрешим SSH-доступ к маршрутизатору с внешнего интерфейса.
  • Ограничивают до 4 запросов в минуту (для блокировки взлома грубой силой):
    set firewall name OUTSIDE-LOCAL rule 30 action 'drop'
    set firewall name OUTSIDE-LOCAL rule 30 destination port '22'
    set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp'
    set firewall name OUTSIDE-LOCAL rule 30 recent count '4'
    set firewall name OUTSIDE-LOCAL rule 30 recent time '60'
    set firewall name OUTSIDE-LOCAL rule 30 state new 'enable'
    
    set firewall name OUTSIDE-LOCAL rule 31 action 'accept'
    set firewall name OUTSIDE-LOCAL rule 31 destination port '22'
    set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp'
    set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'
    
  • Применим политики брандмауэра:
    set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'
    set interfaces ethernet eth0 firewall local name 'OUTSIDE-LOCAL'
    
  • Зафиксируем изменения, сохраним конфигурацию и выйдем из режима конфигурации:
    vyos@vyos# commit
    vyos@vyos# save
    Saving configuration to '/config/config.boot'...
    Done
    vyos@vyos# exit
    vyos@vyos$
    

1.6 Настройка безопасности

  • Заменим системного пользователя по умолчанию:
    set system login user myvyosuser authentication plaintext-password mysecurepassword
    
  • Настроим аутентификацию на основе ключа:
    set system login user myvyosuser authentication public-keys myusername@mydesktop type ssh-rsa
    set system login user myvyosuser authentication public-keys myusername@mydesktop key contents_of_id_rsa.pub
    
  • Удалим исходного пользователя vyos полностью отключим аутентификацию по паролю для SSH:
    delete system login user vyos
    set service ssh disable-password-authentication
    
  • Зафиксируем изменения, сохраним конфигурацию и выйдем из режима конфигурации:
    vyos@vyos# commit
    vyos@vyos# save
    Saving configuration to '/config/config.boot'...
    Done
    vyos@vyos# exit
    vyos@vyos$
    

2 Быстрая настройка

2.1 Предварительные условия

  • Настроим шлюз NAT с двумя сетевыми интерфейсами (eth0 и eth1).
  • После установки VyOS войдите в систему используя учетные данные по умолчанию:
    • username: vyos
    • password: vyos

2.2 Режим конфигурации

  • В рабочем режиме в командной строке отображается символ $.
  • В режиме конфигурации в командной строке отображается #.
  • Для внесения изменений в конфигурацию необходимо войти в режим конфигурации:
    vyos@vyos:~$ configure
    [edit]
    vyos@vyos#
    

2.3 Соранение конфигурации

  • Изменения в конфигурации не вступят в силу, пока не будет выполнена команда commit.

  • После каждого изменения конфигурации необходимо применить изменения:

    commit
    
  • В конце нужно сохранить конфигурацию:

    save
    
  • commit : применяет изменения конфигурации

  • save : сохраняет конфигурацию на постоянной основе

2.4 Конфигурация интерфейсов

2.4.1 WAN интерфейс (eth0)

  • Настройка внешнего интерфейса для получения IP-адреса через DHCP:
    set interfaces ethernet eth0 address dhcp
    set interfaces ethernet eth0 description 'WAN'
    

2.4.2 LAN интерфейс (eth1)

  • Настройка внутреннего интерфейса со статическим IP-адресом:
    set interfaces ethernet eth1 address '192.168.0.1/24'
    set interfaces ethernet eth1 description 'LAN'
    

2.5 Имя хоста

  • Задайте имя хоста:
    set system host-name <hostname>
    

2.6 Настройка SSH

  • Включение SSH для удаленного управления:
    set service ssh port 22
    

2.7 Конфигурация DHCP и DNS

2.7.1 DHCP сервер

  • Настройка DHCP-сервера для внутренней сети:

    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 option default-router '192.168.0.1'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 option name-server '192.168.0.1'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 option domain-name 'internal-network'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 start '192.168.0.9'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 stop '192.168.0.254'
    set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 subnet-id 1
    
  • Параметры:

    • default-router : шлюз по умолчанию для клиентов
    • name-server : dns-сервер для клиентов
    • domain-name : доменное имя
    • range : диапазон выдаваемых IP-адресов (192.168.0.9 - 192.168.0.254)
    • lease : время аренды адреса (по умолчанию 86400 секунд)

2.7.2 DNS forwarding

  • Настройка DNS-пересылки:
    set service dns forwarding listen-address '192.168.0.1'
    set service dns forwarding allow-from '192.168.0.0/24'
    

2.7.3 Системные DNS-серверы

  • VyOS использует DNS-серверы, указанные в конфигурации system name-server , для разрешения имён для собственных нужд (ping, обновления и т.д.).
  • Рекомендуется указывать не более трёх серверов.
  • Настройте DNS-серверы (например, Яндекс и Cloudflare):
    set system name-server 77.88.8.8
    set system name-server 1.1.1.1
    

2.8 Конфигурация NAT

  • Настройка Source NAT для доступа внутренней сети в интернет:

    set nat source rule 100 outbound-interface name 'eth0'
    set nat source rule 100 source address '192.168.0.0/24'
    set nat source rule 100 translation address 'masquerade'
    
  • Параметры:

    • rule 100 : номер правила
    • outbound-interface : исходящий интерфейс (WAN)
    • source address : адреса источника (внутренняя сеть)
    • masquerade : IP-маскарадинг (замена адреса источника на адрес WAN-интерфейса)

2.9 Конфигурация межсетевого экрана

  • VyOS использует nftables в качестве backend для firewall.

2.9.1 Настройка групп адресов

  • Создание группы адресов для внутренней сети:
    set firewall group address-group LAN-NETWORKS address '192.168.0.0/24'
    

2.9.2 Правила для входящего трафика (eth0 → router)

  • Создание правил для защиты самого маршрутизатора:
set firewall ipv4 input filter default-action 'drop'
set firewall ipv4 input filter rule 10 action 'accept'
set firewall ipv4 input filter rule 10 state established
set firewall ipv4 input filter rule 10 state related
set firewall ipv4 input filter rule 20 action 'drop'
set firewall ipv4 input filter rule 20 state invalid
set firewall ipv4 input filter rule 30 action 'accept'
set firewall ipv4 input filter rule 30 protocol 'icmp'
set firewall ipv4 input filter rule 40 action 'accept'
set firewall ipv4 input filter rule 40 source group address-group 'LAN-NETWORKS'
  • Логика правил:
    • default-action drop : блокировка всего трафика по умолчанию
    • rule 10 : разрешение established/related соединений
    • rule 20 : отбрасывание invalid пакетов
    • rule 30 : разрешение ICMP (ping)
    • rule 40 : разрешение трафика из внутренней сети

2.9.3 Правила для транзитного трафика (eth0 → eth1)

  • Создание правил для трафика, проходящего через маршрутизатор:
    set firewall ipv4 forward filter default-action 'drop'
    set firewall ipv4 forward filter rule 10 action 'accept'
    set firewall ipv4 forward filter rule 10 state established
    set firewall ipv4 forward filter rule 10 state related
    set firewall ipv4 forward filter rule 20 action 'drop'
    set firewall ipv4 forward filter rule 20 state invalid
    set firewall ipv4 forward filter rule 30 action 'accept'
    set firewall ipv4 forward filter rule 30 source group address-group 'LAN-NETWORKS'
    

2.10 Настройка времени

  • Установите временную зону UTC (координированное всемирное время):

    set system time-zone UTC
    
  • Установите NTP серверы:

    set service ntp server 0.pool.ntp.org
    set service ntp server 1.pool.ntp.org
    

2.11 Применение конфигурации

  • Применение и сохранение изменений:

    commit
    save
    
  • После выполнения этих команд базовая конфигурация NAT-шлюза готова к работе.

2.12 Усиление безопасности

2.12.1 Замена пользователя по умолчанию

  • Создание нового пользователя с правами администратора:

    set system login user admin authentication plaintext-password 'secure_password'
    set system login user admin authentication public-keys user@host key 'AAAAB3Nz....'
    set system login user admin authentication public-keys user@host type 'ssh-rsa'
    
  • Удаление пользователя по умолчанию:

    delete system login user vyos
    

2.12.2 Отключение парольной аутентификации

  • Для повышения безопасности рекомендуется использовать только аутентификацию по SSH-ключам:

    set service ssh disable-password-authentication
    
  • Не забудьте применить изменения:

    commit
    save
    

2.13 Проверка конфигурации

  • Проверка состояния интерфейсов:

    show interfaces
    
  • Проверка таблицы маршрутизации:

    show ip route
    
  • Проверка NAT:

    show nat source rules
    show nat source statistics
    
  • Проверка правил firewall:

    show firewall
    
  • Просмотр активных DHCP-аренд:

    show dhcp server leases
    

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

3.1 Базовая конфигурация

3.1.1 Установка часового пояса

# Установить часовой пояс (Москва)
set system time-zone Europe/Moscow

commit
save
  • Проверка:
# Показать текущее время и часовой пояс
show date

# Результат:
# Wed Oct 14 15:30:45 MSK 2025

3.1.2 Список доступных часовых поясов

# Показать все доступные часовые пояса
ls /usr/share/zoneinfo/

# Часовые пояса России
ls /usr/share/zoneinfo/Europe/ | grep -E "Moscow|Samara|Yekaterinburg|Omsk|Krasnoyarsk|Irkutsk|Yakutsk|Vladivostok|Magadan|Kamchatka"

# Другие регионы
ls /usr/share/zoneinfo/Europe/
ls /usr/share/zoneinfo/America/
ls /usr/share/zoneinfo/Asia/
ls /usr/share/zoneinfo/Africa/
ls /usr/share/zoneinfo/Australia/

3.1.3 Часовые пояса России

  • Основные часовые пояса РФ:

  • Europe/Kaliningrad - MSK-1 (UTC+2)

  • Europe/Moscow - MSK (UTC+3) - Москва, Санкт-Петербург

  • Europe/Samara - MSK+1 (UTC+4) - Самара, Ижевск, Ульяновск

  • Asia/Yekaterinburg - MSK+2 (UTC+5) - Екатеринбург, Челябинск, Пермь

  • Asia/Omsk - MSK+3 (UTC+6) - Омск

  • Asia/Krasnoyarsk - MSK+4 (UTC+7) - Красноярск, Новосибирск, Кемерово

  • Asia/Irkutsk - MSK+5 (UTC+8) - Иркутск, Улан-Удэ

  • Asia/Yakutsk - MSK+6 (UTC+9) - Якутск, Чита

  • Asia/Vladivostok - MSK+7 (UTC+10) - Владивосток, Хабаровск

  • Asia/Magadan - MSK+8 (UTC+11) - Магадан, Сахалин

  • Asia/Kamchatka - MSK+9 (UTC+12) - Петропавловск-Камчатский

# Установить для различных регионов России
set system time-zone Europe/Moscow      # Москва
set system time-zone Asia/Yekaterinburg # Екатеринбург
set system time-zone Asia/Vladivostok   # Владивосток

commit
save

3.1.4 Интеграция с NTP

# Настроить NTP для автоматической синхронизации времени
set service ntp server 0.ru.pool.ntp.org
set service ntp server 1.ru.pool.ntp.org
set service ntp server 2.ru.pool.ntp.org

# Установить часовой пояс
set system time-zone Europe/Moscow

commit
save
  • Проверка синхронизации:
# Статус NTP
show ntp

# Вывод:
#      remote           refid      st t when poll reach   delay   offset  jitter
# ==============================================================================
# *ntp1.example.com .GPS.            1 u   64   64  377    1.234   -0.123   0.045
# +ntp2.example.com .GPS.            1 u   32   64  377    2.345    0.234   0.067

# Показать текущее время
show date

3.2 Расширенная конфигурация

3.2.1 Настройка для распределенной инфраструктуры

  • При наличии роутеров в разных часовых поясах:
    # Роутер в Москве
    set system host-name vyos-msk
    set system time-zone Europe/Moscow
    set service ntp server ntp1.yandex.ru
    set service ntp server ntp2.yandex.ru
    
    # Роутер в Екатеринбурге
    set system host-name vyos-ekb
    set system time-zone Asia/Yekaterinburg
    set service ntp server ntp1.yandex.ru
    set service ntp server ntp2.yandex.ru
    
    # Роутер во Владивостоке
    set system host-name vyos-vvo
    set system time-zone Asia/Vladivostok
    set service ntp server ntp1.yandex.ru
    set service ntp server ntp2.yandex.ru
    
    commit
    save
    

3.2.2 UTC для централизованного логирования

  • Для централизованных систем логирования и мониторинга рекомендуется использовать UTC:
# Установить UTC (координированное всемирное время)
set system time-zone UTC

# NTP серверы
set service ntp server 0.pool.ntp.org
set service ntp server 1.pool.ntp.org

commit
save

3.2.3 Автоматическая настройка часового пояса из DHCP

# Включить получение NTP серверов из DHCP (если WAN интерфейс)
set interfaces ethernet eth0 address dhcp

# DHCP опция 42 (NTP servers) будет автоматически применена
# Но часовой пояс все равно нужно настроить вручную
set system time-zone Europe/Moscow

commit
save

3.3 Лучшие практики

  • Выбор часового пояса
    • Использовать UTC для централизованных систем логирования
    • Использовать локальное время для удобства администраторов
    • Документировать выбранный часовой пояс
    • Согласовать с командой DevOps/NOC
  • NTP конфигурация
    • Использовать минимум 3 NTP сервера
    • Предпочитать локальные NTP серверы для точности
    • Использовать стратум 1-2 серверы для критичных систем
    • Настроить fallback на публичные NTP pool
  • Мониторинг времени
    • Мониторить NTP offset (порог 100ms для общих систем, 1ms для финансовых)
    • Мониторить NTP jitter
    • Алертинг на потерю синхронизации
    • Логировать все коррекции времени
  • Аппаратные часы (RTC)
    • Синхронизировать RTC с системным временем регулярно
    • Проверять батарейку RTC раз в год
    • Автоматически корректировать время при загрузке
  • Планирование задач
    • Учитывать часовой пояс при настройке cron
    • Избегать планирования критичных задач во время потенциального DST перехода
    • Документировать время выполнения задач в комментариях
  • Распределенные системы
    • Синхронизировать все устройства с одним источником времени
    • Использовать централизованный NTP сервер
    • Корпоративный NTP сервер должен синхронизироваться со стратум 1
  • Логирование
    • Включать часовой пояс в timestamp логов
    • Использовать ISO 8601 формат для экспорта логов
    • Конвертировать время при анализе логов из разных часовых поясов
  • Backup и Recovery
    • Проверять время перед выполнением backup
    • Включать timestamp в имена backup файлов
    • Не полагаться только на modification time файлов
  • Аудит
    • Документировать источник времени
    • Хранить логи синхронизации времени
    • Доказать точность времени для аудиторов
    • Соответствие требованиям регуляторов (PCI DSS, SOX)
  • Troubleshooting
    • Всегда проверять время при возникновении проблем
    • Сравнивать время на всех компонентах системы
    • Использовать UTC для корреляции событий
    • Документировать временные аномалии
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.