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

Систематическое руководство по диагностике и устранению неполадок в VyOS. Это руководство охватывает общие проблемы, методологию troubleshooting и практические решения для всех основных компонентов системы.

Методология устранения неполадок

Систематический подход

Шаг 1: Определение проблемы

  • Точное описание симптомов
  • Воспроизводимость проблемы
  • Время возникновения (после изменений, спонтанно)
  • Влияние на пользователей/сервисы

Шаг 2: Сбор информации

  • Системные логи
  • Конфигурация устройства
  • Статус компонентов
  • Сетевая топология

Шаг 3: Анализ

  • Корреляция событий
  • Проверка гипотез
  • Изоляция проблемы

Шаг 4: Решение

  • Применение исправления
  • Проверка результата
  • Документирование решения

Шаг 5: Профилактика

  • Анализ первопричины
  • Предотвращение повторения
  • Обновление процедур

Инструменты диагностики

# Базовый набор команд для первичной диагностики
show version                        # Версия системы
show configuration                  # Текущая конфигурация
show interfaces                     # Статус интерфейсов
show ip route                       # Таблица маршрутизации
show log tail 100                   # Последние 100 строк логов
show system uptime                  # Время работы системы
show system resources               # Использование ресурсов

# Расширенная диагностика
monitor log                         # Мониторинг логов в реальном времени
monitor traffic interface eth0      # Захват трафика
show conntrack table ipv4           # Таблица соединений
show vpn ipsec sa                   # Статус IPsec туннелей
show dhcp server leases             # DHCP аренды

Проблемы с сетевым подключением

Проблема: Нет связи с удаленным хостом

Диагностика

# Шаг 1: Проверить статус локального интерфейса
show interfaces
show interfaces ethernet eth0

# Шаг 2: Проверить IP конфигурацию
show interfaces addresses

# Шаг 3: Проверить маршрутизацию
show ip route
show ip route 8.8.8.8

# Шаг 4: Проверить connectivity
ping 8.8.8.8
ping 8.8.8.8 source-address <your-ip>

# Шаг 5: Трассировка маршрута
traceroute 8.8.8.8

# Шаг 6: Проверить DNS
nslookup google.com

Типичные причины и решения

Причина 1: Интерфейс down

# Проверить статус
show interfaces ethernet eth0

# Если интерфейс administratively down
configure
delete interfaces ethernet eth0 disable
commit
save
exit

# Проверить физическое подключение
show interfaces ethernet eth0 physical

Причина 2: Неверная конфигурация IP адреса

# Проверить текущую конфигурацию
show interfaces ethernet eth0 address

# Исправить IP адрес
configure
set interfaces ethernet eth0 address 192.168.1.1/24
commit
save
exit

# Проверить результат
show interfaces addresses
ping 192.168.1.254  # Gateway

Причина 3: Отсутствует маршрут

# Проверить маршрут до целевой сети
show ip route 8.8.8.8

# Добавить default route если отсутствует
configure
set protocols static route 0.0.0.0/0 next-hop 192.168.1.254
commit
save
exit

# Проверить маршрутизацию
show ip route
ping 8.8.8.8

Причина 4: Firewall блокирует трафик

# Проверить правила firewall
show firewall

# Проверить счетчики на правилах
show firewall statistics

# Временно отключить firewall для теста
configure
set firewall all-ping enable
set firewall state-policy established action accept
set firewall state-policy related action accept
commit

# Проверить connectivity
ping 8.8.8.8

# Если помогло - настроить firewall правильно
set firewall name WAN_LOCAL default-action drop
set firewall name WAN_LOCAL rule 10 action accept
set firewall name WAN_LOCAL rule 10 state established enable
set firewall name WAN_LOCAL rule 10 state related enable
commit
save

Причина 5: MTU проблемы

# Проверить MTU
show interfaces ethernet eth0

