VyOS. Конфигурирование
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 могут использовать только хосты из локальной сети.
- Шлюз по умолчанию и адрес сервера 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
- username:
2.2 Режим конфигурации
- В рабочем режиме в командной строке отображается символ
$. - В режиме конфигурации в командной строке отображается
#. - Для внесения изменений в конфигурацию необходимо войти в режим конфигурации:
vyos@vyos:~$ configure [edit] vyos@vyos#
2.3 Соранение конфигурации
Изменения в конфигурации не вступят в силу, пока не будет выполнена команда
commit.После каждого изменения конфигурации необходимо применить изменения:
commitВ конце нужно сохранить конфигурацию:
savecommit: применяет изменения конфигурации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 для корреляции событий
- Документировать временные аномалии
