Host Name - Имя хоста и информация о системе

Host Name - Имя хоста и информация о системе

Host Name - Имя хоста и информация о системе

Данная страница описывает настройку имени хоста (hostname), доменного имени (domain name) и статических записей разрешения имен в VyOS. Эти параметры являются базовыми для идентификации устройства в сети и корректной работы сетевых служб.

Обзор

Имя хоста и доменное имя используются для:

  • Идентификации устройства в сети
  • Формирования FQDN (Fully Qualified Domain Name)
  • Логирования и мониторинга
  • Интеграции с облачными платформами (Yandex Cloud, VK Cloud)
  • DNS-резолюции локальных имен
  • Работы сетевых служб (NTP, SNMP, syslog)

Имя хоста (Hostname)

Описание

Имя хоста - это уникальная метка, идентифицирующая устройство в сети. В VyOS имя хоста используется:

  • В приглашении командной строки (CLI prompt)
  • В логах системы
  • В SNMP system name
  • Как часть FQDN при наличии доменного имени

Ограничения RFC 1123

Имя хоста должно соответствовать стандарту RFC 1123:

Длина:

  • Минимум: 1 символ
  • Максимум: 63 символа

Допустимые символы:

  • Буквы латинского алфавита: a-z, A-Z
  • Цифры: 0-9
  • Дефис: - (только внутри имени)

Правила:

  • Должно начинаться с буквы или цифры
  • Должно заканчиваться буквой или цифрой
  • Внутри может содержать буквы, цифры и дефисы
  • Регистр не учитывается (case-insensitive)
  • Не может содержать точки, подчеркивания или другие специальные символы

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

Базовая настройка

# Установка имени хоста
set system host-name vyos-router

# Применение конфигурации
commit
save

Примеры валидных имен

# Короткое имя
set system host-name gateway

# Имя с цифрами
set system host-name router01

# Имя с дефисами
set system host-name core-router-01

# Максимальная длина (63 символа)
set system host-name vyos-production-core-router-datacenter-moscow-rack-12-unit-1

Примеры невалидных имен

# ОШИБКА: начинается с дефиса
set system host-name -router

# ОШИБКА: заканчивается дефисом
set system host-name router-

# ОШИБКА: содержит подчеркивание
set system host-name vyos_router

# ОШИБКА: содержит точку
set system host-name vyos.router

# ОШИБКА: содержит пробел
set system host-name "vyos router"

# ОШИБКА: более 63 символов
set system host-name vyos-production-core-router-datacenter-moscow-rack-12-unit-1-mgmt

Значение по умолчанию

При первой загрузке VyOS использует имя хоста по умолчанию:

vyos@vyos:~$

После настройки имени хоста приглашение CLI изменится:

# После установки host-name gateway
vyos@gateway:~$

Доменное имя (Domain Name)

Описание

Доменное имя определяет DNS-суффикс, добавляемый к неполным именам хостов для формирования FQDN (Fully Qualified Domain Name).

Принцип работы:

  • Если указан только hostname без домена, используется как есть
  • Если указан hostname и domain-name, формируется FQDN: hostname.domain-name
  • При резолюции неполных имен автоматически добавляется суффикс домена

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

Базовая настройка

# Установка доменного имени
set system domain-name example.com

# Применение конфигурации
commit
save

Полная конфигурация hostname + domain

# Установка имени хоста и домена
set system host-name router01
set system domain-name corp.example.com

# Результат: FQDN = router01.corp.example.com
commit
save

Примеры использования

# Корпоративная сеть
set system host-name core-router
set system domain-name datacenter.moscow.mycompany.ru

# FQDN: core-router.datacenter.moscow.mycompany.ru
# Облачная инфраструктура
set system host-name vyos-gw
set system domain-name cloud.internal

# FQDN: vyos-gw.cloud.internal

Влияние на резолюцию имен

При настроенном domain-name система автоматически добавляет его к неполным именам:

# С настройкой: set system domain-name example.com

# ping server -> DNS запрос для server.example.com
vyos@router:~$ ping server

