Console - Последовательная консоль

Console - Последовательная консоль

Обзор

Последовательная консоль (serial console) в VyOS предоставляет механизм для удаленного управления маршрутизатором через последовательный порт. Это особенно полезно в следующих сценариях:

  • Out-of-band управление: Доступ к устройству независимо от состояния сетевых интерфейсов
  • Диагностика загрузки: Мониторинг процесса загрузки системы и выявление проблем на ранних стадиях
  • Аварийное восстановление: Доступ к системе при неработающей сетевой конфигурации
  • Облачные платформы: Доступ к виртуальным машинам через веб-консоль облачного провайдера
  • Bare-metal серверы: Управление физическими серверами через KVM или IPMI

Последовательная консоль не является необходимостью для обычных пользователей, но становится критически важной для системных администраторов, работающих с серверным оборудованием или облачными инфраструктурами.

Поддерживаемые устройства консоли

VyOS поддерживает различные типы консольных устройств:

Serial устройства (ttySN)

Стандартные последовательные порты, встроенные в серверное оборудование:

  • ttyS0 - Первый последовательный порт (COM1)
  • ttyS1 - Второй последовательный порт (COM2)
  • ttyS2 - Третий последовательный порт (COM3)
  • ttyS3 - Четвертый последовательный порт (COM4)

Эти порты обычно используются на физических серверах и некоторых виртуальных машинах.

USB Serial устройства (ttyUSBX)

USB-to-serial адаптеры и конвертеры:

  • ttyUSB0 - Первый USB последовательный адаптер
  • ttyUSB1 - Второй USB последовательный адаптер
  • ttyUSBX - Дополнительные USB адаптеры

USB адаптеры полезны для устройств без встроенных последовательных портов или при необходимости дополнительных консольных соединений.

Виртуальные консоли

Специализированные консольные устройства для виртуализации:

  • hvc0 - Xen HVM console (для Xen виртуализации)

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

Настройка последовательной консоли

Базовая конфигурация последовательной консоли на ttyS0 с настройками по умолчанию:

configure
set system console device ttyS0
commit
save

Настройка скорости передачи (Baud Rate)

VyOS поддерживает следующие скорости передачи данных:

  • 1200 bps
  • 2400 bps
  • 4800 bps
  • 9600 bps (стандартная скорость)
  • 19200 bps
  • 38400 bps
  • 57600 bps
  • 115200 bps (высокая скорость, используется по умолчанию)

Пример: Консоль со скоростью 9600 bps

configure
set system console device ttyS0 speed 9600
commit
save

Пример: Консоль со скоростью 115200 bps

configure
set system console device ttyS0 speed 115200
commit
save

Пример: USB консоль со скоростью 38400 bps

configure
set system console device ttyUSB0 speed 38400
commit
save

Рекомендации по выбору скорости

9600 bps:

  • Наиболее совместимая скорость
  • Рекомендуется для старого оборудования
  • Минимальный риск ошибок передачи данных
  • Медленная для больших объемов текста

115200 bps:

  • Высокая скорость передачи данных
  • Рекомендуется для современного оборудования
  • Быстрый вывод логов и команд
  • Может быть нестабильна на некачественных кабелях или USB адаптерах

Золотая середина (38400-57600 bps):

  • Оптимальный баланс скорости и стабильности
  • Подходит для большинства сценариев
  • Хорошая производительность при надежном соединении

Ротация консолей (Console Rotation)

VyOS поддерживает настройку нескольких консольных устройств одновременно. Это полезно для резервирования или доступа через разные физические интерфейсы.

Пример: Несколько последовательных консолей

configure

# Первая консоль на ttyS0 (основная)
set system console device ttyS0 speed 115200

# Вторая консоль на ttyS1 (резервная)
set system console device ttyS1 speed 115200

# USB консоль для локального доступа
set system console device ttyUSB0 speed 9600

commit
save

Пример: Комбинация виртуальной и физической консоли

configure

# Xen виртуальная консоль (для облачной платформы)
set system console device hvc0 speed 115200

# Физическая последовательная консоль (для IPMI/KVM)
set system console device ttyS0 speed 115200

commit
save

Конфигурация загрузочной консоли (Boot Console)

GRUB Serial Console

Для доступа к загрузчику GRUB через последовательную консоль необходимо модифицировать конфигурацию GRUB. Это позволяет управлять процессом загрузки системы через serial порт.

Редактирование конфигурации GRUB

# Редактировать конфигурацию GRUB
sudo vi /boot/grub/grub.cfg

Добавьте следующие строки в начало файла (после заголовка):

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal_input serial console
terminal_output serial console

Параметры загрузки ядра

Убедитесь, что параметры загрузки ядра включают настройки консоли:

# Добавить к параметрам linux строки:
console=tty0 console=ttyS0,115200n8

Полный пример записи GRUB:

menuentry 'VyOS' {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    echo 'Loading VyOS...'
    linux /boot/vmlinuz root=/dev/sda1 ro console=tty0 console=ttyS0,115200n8 quiet
    echo 'Loading initial ramdisk...'
    initrd /boot/initrd.img
}

Постоянная конфигурация GRUB

Для сохранения изменений при обновлениях системы, редактируйте файл конфигурации по умолчанию:

# Редактировать файл конфигурации по умолчанию
sudo vi /etc/default/grub

Добавьте или измените следующие параметры:

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
GRUB_TERMINAL="serial console"

Обновите конфигурацию GRUB:

sudo update-grub

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

Yandex Cloud: Доступ через Serial Console

Yandex Cloud предоставляет доступ к последовательной консоли виртуальных машин через веб-интерфейс. VyOS в Yandex Cloud использует предварительно настроенную последовательную консоль.

Конфигурация VyOS для Yandex Cloud

Стандартная конфигурация для Yandex Cloud (обычно уже настроена в образе):

configure

# Настройка последовательной консоли для Yandex Cloud
set system console device ttyS0 speed 9600

commit
save

Доступ через веб-консоль Yandex Cloud

  1. Откройте Yandex Cloud Console: https://console.cloud.yandex.ru
  2. Перейдите в раздел “Compute Cloud”
  3. Выберите виртуальную машину VyOS
  4. Нажмите кнопку “Подключиться” и выберите “Serial Console”
  5. В открывшемся терминале нажмите Enter для активации консоли

Доступ через Yandex Cloud CLI

# Подключение к serial console через CLI
yc compute instance serial-port-output <instance-id>

# Получение последних 1000 строк вывода
yc compute instance serial-port-output <instance-id> --lines 1000

# Интерактивное подключение (требует SSH ключ)
yc compute connect-to-serial-port --instance-id <instance-id>

Настройка логирования serial console в Yandex Cloud

configure

# Включить логирование системы
set system syslog global facility all level info

# Настроить консольный вывод
set system console device ttyS0 speed 9600

commit
save

Особенности Yandex Cloud Serial Console

  • Скорость: Используйте 9600 bps для стабильной работы
  • Доступность: Serial console доступна даже при проблемах с сетью
  • История: Yandex Cloud сохраняет историю вывода консоли (до 64 КБ)
  • Безопасность: Доступ к serial console требует прав на виртуальную машину

VK Cloud: Serial Console для Bare-Metal серверов

VK Cloud (ранее Mail.ru Cloud Solutions) предоставляет доступ к последовательной консоли для bare-metal серверов через IPMI/KVM интерфейс.

Конфигурация VyOS для VK Cloud Bare-Metal

configure

# Настройка последовательной консоли
set system console device ttyS0 speed 115200

# Опционально: дополнительная консоль для резервирования
set system console device ttyS1 speed 115200

commit
save

Доступ через IPMI Console

  1. Войдите в панель управления VK Cloud
  2. Перейдите в раздел “Серверы” -> “Bare-metal”
  3. Выберите сервер с VyOS
  4. Нажмите “IPMI Console” или “KVM Console”
  5. В открывшемся окне будет доступна последовательная консоль

Настройка для удаленного IPMI доступа

configure

# Настройка высокоскоростной консоли для IPMI
set system console device ttyS0 speed 115200

# Включить SSH для альтернативного доступа
set service ssh port 22
set service ssh listen-address 0.0.0.0

commit
save

IPMI Serial-over-LAN (SOL)

Для прямого доступа через IPMI Serial-over-LAN:

# С клиентской машины подключитесь к IPMI
ipmitool -I lanplus -H <ipmi-ip> -U <username> -P <password> sol activate

Конфигурация VyOS должна использовать скорость 115200 bps для SOL:

configure
set system console device ttyS0 speed 115200
commit
save

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

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

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

# Пример вывода:
# console {
#     device ttyS0 {
#         speed 115200
#     }
# }

Проверка активных консольных устройств

# Показать активные TTY устройства
show system tty

# Альтернативный способ (в operational mode)
run show system tty

Просмотр системных логов консоли

# Просмотр логов последовательной консоли
show log tail

# Поиск сообщений, связанных с консолью
show log | match console

Тестирование консольного вывода

# Вывести тестовое сообщение в консоль
echo "Test message to console" | tee /dev/ttyS0

# Проверить работу консоли через dmesg
show system kernel-messages | match ttyS

Проверка параметров последовательного порта

# Просмотр параметров последовательного порта (из operational mode)
run show interfaces serial ttyS0

# Детальная информация через stty (из shell)
sudo stty -F /dev/ttyS0 -a

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