# Тест с разными размерами пакетов
ping 8.8.8.8 size 1472 do-not-fragment  # 1472 + 28 = 1500
ping 8.8.8.8 size 1400 do-not-fragment

# Если большие пакеты не проходят - уменьшить MTU
configure
set interfaces ethernet eth0 mtu 1400
commit
save

# Для PPPoE обычно требуется MTU 1492
set interfaces ethernet eth0 mtu 1492

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

Диагностика производительности

# Проверить загрузку интерфейсов
show interfaces
show interfaces counters

# Проверить ошибки на интерфейсах
show interfaces ethernet eth0 statistics

# Проверить дуплекс и скорость
show interfaces ethernet eth0 physical

# Мониторинг трафика
monitor traffic interface eth0

# Проверить системные ресурсы
show system cpu
show system memory
show system storage

Типичные причины и решения

Причина 1: Несоответствие дуплекса

# Проверить текущие настройки
show interfaces ethernet eth0 physical

# Если auto-negotiation не работает - задать вручную
configure
set interfaces ethernet eth0 duplex full
set interfaces ethernet eth0 speed 1000
commit
save

# Перезапустить интерфейс
sudo ip link set eth0 down
sudo ip link set eth0 up

Причина 2: Высокая загрузка CPU

# Проверить загрузку CPU
show system cpu
show system processes

# Определить процессы-потребители
top

# Если высокая нагрузка от conntrack
show conntrack table ipv4 | wc -l

# Увеличить conntrack table size
configure
set system conntrack table-size 262144
commit
save

# Оптимизировать timeouts
set system conntrack timeout tcp established 432000
set system conntrack timeout tcp close 10

Причина 3: QoS ограничения

# Проверить QoS политики
show qos

# Проверить применение политик
show qos interface eth0

# Временно отключить QoS для теста
configure
delete traffic-policy
delete interfaces ethernet eth0 traffic-policy
commit

# Если помогло - пересмотреть QoS конфигурацию

Причина 4: DNS проблемы

# Проверить DNS резолвинг
nslookup google.com
dig google.com

# Проверить время ответа DNS
time nslookup google.com

# Если медленно - изменить DNS серверы
configure
set system name-server 8.8.8.8
set system name-server 8.8.4.4
commit
save

# Для DNS forwarding - проверить кэш
show dns forwarding statistics
reset dns forwarding cache

Проблемы с VPN

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

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

# Проверить статус IPsec
show vpn ipsec sa
show vpn ipsec status

# Детальная информация о туннелях
show vpn ipsec sa detail

# Проверить конфигурацию
show configuration vpn ipsec

# Логи IPsec
show log vpn ipsec
monitor log | match ipsec

Типичные причины и решения

Причина 1: Несоответствие параметров IKE/ESP

# Проверить параметры на обеих сторонах
show configuration vpn ipsec ike-group
show configuration vpn ipsec esp-group

# Типичная рабочая конфигурация
configure
set vpn ipsec ike-group IKE-SITE proposal 1 encryption aes256
set vpn ipsec ike-group IKE-SITE proposal 1 hash sha256
set vpn ipsec ike-group IKE-SITE proposal 1 dh-group 14
set vpn ipsec ike-group IKE-SITE lifetime 28800

set vpn ipsec esp-group ESP-SITE proposal 1 encryption aes256
set vpn ipsec esp-group ESP-SITE proposal 1 hash sha256
set vpn ipsec esp-group ESP-SITE lifetime 3600
set vpn ipsec esp-group ESP-SITE pfs dh-group14

commit
save

# Перезапустить IPsec
sudo ipsec restart

Причина 2: Неверный Pre-Shared Key

# Проверить конфигурацию PSK (пароль не отображается)
show configuration vpn ipsec site-to-site peer <peer-ip> authentication

# Обновить PSK
configure
set vpn ipsec site-to-site peer <peer-ip> authentication pre-shared-secret 'new-secret'
commit
save