# Для полных имен суффикс не добавляется
vyos@router:~$ ping server.otherdomain.com

Статические записи хостов (Static Host Mapping)

Описание

Статические записи хостов позволяют создавать локальное разрешение имен в IP-адреса без использования внешнего DNS-сервера. Это аналог ручного редактирования файла /etc/hosts, но с управлением через конфигурацию VyOS.

Преимущества:

  • Управление через конфигурацию VyOS (commit/rollback)
  • Автоматическая генерация /etc/hosts при загрузке
  • Поддержка множественных алиасов для одного хоста
  • Сохранение при перезагрузке

Предупреждение: Не редактируйте файл /etc/hosts вручную - он автоматически перезаписывается при загрузке системы из конфигурации VyOS.

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

Базовая запись

# Добавление статической записи хоста
set system static-host-mapping host-name server1.example.com inet 192.168.1.10

# Применение конфигурации
commit
save

Запись с алиасами

# Основная запись
set system static-host-mapping host-name db-server.corp.local inet 10.0.1.100

# Добавление алиасов
set system static-host-mapping host-name db-server.corp.local alias database
set system static-host-mapping host-name db-server.corp.local alias db
set system static-host-mapping host-name db-server.corp.local alias mysql-primary

# Результат в /etc/hosts:
# 10.0.1.100 db-server.corp.local database db mysql-primary

Множественные хосты

# Внутренние серверы
set system static-host-mapping host-name web01.local inet 10.0.10.11
set system static-host-mapping host-name web02.local inet 10.0.10.12
set system static-host-mapping host-name db01.local inet 10.0.10.21
set system static-host-mapping host-name cache01.local inet 10.0.10.31

# Алиасы для веб-серверов
set system static-host-mapping host-name web01.local alias www1
set system static-host-mapping host-name web02.local alias www2

# Алиасы для базы данных
set system static-host-mapping host-name db01.local alias database
set system static-host-mapping host-name db01.local alias postgres

# Алиасы для кэша
set system static-host-mapping host-name cache01.local alias redis
set system static-host-mapping host-name cache01.local alias cache

IPv6 поддержка

# IPv4 запись
set system static-host-mapping host-name server.example.com inet 192.168.1.10

# IPv6 запись (если поддерживается)
set system static-host-mapping host-name server.example.com inet6 2001:db8::10

# Dual-stack хост
set system static-host-mapping host-name webserver.local inet 10.0.1.50
set system static-host-mapping host-name webserver.local inet6 fd00::50
set system static-host-mapping host-name webserver.local alias www

Удаление записей

# Удаление конкретного алиаса
delete system static-host-mapping host-name server.local alias www

# Удаление всей записи хоста
delete system static-host-mapping host-name server.local

# Применение изменений
commit
save

Примеры для облачных платформ

Пример 1: Yandex Cloud - Cloud-init vs статическая конфигурация

В Yandex Cloud имя хоста может устанавливаться через cloud-init при создании VM. Однако для гарантированного сохранения имени рекомендуется использовать конфигурацию VyOS.

Сценарий: Конфликт cloud-init и VyOS config

# Ситуация: cloud-init устанавливает hostname "instance-1"
# Требуется: переопределить на "vyos-edge-router"

# Решение: Настройка в VyOS имеет приоритет
configure
set system host-name vyos-edge-router
set system domain-name ru-central1.internal

# Статические записи для внутренних сервисов Yandex Cloud
set system static-host-mapping host-name metadata.yandex inet 169.254.169.254
set system static-host-mapping host-name metadata.yandex alias metadata

# Внутренние серверы в Yandex Cloud
set system static-host-mapping host-name app-server-1.ru-central1.internal inet 10.128.0.10
set system static-host-mapping host-name app-server-2.ru-central1.internal inet 10.128.0.11
set system static-host-mapping host-name db-master.ru-central1.internal inet 10.129.0.5

commit
save
exit

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

# Проверка установленного имени хоста
vyos@vyos-edge-router:~$ show host name
vyos-edge-router