Проблема: Консоль не отвечает

Симптомы: Нет вывода на последовательную консоль после подключения.

Решения:

  1. Проверьте настройки скорости (baud rate) на обоих концах соединения:
# Убедитесь, что скорость консоли соответствует терминальной программе
show configuration system console device ttyS0
  1. Проверьте, что устройство активно:
# Проверка статуса устройства
run show system tty
  1. Перезапустите getty для консоли:
# Из shell режима
sudo systemctl restart serial-getty@ttyS0.service
  1. Проверьте физическое подключение кабеля (для bare-metal).

Проблема: Искаженные символы на консоли

Симптомы: Вывод консоли содержит неправильные символы или нечитаемый текст.

Причина: Несовпадение настроек скорости, четности или битов данных.

Решения:

  1. Установите стандартную скорость 9600 bps:
configure
set system console device ttyS0 speed 9600
commit
save
  1. Проверьте параметры терминальной программы:

    • Data bits: 8
    • Parity: None
    • Stop bits: 1
    • Flow control: None (или Hardware)
  2. Попробуйте другие скорости последовательно:

configure
set system console device ttyS0 speed 38400
commit
# Тестируйте консоль
# Если не работает, попробуйте другую скорость
set system console device ttyS0 speed 57600
commit

Проблема: USB консоль не обнаруживается

Симптомы: USB-to-serial адаптер не отображается как ttyUSB0.

Решения:

  1. Проверьте распознавание USB устройства:
# Проверить USB устройства
run show system usb

# Или через lsusb
lsusb
  1. Проверьте загрузку драйверов:
# Проверить загруженные модули для USB serial
lsmod | grep usbserial
lsmod | grep ftdi
lsmod | grep pl2303
  1. Проверьте dmesg для сообщений о USB:
run show system kernel-messages | match -i usb
run show system kernel-messages | match ttyUSB
  1. Попробуйте другой USB порт или адаптер.

Проблема: Консоль работает, но GRUB не отображается

Симптомы: VyOS консоль работает, но меню GRUB не видно при загрузке.

Решение: Настройте GRUB для вывода на последовательную консоль:

# Редактировать конфигурацию GRUB
sudo vi /etc/default/grub

# Добавить параметры:
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200"
GRUB_TERMINAL="serial console"

# Обновить GRUB
sudo update-grub

# Перезагрузить систему
reboot now

Проблема: Медленный вывод на консоль

Симптомы: Команды выполняются быстро, но вывод появляется медленно.

Решения:

  1. Увеличьте скорость передачи:
configure
set system console device ttyS0 speed 115200
commit
save
  1. Проверьте настройки flow control:
# Отключить flow control (в shell режиме)
sudo stty -F /dev/ttyS0 -crtscts -ixon -ixoff
  1. Уменьшите объем вывода:
# Вместо полного show configuration
show configuration commands

# Используйте grep для фильтрации
show configuration | match interface

Проблема: Консоль теряет соединение

Симптомы: Консольное соединение периодически обрывается.

Решения:

  1. Для облачных платформ проверьте timeout настройки:
# Увеличить timeout для SSH сессий
configure
set service ssh client-keepalive-interval 60
commit
save
  1. Для физических соединений:

    • Проверьте качество кабеля
    • Используйте экранированные кабели
    • Уменьшите скорость до 9600 bps
  2. Настройте автоматический reconnect в терминальной программе.

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

Безопасность консоли

  1. Ограничение доступа к физической консоли:
configure

# Настройте таймаут консольной сессии
set system login timeout 300

# Требуйте аутентификацию для консоли
set system console device ttyS0

commit
save
  1. Логирование консольных сессий:
configure

# Включить аудит системных событий
set system syslog global facility auth level info
set system syslog global facility authpriv level info

# Отправка логов на удаленный сервер
set system syslog host 192.168.1.100 facility auth level info

commit
save
  1. Защита GRUB паролем (опционально):
# Создать хеш пароля для GRUB
grub-mkpasswd-pbkdf2

# Добавить в /etc/grub.d/40_custom
set superusers="root"
password_pbkdf2 root <generated-hash>

Производительность и надежность

  1. Выбор оптимальной скорости:

    • Локальные соединения: 115200 bps
    • Облачные платформы: 9600-38400 bps
    • Длинные кабели: 9600-19200 bps
  2. Резервирование консолей:

configure

# Настроить несколько консольных устройств
set system console device ttyS0 speed 115200
set system console device ttyS1 speed 115200

# Для облачных сред
set system console device hvc0 speed 115200
set system console device ttyS0 speed 9600

commit
save
  1. Мониторинг состояния консоли:
# Создать скрипт проверки консоли
configure

