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
- Откройте Yandex Cloud Console: https://console.cloud.yandex.ru
- Перейдите в раздел “Compute Cloud”
- Выберите виртуальную машину VyOS
- Нажмите кнопку “Подключиться” и выберите “Serial Console”
- В открывшемся терминале нажмите 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
- Войдите в панель управления VK Cloud
- Перейдите в раздел “Серверы” -> “Bare-metal”
- Выберите сервер с VyOS
- Нажмите “IPMI Console” или “KVM Console”
- В открывшемся окне будет доступна последовательная консоль
Настройка для удаленного 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
saveIPMI 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Устранение неполадок
Проблема: Консоль не отвечает
Симптомы: Нет вывода на последовательную консоль после подключения.
Решения:
- Проверьте настройки скорости (baud rate) на обоих концах соединения:
# Убедитесь, что скорость консоли соответствует терминальной программе
show configuration system console device ttyS0- Проверьте, что устройство активно:
# Проверка статуса устройства
run show system tty- Перезапустите getty для консоли:
# Из shell режима
sudo systemctl restart serial-getty@ttyS0.service- Проверьте физическое подключение кабеля (для bare-metal).
Проблема: Искаженные символы на консоли
Симптомы: Вывод консоли содержит неправильные символы или нечитаемый текст.
Причина: Несовпадение настроек скорости, четности или битов данных.
Решения:
- Установите стандартную скорость 9600 bps:
configure
set system console device ttyS0 speed 9600
commit
saveПроверьте параметры терминальной программы:
- Data bits: 8
- Parity: None
- Stop bits: 1
- Flow control: None (или Hardware)
Попробуйте другие скорости последовательно:
configure
set system console device ttyS0 speed 38400
commit
# Тестируйте консоль
# Если не работает, попробуйте другую скорость
set system console device ttyS0 speed 57600
commitПроблема: USB консоль не обнаруживается
Симптомы: USB-to-serial адаптер не отображается как ttyUSB0.
Решения:
- Проверьте распознавание USB устройства:
# Проверить USB устройства
run show system usb
# Или через lsusb
lsusb- Проверьте загрузку драйверов:
# Проверить загруженные модули для USB serial
lsmod | grep usbserial
lsmod | grep ftdi
lsmod | grep pl2303- Проверьте dmesg для сообщений о USB:
run show system kernel-messages | match -i usb
run show system kernel-messages | match ttyUSB- Попробуйте другой 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Проблема: Медленный вывод на консоль
Симптомы: Команды выполняются быстро, но вывод появляется медленно.
Решения:
- Увеличьте скорость передачи:
configure
set system console device ttyS0 speed 115200
commit
save- Проверьте настройки flow control:
# Отключить flow control (в shell режиме)
sudo stty -F /dev/ttyS0 -crtscts -ixon -ixoff- Уменьшите объем вывода:
# Вместо полного show configuration
show configuration commands
# Используйте grep для фильтрации
show configuration | match interfaceПроблема: Консоль теряет соединение
Симптомы: Консольное соединение периодически обрывается.
Решения:
- Для облачных платформ проверьте timeout настройки:
# Увеличить timeout для SSH сессий
configure
set service ssh client-keepalive-interval 60
commit
saveДля физических соединений:
- Проверьте качество кабеля
- Используйте экранированные кабели
- Уменьшите скорость до 9600 bps
Настройте автоматический reconnect в терминальной программе.
Лучшие практики
Безопасность консоли
- Ограничение доступа к физической консоли:
configure
# Настройте таймаут консольной сессии
set system login timeout 300
# Требуйте аутентификацию для консоли
set system console device ttyS0
commit
save- Логирование консольных сессий:
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- Защита GRUB паролем (опционально):
# Создать хеш пароля для GRUB
grub-mkpasswd-pbkdf2
# Добавить в /etc/grub.d/40_custom
set superusers="root"
password_pbkdf2 root <generated-hash>Производительность и надежность
Выбор оптимальной скорости:
- Локальные соединения: 115200 bps
- Облачные платформы: 9600-38400 bps
- Длинные кабели: 9600-19200 bps
Резервирование консолей:
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- Мониторинг состояния консоли:
# Создать скрипт проверки консоли
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Документирование конфигурации
- Добавление комментариев к конфигурации:
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- Сохранение резервных копий конфигурации:
# Создать backup с описанием
save /config/backup/config-with-console-$(date +%Y%m%d).bootОблачные платформы
- Yandex Cloud: Используйте 9600 bps для стабильности:
configure
set system console device ttyS0 speed 9600
commit
save- VK Cloud Bare-Metal: Используйте 115200 bps для IPMI SOL:
configure
set system console device ttyS0 speed 115200
commit
save- Гибридная конфигурация (виртуальная + физическая):
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 Documentation: Console Configuration
- Yandex Cloud: Serial Console
- VK Cloud: Bare-Metal Servers
- Serial Console Best Practices
Заключение
Последовательная консоль является критически важным инструментом для администрирования VyOS маршрутизаторов, особенно в серверных и облачных средах. Правильная настройка консоли обеспечивает:
- Надежный out-of-band доступ для аварийного восстановления
- Возможность диагностики проблем загрузки системы
- Удобный доступ через облачные платформы (Yandex Cloud, VK Cloud)
- Резервный канал управления при сетевых проблемах
Следуйте рекомендациям по выбору скорости передачи данных, настраивайте резервирование консольных устройств и документируйте конфигурацию для упрощения поддержки и устранения неполадок.