# Проверка FQDN
vyos@vyos-edge-router:~$ hostname -f
vyos-edge-router.ru-central1.internal

# Проверка разрешения metadata сервера
vyos@vyos-edge-router:~$ ping metadata
PING metadata.yandex (169.254.169.254) 56(84) bytes of data.

Post-deployment скрипт для Yandex Cloud

#!/bin/vbash
# vyos-yandex-cloud-init.sh
# Скрипт для настройки VyOS в Yandex Cloud после деплоя

source /opt/vyatta/etc/functions/script-template

configure

# Базовая конфигурация хоста
set system host-name vyos-router-{{ zone_id }}
set system domain-name {{ folder_name }}.yandex.internal

# Yandex Cloud metadata service
set system static-host-mapping host-name metadata.yandex.cloud inet 169.254.169.254
set system static-host-mapping host-name metadata.yandex.cloud alias metadata
set system static-host-mapping host-name metadata.yandex.cloud alias cloud-init

# DNS серверы Yandex Cloud
set system name-server 192.168.0.2

commit
save
exit

Пример 2: VK Cloud - DNS резолюция с статическими хостами

В VK Cloud часто требуется настройка локальных имен для внутренних сервисов при отсутствии корпоративного DNS.

Конфигурация для VK Cloud проекта

configure

# Основная конфигурация
set system host-name vkcloud-gateway
set system domain-name msk1.cloud.vk.com

# Статические записи для VK Cloud infrastructure endpoints
set system static-host-mapping host-name infra.mail.ru inet 10.0.0.1
set system static-host-mapping host-name infra.mail.ru alias vk-infra

# Внутренние серверы проекта
set system static-host-mapping host-name app-frontend.msk1.cloud.vk.com inet 10.0.10.10
set system static-host-mapping host-name app-frontend.msk1.cloud.vk.com alias frontend
set system static-host-mapping host-name app-frontend.msk1.cloud.vk.com alias web

set system static-host-mapping host-name app-backend.msk1.cloud.vk.com inet 10.0.10.20
set system static-host-mapping host-name app-backend.msk1.cloud.vk.com alias backend
set system static-host-mapping host-name app-backend.msk1.cloud.vk.com alias api

set system static-host-mapping host-name db-postgres.msk1.cloud.vk.com inet 10.0.20.5
set system static-host-mapping host-name db-postgres.msk1.cloud.vk.com alias database
set system static-host-mapping host-name db-postgres.msk1.cloud.vk.com alias postgres
set system static-host-mapping host-name db-postgres.msk1.cloud.vk.com alias db

set system static-host-mapping host-name cache-redis.msk1.cloud.vk.com inet 10.0.20.15
set system static-host-mapping host-name cache-redis.msk1.cloud.vk.com alias redis
set system static-host-mapping host-name cache-redis.msk1.cloud.vk.com alias cache

# Monitoring и logging
set system static-host-mapping host-name monitoring.msk1.cloud.vk.com inet 10.0.30.10
set system static-host-mapping host-name monitoring.msk1.cloud.vk.com alias prometheus
set system static-host-mapping host-name monitoring.msk1.cloud.vk.com alias grafana

set system static-host-mapping host-name logging.msk1.cloud.vk.com inet 10.0.30.20
set system static-host-mapping host-name logging.msk1.cloud.vk.com alias syslog
set system static-host-mapping host-name logging.msk1.cloud.vk.com alias logs

commit
save
exit

Тестирование резолюции

# Проверка разрешения по полному имени
vyos@vkcloud-gateway:~$ ping app-frontend.msk1.cloud.vk.com
PING app-frontend.msk1.cloud.vk.com (10.0.10.10) 56(84) bytes of data.

# Проверка разрешения по алиасу
vyos@vkcloud-gateway:~$ ping frontend
PING app-frontend.msk1.cloud.vk.com (10.0.10.10) 56(84) bytes of data.

# Проверка разрешения с автодобавлением домена
vyos@vkcloud-gateway:~$ ping app-backend
PING app-backend.msk1.cloud.vk.com (10.0.10.20) 56(84) bytes of data.