# Перезапустить туннель
reset vpn ipsec-peer <peer-ip>

Причина 3: Firewall блокирует IPsec трафик

# IPsec требует UDP 500 (IKE) и UDP 4500 (NAT-T)
# Также ESP (протокол 50)

configure
# Разрешить IKE
set firewall name WAN_LOCAL rule 100 action accept
set firewall name WAN_LOCAL rule 100 protocol udp
set firewall name WAN_LOCAL rule 100 destination port 500

# Разрешить NAT-T
set firewall name WAN_LOCAL rule 101 action accept
set firewall name WAN_LOCAL rule 101 protocol udp
set firewall name WAN_LOCAL rule 101 destination port 4500

# Разрешить ESP
set firewall name WAN_LOCAL rule 102 action accept
set firewall name WAN_LOCAL rule 102 protocol esp

commit
save

Причина 4: NAT конфликт

# Проверить NAT правила
show nat source

# IPsec трафик не должен проходить через NAT
# Добавить exclude правило
configure
set nat source rule 100 outbound-interface eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 destination address 192.168.2.0/24  # Remote network
set nat source rule 100 exclude

commit
save

Причина 5: Неверные subnet конфигурации

# Проверить local и remote prefixes
show configuration vpn ipsec site-to-site peer <peer-ip> tunnel

# Исправить если неверно
configure
set vpn ipsec site-to-site peer <peer-ip> tunnel 1 local prefix 192.168.1.0/24
set vpn ipsec site-to-site peer <peer-ip> tunnel 1 remote prefix 192.168.2.0/24
commit
save

# Перезапустить туннель
reset vpn ipsec-peer <peer-ip>

# Проверить статус
show vpn ipsec sa

Проблема: WireGuard не работает

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

# Проверить статус интерфейса
show interfaces wireguard wg0

# Проверить peers
show interfaces wireguard wg0 summary

# Проверить handshake
show interfaces wireguard wg0 detail

# Проверить конфигурацию
show configuration interfaces wireguard wg0

Решения для WireGuard

Причина 1: Неверные публичные ключи

# Сгенерировать новые ключи
generate wireguard default-keypair

# Получить публичный ключ для передачи peer
show wireguard keypairs pubkey default

# Установить публичный ключ peer
configure
set interfaces wireguard wg0 peer <peer-name> public-key '<peer-public-key>'
commit
save

Причина 2: Firewall блокирует WireGuard

# WireGuard использует UDP (обычно 51820)
configure
set firewall name WAN_LOCAL rule 200 action accept
set firewall name WAN_LOCAL rule 200 protocol udp
set firewall name WAN_LOCAL rule 200 destination port 51820
commit
save

Причина 3: Нет handshake с peer

# Проверить endpoint peer
show configuration interfaces wireguard wg0 peer <peer-name>

# Проверить persistent-keepalive
configure
set interfaces wireguard wg0 peer <peer-name> persistent-keepalive 25
commit
save

# Принудительно инициировать соединение
ping <peer-wg-ip>

Проблемы с маршрутизацией

Проблема: BGP соседство не устанавливается

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

# Проверить BGP neighbors
show ip bgp summary
show ip bgp neighbors
show ip bgp neighbors <neighbor-ip> advertised-routes
show ip bgp neighbors <neighbor-ip> received-routes

# Проверить BGP конфигурацию
show configuration protocols bgp

# BGP логи
show log | match bgp

Решения для BGP

Причина 1: TCP connectivity отсутствует

# BGP использует TCP 179
# Проверить connectivity
telnet <neighbor-ip> 179

# Проверить firewall
configure
set firewall name WAN_LOCAL rule 300 action accept
set firewall name WAN_LOCAL rule 300 protocol tcp
set firewall name WAN_LOCAL rule 300 destination port 179
commit
save

# Проверить маршрут до neighbor
show ip route <neighbor-ip>

Причина 2: Неверные параметры BGP

