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
Общие рекомендации
- Всегда создавайте backup перед изменениями
save /config/config.boot.backup-$(date +%Y%m%d)- Используйте commit-confirm для критичных изменений
commit-confirm 5 # Auto-rollback через 5 минут если не confirm
# Тестируем изменения
confirm # Если всё OK
# Или просто ждём 5 минут для auto-rollback- Документируйте изменения
commit comment "Added firewall rule for SSH access from office"- Используйте compare для проверки изменений
compare # Сравнить с running config
compare saved # Сравнить с saved config- Мониторьте логи во время troubleshooting
monitor log # В отдельной SSH сессии- Тестируйте изменения поэтапно
# Применяйте изменения по одному
set ...
commit
# Проверяем
# Следующее изменение- Сохраняйте рабочую конфигурацию регулярно
save
save /config/config.boot.working- Используйте rollback при необходимости
rollback 1 # Откат на 1 commit назад
rollback 2 # Откат на 2 commits назад- Ведите журнал изменений
# Создать файл CHANGELOG
sudo vi /config/CHANGELOG
# Записывать все значимые изменения- Автоматизируйте сбор диагностики
# Создать 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)
Полезные ресурсы
Официальная документация
- VyOS Documentation: https://docs.vyos.io/
- VyOS Wiki: https://wiki.vyos.net/
- VyOS Forum: https://forum.vyos.io/
Сообщество
- VyOS Slack: https://vyos.slack.com/
- VyOS Reddit: https://www.reddit.com/r/vyos/
- GitHub Issues: https://github.com/vyos/vyos-1x/issues
Полезные команды для справки
# Поиск команд
find /configure/
# Help по команде
help <command>
# Автодополнение
<Tab>
# История команд
history
# Очистка экрана
clearЗаключение
Эффективное устранение неполадок в VyOS требует:
- Систематического подхода: Следование методологии от симптомов к решению
- Знания инструментов: Использование правильных диагностических команд
- Опыта: Понимание типичных проблем и их решений
- Документирования: Ведение журнала изменений и решений
- Превентивности: Мониторинг и профилактика проблем
Используйте это руководство как справочник при возникновении проблем, но также развивайте навыки анализа и диагностики для решения нестандартных ситуаций.