# Проверка содержимого /etc/hosts
vyos@vkcloud-gateway:~$ cat /etc/hosts

Пример 3: Гибридная конфигурация с внешним DNS

configure

# Основная конфигурация
set system host-name border-router
set system domain-name production.internal

# DNS серверы (внешние + локальные)
set system name-server 8.8.8.8
set system name-server 8.8.4.4
set system name-server 192.168.1.53

# Статические записи для критичных локальных сервисов
# (используются при недоступности DNS)
set system static-host-mapping host-name dc1-core.production.internal inet 192.168.1.1
set system static-host-mapping host-name dc1-core.production.internal alias core-switch

set system static-host-mapping host-name dc1-fw.production.internal inet 192.168.1.254
set system static-host-mapping host-name dc1-fw.production.internal alias firewall

set system static-host-mapping host-name ntp-primary.production.internal inet 192.168.1.10
set system static-host-mapping host-name ntp-primary.production.internal alias ntp

set system static-host-mapping host-name dns-primary.production.internal inet 192.168.1.53
set system static-host-mapping host-name dns-primary.production.internal alias dns

commit
save
exit

Команды проверки и мониторинга

Проверка текущей конфигурации

# Показать настроенное имя хоста
show host name

# Показать информацию о хосте (hostname + domain)
show host

# Показать FQDN
show host fqdn

# Показать все статические записи
show system static-host-mapping

# Показать конфигурацию системы
show configuration system

Проверка на уровне ОС

# Текущее имя хоста (короткое)
hostname

# FQDN
hostname -f

# Все имена хоста
hostname -A

# Доменное имя
hostname -d

# Содержимое /etc/hosts
cat /etc/hosts

# Содержимое /etc/hostname
cat /etc/hostname

# Резолюция через getent
getent hosts server.local

Тестирование DNS резолюции

# Ping по имени
ping server.local

# DNS lookup с nslookup
nslookup server.local

# DNS lookup с dig
dig server.local

# DNS lookup с host
host server.local

# Трассировка резолюции
dig +trace server.local

Примеры вывода команд

show host

vyos@router01:~$ show host
Hostname: router01
Domain:   corp.example.com
FQDN:     router01.corp.example.com

show host name

vyos@router01:~$ show host name
router01

show system static-host-mapping

vyos@router01:~$ show system static-host-mapping
host-name           inet            alias
db-server.local     10.0.1.100      database, db, mysql
web01.local         10.0.10.11      www1
web02.local         10.0.10.12      www2

cat /etc/hosts (сгенерированный)

vyos@router01:~$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       router01.corp.example.com router01

# Static host mappings
10.0.1.100      db-server.local database db mysql
10.0.10.11      web01.local www1
10.0.10.12      web02.local www2

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Устранение неполадок (Troubleshooting)

Проблема 1: Имя хоста не применяется после commit

Симптомы:

  • Команда show host name показывает новое имя
  • Приглашение CLI не изменилось
  • hostname команда показывает старое значение

Диагностика:

# Проверить конфигурацию
show configuration system host-name

# Проверить на уровне ОС
hostname
cat /etc/hostname

Решение:

# Пересохранить конфигурацию
configure
commit
save
exit

# Перезапустить сеанс SSH (reconnect)
# или выполнить
sudo systemctl restart vyos-router

Проблема 2: Статические записи не работают

Симптомы:

  • ping server.local не работает
  • cat /etc/hosts не содержит статических записей

Диагностика:

# Проверить конфигурацию статических записей
show configuration system static-host-mapping

# Проверить /etc/hosts
cat /etc/hosts

# Проверить порядок резолюции
cat /etc/nsswitch.conf | grep hosts

Решение:

# Убедиться что конфигурация применена
configure
show system static-host-mapping
commit
save
exit

# Принудительно перегенерировать /etc/hosts
sudo /opt/vyatta/sbin/vyatta-update-hosts.pl

# Проверить результат
cat /etc/hosts

Проблема 3: FQDN формируется неправильно