# Проверить ASN на обеих сторонах
show configuration protocols bgp

# Проверить remote-as
show configuration protocols bgp <local-asn> neighbor <neighbor-ip>

# Исправить если неверно
configure
set protocols bgp <local-asn> neighbor <neighbor-ip> remote-as <correct-remote-asn>
commit
save

# Сбросить BGP session
reset ip bgp <neighbor-ip>

Причина 3: MD5 authentication не совпадает

# Проверить MD5 password
show configuration protocols bgp <asn> neighbor <neighbor-ip> password

# Обновить password (должен совпадать с peer)
configure
set protocols bgp <asn> neighbor <neighbor-ip> password 'correct-password'
commit
save

# Сбросить session
reset ip bgp <neighbor-ip>

Причина 4: TTL security

# Для eBGP multihop
configure
set protocols bgp <asn> neighbor <neighbor-ip> ebgp-multihop 2
commit
save

# Для TTL security
set protocols bgp <asn> neighbor <neighbor-ip> ttl-security hops 1

Проблема: OSPF adjacency не формируется

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

# Проверить OSPF neighbors
show ip ospf neighbor
show ip ospf neighbor detail

# Проверить OSPF интерфейсы
show ip ospf interface

# Проверить OSPF database
show ip ospf database

# OSPF конфигурация
show configuration protocols ospf

Решения для OSPF

Причина 1: Несоответствие area

# Проверить area на обеих сторонах
show configuration protocols ospf area

# Исправить area
configure
set protocols ospf area 0 network 192.168.1.0/24
commit
save

Причина 2: Hello/Dead intervals не совпадают

# Проверить интервалы
show ip ospf interface eth1

# Установить интервалы (должны совпадать на обеих сторонах)
configure
set protocols ospf interface eth1 hello-interval 10
set protocols ospf interface eth1 dead-interval 40
commit
save

Причина 3: Authentication mismatch

# Настроить MD5 authentication (должен быть одинаковый на обеих сторонах)
configure
set protocols ospf area 0 authentication md5
set protocols ospf interface eth1 authentication md5 key-id 1 md5-key 'password'
commit
save

Причина 4: Passive interface

# Проверить passive interfaces
show configuration protocols ospf passive-interface

# Если интерфейс passive - удалить
configure
delete protocols ospf passive-interface eth1
commit
save

Проблемы с DHCP

Проблема: DHCP клиенты не получают адреса

Диагностика DHCP Server

# Проверить статус DHCP сервера
show service dhcp-server

# Проверить активные аренды
show dhcp server leases

# Проверить статистику
show dhcp server statistics

# Проверить конфигурацию
show configuration service dhcp-server

# Логи DHCP
show log dhcp
monitor log | match dhcp

Решения для DHCP

Причина 1: DHCP сервис не запущен

# Проверить сервис
show service dhcp-server

# Запустить сервис
sudo systemctl restart isc-dhcp-server  # VyOS 1.4
sudo systemctl restart kea-dhcp4-server  # VyOS 1.5

# Проверить статус
sudo systemctl status isc-dhcp-server  # VyOS 1.4
sudo systemctl status kea-dhcp4-server  # VyOS 1.5

Причина 2: Неверная конфигурация subnet

# Проверить subnet конфигурацию
show configuration service dhcp-server shared-network-name LAN

# Исправить subnet
configure
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 default-router 192.168.1.1
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 name-server 8.8.8.8
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start 192.168.1.100
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop 192.168.1.200
commit
save

Причина 3: Pool исчерпан

# Проверить количество аренд
show dhcp server leases

# Подсчитать активные аренды
show dhcp server leases | grep "^IP" | wc -l

# Расширить pool
configure
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop 192.168.1.250
commit
save

Причина 4: Firewall блокирует DHCP

# DHCP использует UDP 67 (server) и 68 (client)
configure
set firewall name LAN_LOCAL rule 400 action accept
set firewall name LAN_LOCAL rule 400 protocol udp
set firewall name LAN_LOCAL rule 400 destination port 67
set firewall name LAN_LOCAL rule 400 source port 68

