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 - Автоматизация в облаке
Дополнительные ресурсы
- RFC 1123 - Requirements for Internet Hosts
- RFC 952 - DoD Internet Host Table Specification
- VyOS Documentation - System Host Name
- Yandex Cloud Metadata Service
- VK Cloud Documentation
Заключение
Правильная настройка имени хоста, доменного имени и статических записей хостов является фундаментальной частью конфигурации VyOS. Эти параметры влияют на:
- Идентификацию устройства в сети
- Работу системных служб (syslog, SNMP, NTP)
- Интеграцию с облачными платформами
- Управляемость и мониторинг инфраструктуры
Следуйте рекомендациям из раздела “Лучшие практики” для обеспечения консистентной и надежной конфигурации.