Симптомы:

  • hostname -f возвращает неправильное значение
  • FQDN не содержит доменное имя

Диагностика:

# Проверить hostname и domain отдельно
show host name
show configuration system domain-name

# Проверить на уровне ОС
hostname -s    # короткое имя
hostname -f    # FQDN
hostname -d    # домен

Решение:

configure

# Проверить и исправить конфигурацию
set system host-name correct-hostname
set system domain-name correct.domain.com

commit
save
exit

# Проверить результат
hostname -f

Проблема 4: Cloud-init переопределяет hostname

Симптомы:

  • После перезагрузки hostname возвращается к значению из cloud-init
  • VyOS конфигурация игнорируется

Диагностика:

# Проверить cloud-init конфигурацию
cat /etc/cloud/cloud.cfg | grep preserve_hostname

# Проверить логи cloud-init
cat /var/log/cloud-init.log | grep hostname

Решение:

# Отключить управление hostname через cloud-init
sudo vi /etc/cloud/cloud.cfg

# Изменить:
# preserve_hostname: false
# на:
# preserve_hostname: true

# Или добавить в VyOS конфигурацию приоритет
configure
set system host-name my-vyos-router
commit
save
exit

# Перезагрузить для проверки
sudo reboot

Проблема 5: DNS резолюция игнорирует static-host-mapping

Симптомы:

  • ping server.local идет в DNS вместо локального /etc/hosts
  • Внешний DNS возвращает NXDOMAIN

Диагностика:

# Проверить порядок резолюции
cat /etc/nsswitch.conf | grep hosts

# Должно быть:
# hosts: files dns
# НЕ:
# hosts: dns files

# Проверить /etc/hosts
cat /etc/hosts | grep server.local

Решение:

# Убедиться что запись есть в конфигурации
configure
show system static-host-mapping
commit
save
exit

# Если nsswitch.conf неправильный, это баг VyOS
# Временное решение:
sudo vi /etc/nsswitch.conf
# Изменить строку hosts на: hosts: files dns

# Перманентное решение - обновить VyOS или создать post-config скрипт

Лучшие практики (Best Practices)

1. Именование хостов

Используйте описательные, структурированные имена:

# Хорошо: роль-локация-номер
set system host-name vyos-gw-msk-01
set system host-name vyos-fw-spb-02
set system host-name vyos-edge-kzn-01

# Плохо: непонятные или слишком длинные
set system host-name router
set system host-name x
set system host-name my-super-duper-production-vyos-router-in-moscow

Используйте консистентную схему:

# Схема: сервис-тип-зона-id
set system host-name web-frontend-dc1-01
set system host-name db-postgres-dc1-master
set system host-name cache-redis-dc2-01

2. Доменные имена

Используйте внутренние домены для приватных сетей:

# Хорошо: .internal, .local, .private, .lan
set system domain-name corp.internal
set system domain-name datacenter.local
set system domain-name cloud.private

# Избегайте: публичные домены для внутренних сетей
# Плохо:
set system domain-name example.com  # если не используется реально

Отражайте структуру сети в доменах:

# Иерархическая структура
set system domain-name moscow.datacenter.mycompany.internal
set system domain-name production.cloud.mycompany.ru
set system domain-name dmz.external.mycompany.net

3. Статические записи хостов

Документируйте назначение записей:

configure

# Infrastructure services - критичные сервисы
set system static-host-mapping host-name ntp.internal inet 10.0.0.10
set system static-host-mapping host-name ntp.internal alias time

set system static-host-mapping host-name dns.internal inet 10.0.0.53
set system static-host-mapping host-name dns.internal alias resolver

# Application servers - прикладные серверы
set system static-host-mapping host-name app01.internal inet 10.0.10.11
set system static-host-mapping host-name app02.internal inet 10.0.10.12

commit
save
exit

Используйте алиасы для удобства:

# Полное имя + короткие алиасы
set system static-host-mapping host-name database-primary.internal inet 10.0.20.5
set system static-host-mapping host-name database-primary.internal alias db
set system static-host-mapping host-name database-primary.internal alias postgres
set system static-host-mapping host-name database-primary.internal alias primary