commit
save

Причина 5: Static mapping конфликт (VyOS 1.5 Kea)

# В VyOS 1.5 Kea требует IP или hostname в дополнение к MAC
configure
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping workstation mac '00:11:22:33:44:55'
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 static-mapping workstation ip-address '192.168.1.50'
commit
save

Проблема: DHCP клиент не получает адрес на WAN

Диагностика DHCP Client

# Проверить статус интерфейса
show interfaces ethernet eth0

# Проверить DHCP lease
show dhcp client leases

# Попробовать обновить lease
release dhcp interface eth0
renew dhcp interface eth0

# Логи
show log | match eth0

Решения для DHCP Client

Причина 1: Интерфейс не настроен на DHCP

configure
set interfaces ethernet eth0 address dhcp
commit
save

Причина 2: DHCP клиент не отправляет запросы

# Захватить трафик для проверки
sudo tcpdump -i eth0 port 67 or port 68 -v

# Если нет DHCP Discover - перезапустить интерфейс
configure
delete interfaces ethernet eth0 disable
set interfaces ethernet eth0 disable
commit
delete interfaces ethernet eth0 disable
commit
save

Проблемы с производительностью

Проблема: Высокая загрузка CPU

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

# Проверить загрузку CPU
show system cpu
show system cpu detailed

# Топ процессов
show system processes

# Детальная информация о процессах
top

Решения для CPU

Причина 1: Большая conntrack таблица

# Проверить размер conntrack table
show conntrack table ipv4 | wc -l

# Проверить лимит
sudo sysctl net.netfilter.nf_conntrack_max

# Увеличить лимит
configure
set system conntrack table-size 262144
commit
save

# Оптимизировать timeouts
set system conntrack timeout tcp close 10
set system conntrack timeout tcp time-wait 60
commit
save

# Применить немедленно
sudo sysctl -w net.netfilter.nf_conntrack_max=262144

Причина 2: Интенсивное логирование

# Проверить размер логов
show log
du -sh /var/log/

# Уменьшить уровень логирования
configure
set system syslog global facility all level warning
commit
save

# Удалить старые логи
sudo find /var/log -name "*.log" -mtime +30 -delete

Причина 3: Много BGP prefixes

# Проверить количество BGP prefixes
show ip bgp summary

# Применить prefix filtering
configure
set policy prefix-list BGP-IN rule 10 action permit
set policy prefix-list BGP-IN rule 10 prefix 0.0.0.0/0
set policy prefix-list BGP-IN rule 10 le 24

set policy route-map BGP-FILTER rule 10 action permit
set policy route-map BGP-FILTER rule 10 match ip address prefix-list BGP-IN

set protocols bgp <asn> neighbor <neighbor-ip> address-family ipv4-unicast route-map import BGP-FILTER

commit
save

Проблема: Высокое использование памяти

Диагностика памяти

# Проверить использование памяти
show system memory

# Детальная информация
free -h
cat /proc/meminfo

# Процессы по использованию памяти
ps aux --sort=-%mem | head -20

Решения для памяти

Причина 1: Большой кэш

# Проверить кэш
free -h

# Очистить page cache (безопасно)
sudo sync
sudo sysctl -w vm.drop_caches=1

# Очистить dentries и inodes
sudo sysctl -w vm.drop_caches=2

# Очистить всё
sudo sysctl -w vm.drop_caches=3

Причина 2: DNS forwarding cache слишком большой

# Проверить размер DNS кэша
show dns forwarding statistics

# Уменьшить размер кэша
configure
set service dns forwarding cache-size 1000
commit
save

# Очистить DNS кэш
reset dns forwarding cache

Причина 3: Утечка памяти

# Определить процесс с утечкой
ps aux --sort=-%mem | head -10