set system task-scheduler task check-console executable path /config/scripts/check-console.sh
set system task-scheduler task check-console interval 5m

commit
save

Пример скрипта /config/scripts/check-console.sh:

#!/bin/bash
# Проверка работоспособности последовательной консоли

CONSOLE_DEVICE="/dev/ttyS0"
LOG_FILE="/var/log/console-check.log"

if [ -e "$CONSOLE_DEVICE" ]; then
    echo "$(date): Console device $CONSOLE_DEVICE is present" >> "$LOG_FILE"

    # Проверка возможности записи
    if echo "test" > "$CONSOLE_DEVICE" 2>/dev/null; then
        echo "$(date): Console device $CONSOLE_DEVICE is writable" >> "$LOG_FILE"
    else
        echo "$(date): WARNING: Console device $CONSOLE_DEVICE is not writable" >> "$LOG_FILE"
        # Перезапуск getty
        systemctl restart serial-getty@ttyS0.service
    fi
else
    echo "$(date): ERROR: Console device $CONSOLE_DEVICE not found" >> "$LOG_FILE"
fi

Документирование конфигурации

  1. Добавление комментариев к конфигурации:
configure

# Добавить описание консольной конфигурации
comment system console device ttyS0 "Primary serial console for IPMI/KVM access"
comment system console device ttyS0 speed "115200 bps for high-speed output"

commit
save
  1. Сохранение резервных копий конфигурации:
# Создать backup с описанием
save /config/backup/config-with-console-$(date +%Y%m%d).boot

Облачные платформы

  1. Yandex Cloud: Используйте 9600 bps для стабильности:
configure
set system console device ttyS0 speed 9600
commit
save
  1. VK Cloud Bare-Metal: Используйте 115200 bps для IPMI SOL:
configure
set system console device ttyS0 speed 115200
commit
save
  1. Гибридная конфигурация (виртуальная + физическая):
configure

# Виртуальная консоль для облака
set system console device hvc0 speed 115200

# Физическая консоль для backup доступа
set system console device ttyS0 speed 9600

commit
save

Расширенные сценарии

Автоматическая настройка консоли при развертывании

Пример скрипта для автоматической настройки консоли в зависимости от платформы:

#!/bin/vbash
# /config/scripts/configure-console.sh
# Автоматическая настройка консоли в зависимости от платформы

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

# Определение платформы
if [ -e /sys/hypervisor/type ]; then
    HYPERVISOR=$(cat /sys/hypervisor/type)
else
    HYPERVISOR="none"
fi

# Конфигурация в зависимости от гипервизора
case $HYPERVISOR in
    xen)
        # Yandex Cloud или другая Xen платформа
        configure
        set system console device hvc0 speed 115200
        set system console device ttyS0 speed 9600
        commit
        save
        ;;
    kvm)
        # KVM виртуализация
        configure
        set system console device ttyS0 speed 115200
        commit
        save
        ;;
    *)
        # Bare-metal или неизвестная платформа
        configure
        set system console device ttyS0 speed 115200
        set system console device ttyS1 speed 115200
        commit
        save
        ;;
esac

echo "Console configured for platform: $HYPERVISOR"

Интеграция с системами мониторинга

Пример экспорта метрик консоли для Prometheus:

#!/bin/bash
# /config/scripts/console-metrics.sh
# Экспорт метрик консоли для мониторинга

METRICS_FILE="/var/tmp/console_metrics.prom"

# Проверка наличия консольных устройств
console_present=0
if [ -e /dev/ttyS0 ]; then
    console_present=1
fi

# Подсчет сообщений в логах консоли (за последний час)
console_messages=$(journalctl -u serial-getty@ttyS0.service --since "1 hour ago" | wc -l)

# Запись метрик
cat > "$METRICS_FILE" << EOF
# HELP vyos_console_present Console device presence (1=present, 0=absent)
# TYPE vyos_console_present gauge
vyos_console_present{device="ttyS0"} $console_present

# HELP vyos_console_messages_total Total console messages in last hour
# TYPE vyos_console_messages_total counter
vyos_console_messages_total{device="ttyS0"} $console_messages
EOF

Ссылки

Заключение

Последовательная консоль является критически важным инструментом для администрирования VyOS маршрутизаторов, особенно в серверных и облачных средах. Правильная настройка консоли обеспечивает:

  • Надежный out-of-band доступ для аварийного восстановления
  • Возможность диагностики проблем загрузки системы
  • Удобный доступ через облачные платформы (Yandex Cloud, VK Cloud)
  • Резервный канал управления при сетевых проблемах

Следуйте рекомендациям по выбору скорости передачи данных, настраивайте резервирование консольных устройств и документируйте конфигурацию для упрощения поддержки и устранения неполадок.