4. Резервирование критичных записей

Дублируйте DNS в static-host-mapping:

# Критичные сервисы должны резолвиться даже при падении DNS
set system static-host-mapping host-name ntp-server.internal inet 192.168.1.10
set system static-host-mapping host-name dns-server.internal inet 192.168.1.53
set system static-host-mapping host-name mgmt-gateway.internal inet 192.168.1.1
set system static-host-mapping host-name syslog-server.internal inet 192.168.1.100

5. Интеграция с Cloud провайдерами

Yandex Cloud:

# Используйте зональные имена
set system host-name vyos-gw-ru-central1-a
set system domain-name ru-central1.internal

# Добавляйте metadata service
set system static-host-mapping host-name metadata.yandex inet 169.254.169.254

VK Cloud:

# Используйте регион в именовании
set system host-name vyos-router-msk1
set system domain-name msk1.cloud.internal

# Добавляйте Cloud infrastructure endpoints
set system static-host-mapping host-name infra.mail.ru inet 10.0.0.1

6. Версионирование конфигурации

Используйте commit-комментарии:

configure
set system host-name new-router-name
commit comment "Changed hostname from old-router to new-router-name for standardization"
save

Делайте бэкапы перед изменениями:

# Сохранить текущую конфигурацию
save /config/backup-before-hostname-change.config

# Внести изменения
configure
set system host-name new-name
commit
save

7. Мониторинг и аудит

Регулярно проверяйте соответствие:

# Скрипт проверки hostname соответствия
#!/bin/bash

VYOS_HOSTNAME=$(show host name)
OS_HOSTNAME=$(hostname)

if [ "$VYOS_HOSTNAME" != "$OS_HOSTNAME" ]; then
    echo "WARNING: Hostname mismatch!"
    echo "VyOS config: $VYOS_HOSTNAME"
    echo "OS hostname: $OS_HOSTNAME"
fi

Логируйте изменения:

# Просмотр истории изменений hostname
show system commit

# Просмотр конкретного коммита
show system commit diff <commit-number>

Интеграция с другими сервисами VyOS

SNMP

Hostname используется как SNMPv2-MIB::sysName:

configure
set system host-name core-router-01
set service snmp community public
commit
save
exit

# SNMP запрос покажет hostname
snmpget -v2c -c public localhost SNMPv2-MIB::sysName.0
# Вывод: SNMPv2-MIB::sysName.0 = STRING: core-router-01

Syslog

Hostname включается в сyslog сообщения:

configure
set system host-name vyos-gateway
set system syslog global facility all level info
set system syslog host 10.0.0.100 facility all level warning
commit
save
exit

# Syslog messages будут содержать hostname:
# Dec 15 10:30:45 vyos-gateway systemd[1]: Started VyOS Router.

NTP

При настройке NTP сервера hostname используется в идентификации:

configure
set system host-name ntp-client-router
set system ntp server 0.pool.ntp.org
set system ntp server 1.pool.ntp.org
commit
save
exit

SSH Banner

Hostname может использоваться в SSH баннере:

configure
set system host-name secure-gateway
set system login banner pre-login "
****************************************************
  Authorized access only!
  Hostname: secure-gateway
  Location: Moscow Datacenter
****************************************************
"
commit
save
exit

Примеры полных конфигураций

Конфигурация 1: Корпоративный шлюз

configure

# Hostname и domain
set system host-name corp-gateway-msk
set system domain-name moscow.corp.internal

# Внутренние серверы
set system static-host-mapping host-name dc-controller.moscow.corp.internal inet 10.10.0.10
set system static-host-mapping host-name dc-controller.moscow.corp.internal alias dc
set system static-host-mapping host-name dc-controller.moscow.corp.internal alias ad

set system static-host-mapping host-name exchange.moscow.corp.internal inet 10.10.0.20
set system static-host-mapping host-name exchange.moscow.corp.internal alias mail