# Если проблема в VyOS процессе - перезапустить
sudo systemctl restart frr  # Для routing daemons
sudo systemctl restart vyos-configd  # Для config daemon

# В крайнем случае - reboot
reboot now

Проблема: Высокая задержка (latency)

Диагностика задержки

# Проверить ping latency
ping 8.8.8.8
ping <local-gateway>

# Проверить buffer bloat
show qos interface eth0

# Мониторить задержку
mtr 8.8.8.8

Решения для задержки

Причина 1: Buffer bloat

# Применить fq_codel QoS
configure
set traffic-policy shaper WAN bandwidth 100mbit
set traffic-policy shaper WAN default bandwidth 100%
set traffic-policy shaper WAN default queue-type fq-codel

set interfaces ethernet eth0 traffic-policy out WAN

commit
save

Причина 2: Высокая загрузка канала

# Проверить загрузку интерфейсов
show interfaces

# Применить QoS приоритизацию
configure
set traffic-policy shaper WAN class 10 bandwidth 30%
set traffic-policy shaper WAN class 10 priority 1
set traffic-policy shaper WAN class 10 match VOIP ip dscp ef

set traffic-policy shaper WAN class 20 bandwidth 40%
set traffic-policy shaper WAN class 20 priority 2
set traffic-policy shaper WAN class 20 match INTERACTIVE ip dscp af21

commit
save

Проблемы с системой

Проблема: Конфигурация не сохраняется

Диагностика

# Проверить текущую конфигурацию
show configuration

# Проверить saved конфигурацию
show configuration saved

# Сравнить
compare saved

Решения

Причина 1: Забыли выполнить save

# Всегда после commit
commit
save

Причина 2: Нет места на диске

# Проверить место на диске
show system storage

# Если нет места - очистить
sudo apt-get clean
sudo apt-get autoclean
delete system image <old-version>

# Удалить старые логи
sudo find /var/log -name "*.gz" -delete

Причина 3: Проблемы с файловой системой

# Проверить файловую систему (только в maintenance mode)
# Reboot в single user mode
sudo fsck /dev/sda1

Проблема: Система не загружается после изменений

Решение: Загрузка с backup конфигурации

# При загрузке в GRUB меню
# Выбрать: VyOS (config file: /config/config.boot.backup)

# После загрузки - восстановить конфигурацию
configure
load /config/config.boot.backup
commit
save

Решение: Сброс конфигурации

# В operational mode
load /opt/vyatta/etc/config.boot.default
commit
save
reboot

Проблема: Высокая температура / Hardware проблемы

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

# Температура (если доступно sensors)
show hardware cpu
show hardware temperature

# Проверить системные логи на hardware errors
show log | match error
show log | match hardware

# Дополнительные инструменты
sudo sensors
sudo dmesg | grep -i error

Решения

Причина 1: Высокая температура CPU

# Проверить вентиляторы (physical)
# Проверить загрузку CPU
show system cpu

# Снизить нагрузку если возможно
# Проверить cooling system физически

Причина 2: Disk errors

# Проверить S.M.A.R.T.
sudo smartctl -a /dev/sda

# Проверить filesystem errors
dmesg | grep -i "I/O error"

# Backup конфигурации немедленно
show configuration commands | sudo tee /tmp/config-backup.txt

# Планировать замену диска

Проблемы с сервисами

Проблема: SSH не доступен

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

# Проверить SSH сервис (из консоли)
show service ssh

# Проверить конфигурацию
show configuration service ssh

# Проверить процесс
sudo systemctl status ssh

# Проверить порт
sudo netstat -tlnp | grep ssh

Решения для SSH

Причина 1: SSH сервис отключен

configure
delete service ssh disable
commit
save

# Проверить
show service ssh

Причина 2: Firewall блокирует SSH

configure
set firewall name WAN_LOCAL rule 500 action accept
set firewall name WAN_LOCAL rule 500 protocol tcp
set firewall name WAN_LOCAL rule 500 destination port 22
commit
save