set system static-host-mapping host-name fileserver.moscow.corp.internal inet 10.10.0.30
set system static-host-mapping host-name fileserver.moscow.corp.internal alias fs
set system static-host-mapping host-name fileserver.moscow.corp.internal alias files

# Infrastructure
set system static-host-mapping host-name ntp.moscow.corp.internal inet 10.10.0.1
set system static-host-mapping host-name ntp.moscow.core.internal alias time

set system static-host-mapping host-name dns.moscow.corp.internal inet 10.10.0.2
set system static-host-mapping host-name dns.moscow.corp.internal alias resolver

# Monitoring
set system static-host-mapping host-name zabbix.moscow.corp.internal inet 10.10.0.100
set system static-host-mapping host-name zabbix.moscow.corp.internal alias monitoring

commit
save
exit

Конфигурация 2: Облачный edge router (Yandex Cloud)

configure

# Cloud hostname
set system host-name yc-edge-router-01
set system domain-name ru-central1-a.cloud.internal

# Yandex Cloud metadata
set system static-host-mapping host-name metadata.yandex.cloud inet 169.254.169.254
set system static-host-mapping host-name metadata.yandex.cloud alias metadata
set system static-host-mapping host-name metadata.yandex.cloud alias cloud-init

# Application infrastructure в Yandex Cloud
set system static-host-mapping host-name app-lb.ru-central1-a.cloud.internal inet 10.128.0.10
set system static-host-mapping host-name app-lb.ru-central1-a.cloud.internal alias loadbalancer
set system static-host-mapping host-name app-lb.ru-central1-a.cloud.internal alias lb

set system static-host-mapping host-name app-web-01.ru-central1-a.cloud.internal inet 10.128.0.20
set system static-host-mapping host-name app-web-01.ru-central1-a.cloud.internal alias web1

set system static-host-mapping host-name app-web-02.ru-central1-a.cloud.internal inet 10.128.0.21
set system static-host-mapping host-name app-web-02.ru-central1-a.cloud.internal alias web2

set system static-host-mapping host-name db-managed-postgres.ru-central1-a.cloud.internal inet 10.129.0.5
set system static-host-mapping host-name db-managed-postgres.ru-central1-a.cloud.internal alias database
set system static-host-mapping host-name db-managed-postgres.ru-central1-a.cloud.internal alias postgres

# Yandex Cloud DNS (внутренний)
set system name-server 192.168.0.2

commit
save
exit

Конфигурация 3: VK Cloud multi-zone setup

configure

# VK Cloud hostname
set system host-name vkc-router-msk1-zone-a
set system domain-name msk1.vkcloud.internal

# VK Cloud infrastructure
set system static-host-mapping host-name infra.mail.ru inet 10.0.0.1
set system static-host-mapping host-name infra.mail.ru alias vk-infra

# Zone A servers
set system static-host-mapping host-name web-a1.msk1.vkcloud.internal inet 10.0.10.11
set system static-host-mapping host-name web-a2.msk1.vkcloud.internal inet 10.0.10.12

# Zone B servers (cross-zone communication)
set system static-host-mapping host-name web-b1.msk1.vkcloud.internal inet 10.1.10.11
set system static-host-mapping host-name web-b2.msk1.vkcloud.internal inet 10.1.10.12

# Managed services
set system static-host-mapping host-name db-managed.msk1.vkcloud.internal inet 10.0.20.5
set system static-host-mapping host-name db-managed.msk1.vkcloud.internal alias database

set system static-host-mapping host-name cache-managed.msk1.vkcloud.internal inet 10.0.20.15
set system static-host-mapping host-name cache-managed.msk1.vkcloud.internal alias redis

# Monitoring и Logging
set system static-host-mapping host-name mon.msk1.vkcloud.internal inet 10.0.30.10
set system static-host-mapping host-name mon.msk1.vkcloud.internal alias monitoring
set system static-host-mapping host-name mon.msk1.vkcloud.internal alias prometheus

set system static-host-mapping host-name log.msk1.vkcloud.internal inet 10.0.30.20
set system static-host-mapping host-name log.msk1.vkcloud.internal alias syslog

commit
save
exit