Причина 3: Неверный listen address

# SSH должен слушать на правильном интерфейсе
configure
set service ssh listen-address 0.0.0.0
commit
save

# Перезапустить SSH
sudo systemctl restart ssh

Проблема: NTP не синхронизируется

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

# Проверить NTP status
show ntp

# Проверить NTP servers
show configuration service ntp

# Детальная информация
sudo ntpq -p

Решения для NTP

Причина 1: Нет connectivity до NTP серверов

# Проверить доступность NTP серверов
ping 0.pool.ntp.org
ping 1.pool.ntp.org

# Проверить UDP 123
sudo tcpdump -i eth0 udp port 123 -v

Причина 2: Firewall блокирует NTP

configure
set firewall name WAN_LOCAL rule 600 action accept
set firewall name WAN_LOCAL rule 600 protocol udp
set firewall name WAN_LOCAL rule 600 destination port 123

# Также разрешить outbound
set firewall name WAN_OUT rule 600 action accept
set firewall name WAN_OUT rule 600 protocol udp
set firewall name WAN_OUT rule 600 destination port 123

commit
save

Причина 3: Неверная timezone

# Установить правильную timezone
configure
set system time-zone Europe/Moscow
commit
save

# Перезапустить NTP
sudo systemctl restart ntp

Сбор диагностической информации

Полный набор диагностики для support ticket

#!/bin/vbash
# Скрипт сбора диагностической информации

TIMESTAMP=$(date +%Y%m%d-%H%M%S)
OUTPUT_DIR="/tmp/vyos-diag-${TIMESTAMP}"
mkdir -p "${OUTPUT_DIR}"

echo "Collecting diagnostic information..."

# Системная информация
show version > "${OUTPUT_DIR}/version.txt"
show system uptime > "${OUTPUT_DIR}/uptime.txt"
show system storage > "${OUTPUT_DIR}/storage.txt"
show system memory > "${OUTPUT_DIR}/memory.txt"
show system cpu > "${OUTPUT_DIR}/cpu.txt"

# Конфигурация
show configuration > "${OUTPUT_DIR}/configuration.txt"
show configuration commands > "${OUTPUT_DIR}/configuration-commands.txt"

# Интерфейсы
show interfaces > "${OUTPUT_DIR}/interfaces.txt"
show interfaces addresses > "${OUTPUT_DIR}/interfaces-addresses.txt"

# Маршрутизация
show ip route > "${OUTPUT_DIR}/ip-route.txt"
show ipv6 route > "${OUTPUT_DIR}/ipv6-route.txt"

# BGP (если используется)
show ip bgp summary > "${OUTPUT_DIR}/bgp-summary.txt" 2>/dev/null
show ip bgp neighbors > "${OUTPUT_DIR}/bgp-neighbors.txt" 2>/dev/null

# OSPF (если используется)
show ip ospf neighbor > "${OUTPUT_DIR}/ospf-neighbors.txt" 2>/dev/null

# VPN
show vpn ipsec sa > "${OUTPUT_DIR}/ipsec-sa.txt" 2>/dev/null
show interfaces wireguard > "${OUTPUT_DIR}/wireguard.txt" 2>/dev/null

# Firewall
show firewall > "${OUTPUT_DIR}/firewall.txt"
show firewall statistics > "${OUTPUT_DIR}/firewall-stats.txt"

# NAT
show nat source statistics > "${OUTPUT_DIR}/nat-stats.txt"

# Services
show dhcp server leases > "${OUTPUT_DIR}/dhcp-leases.txt" 2>/dev/null
show dns forwarding statistics > "${OUTPUT_DIR}/dns-stats.txt" 2>/dev/null

# Логи (последние 500 строк)
show log tail 500 > "${OUTPUT_DIR}/system-log.txt"

# Conntrack
show conntrack table ipv4 | head -100 > "${OUTPUT_DIR}/conntrack-sample.txt"

# Архивировать
cd /tmp
tar czf "vyos-diag-${TIMESTAMP}.tar.gz" "vyos-diag-${TIMESTAMP}/"

echo "Diagnostic information collected:"
echo "/tmp/vyos-diag-${TIMESTAMP}.tar.gz"
ls -lh "/tmp/vyos-diag-${TIMESTAMP}.tar.gz"

echo ""
echo "You can download this file with SCP:"
echo "scp vyos@router-ip:/tmp/vyos-diag-${TIMESTAMP}.tar.gz ."

Сохранить скрипт и использовать

# Сохранить скрипт
sudo vi /config/scripts/collect-diag.sh
# Вставить код выше
sudo chmod +x /config/scripts/collect-diag.sh

# Запустить
sudo /config/scripts/collect-diag.sh

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

Общие рекомендации

  1. Всегда создавайте backup перед изменениями
save /config/config.boot.backup-$(date +%Y%m%d)
  1. Используйте commit-confirm для критичных изменений
commit-confirm 5  # Auto-rollback через 5 минут если не confirm
# Тестируем изменения
confirm  # Если всё OK
# Или просто ждём 5 минут для auto-rollback
  1. Документируйте изменения
commit comment "Added firewall rule for SSH access from office"
  1. Используйте compare для проверки изменений
compare  # Сравнить с running config
compare saved  # Сравнить с saved config
  1. Мониторьте логи во время troubleshooting
monitor log  # В отдельной SSH сессии
  1. Тестируйте изменения поэтапно
# Применяйте изменения по одному
set ...
commit
# Проверяем
# Следующее изменение
  1. Сохраняйте рабочую конфигурацию регулярно
save
save /config/config.boot.working
  1. Используйте rollback при необходимости
rollback 1  # Откат на 1 commit назад
rollback 2  # Откат на 2 commits назад
  1. Ведите журнал изменений
# Создать файл CHANGELOG
sudo vi /config/CHANGELOG
# Записывать все значимые изменения
  1. Автоматизируйте сбор диагностики
# Создать cron задачу для ежедневного backup конфигурации
set system task-scheduler task daily-backup executable path /config/scripts/daily-backup.sh
set system task-scheduler task daily-backup interval 1d

Контрольный список для критичных проблем

При потере connectivity:

  • Проверить physical link
  • Проверить IP адресацию
  • Проверить маршрутизацию
  • Проверить firewall rules
  • Проверить NAT rules (если применимо)
  • Проверить MTU
  • Проверить ARP таблицу

При проблемах с VPN:

  • Проверить connectivity до peer
  • Проверить firewall (UDP 500, 4500, ESP)
  • Проверить IKE/ESP параметры
  • Проверить PSK/certificates
  • Проверить NAT exclude rules
  • Проверить routing через VPN

При проблемах с routing protocols:

  • Проверить adjacency/peering
  • Проверить authentication
  • Проверить timers/intervals
  • Проверить ACLs/prefix-lists
  • Проверить route-maps
  • Проверить redistribution

При проблемах с производительностью:

  • Проверить CPU usage
  • Проверить memory usage
  • Проверить disk space
  • Проверить interface statistics (errors, drops)
  • Проверить conntrack table size
  • Проверить QoS policies
  • Проверить hardware (temperature, fans)

Полезные ресурсы

Официальная документация

Сообщество

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

# Поиск команд
find /configure/

# Help по команде
help <command>

# Автодополнение
<Tab>

# История команд
history

# Очистка экрана
clear

Заключение

Эффективное устранение неполадок в VyOS требует:

  • Систематического подхода: Следование методологии от симптомов к решению
  • Знания инструментов: Использование правильных диагностических команд
  • Опыта: Понимание типичных проблем и их решений
  • Документирования: Ведение журнала изменений и решений
  • Превентивности: Мониторинг и профилактика проблем

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