Автоматизация и скрипты

Скрипт массового добавления хостов

#!/bin/vbash
# add-static-hosts.sh
# Массовое добавление статических записей из CSV файла

source /opt/vyatta/etc/functions/script-template

# CSV формат: hostname,ip,alias1,alias2,alias3
# Пример: web01.local,10.0.10.11,www1,web1,frontend1

HOSTS_FILE="/config/static-hosts.csv"

configure

while IFS=',' read -r hostname ip alias1 alias2 alias3; do
    # Пропустить комментарии и пустые строки
    [[ "$hostname" =~ ^#.*$ ]] && continue
    [[ -z "$hostname" ]] && continue

    echo "Adding host: $hostname -> $ip"
    set system static-host-mapping host-name "$hostname" inet "$ip"

    if [ -n "$alias1" ]; then
        set system static-host-mapping host-name "$hostname" alias "$alias1"
    fi

    if [ -n "$alias2" ]; then
        set system static-host-mapping host-name "$hostname" alias "$alias2"
    fi

    if [ -n "$alias3" ]; then
        set system static-host-mapping host-name "$hostname" alias "$alias3"
    fi
done < "$HOSTS_FILE"

commit
save
exit

echo "Static hosts configuration completed!"

Скрипт проверки консистентности

#!/bin/bash
# check-hostname-consistency.sh
# Проверка соответствия hostname между VyOS config и OS

VYOS_HOSTNAME=$(/opt/vyatta/bin/vyatta-op-cmd-wrapper show host name)
OS_HOSTNAME=$(hostname)
OS_FQDN=$(hostname -f)

echo "=== Hostname Consistency Check ==="
echo "VyOS Config Hostname: $VYOS_HOSTNAME"
echo "OS Hostname:          $OS_HOSTNAME"
echo "OS FQDN:              $OS_FQDN"
echo ""

if [ "$VYOS_HOSTNAME" = "$OS_HOSTNAME" ]; then
    echo "Status: OK - Hostnames match"
    exit 0
else
    echo "Status: WARNING - Hostname mismatch detected!"
    echo "Action required: Restart VyOS router or reconnect SSH session"
    exit 1
fi

Скрипт экспорта конфигурации hostname

#!/bin/vbash
# export-hostname-config.sh
# Экспорт конфигурации hostname в JSON формат

source /opt/vyatta/etc/functions/script-template

OUTPUT_FILE="/config/hostname-export.json"

HOSTNAME=$(cli-shell-api showCfg system host-name)
DOMAIN=$(cli-shell-api showCfg system domain-name)

echo "{" > "$OUTPUT_FILE"
echo "  \"hostname\": \"$HOSTNAME\"," >> "$OUTPUT_FILE"
echo "  \"domain\": \"$DOMAIN\"," >> "$OUTPUT_FILE"
echo "  \"fqdn\": \"$HOSTNAME.$DOMAIN\"," >> "$OUTPUT_FILE"
echo "  \"static_hosts\": [" >> "$OUTPUT_FILE"

# Получить список static host mappings
# (требует парсинга вывода show configuration)

echo "  ]" >> "$OUTPUT_FILE"
echo "}" >> "$OUTPUT_FILE"

echo "Hostname configuration exported to $OUTPUT_FILE"

Связанные документы

  • System Configuration - Общая конфигурация системы
  • Name Server (DNS) - Настройка DNS серверов
  • NTP - Настройка времени и NTP
  • Syslog - Настройка системного логирования
  • SNMP - Мониторинг через SNMP
  • Cloud-init - Автоматизация в облаке

Дополнительные ресурсы

Заключение

Правильная настройка имени хоста, доменного имени и статических записей хостов является фундаментальной частью конфигурации VyOS. Эти параметры влияют на:

  • Идентификацию устройства в сети
  • Работу системных служб (syslog, SNMP, NTP)
  • Интеграцию с облачными платформами
  • Управляемость и мониторинг инфраструктуры

Следуйте рекомендациям из раздела “Лучшие практики” для обеспечения консистентной и надежной конфигурации.