← Назад к вопросам

Как посмотреть нарушения статических маршрутов

2.0 Middle🔥 62 комментариев
#Сети и протоколы

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Диагностика проблем со статическими маршрутами в Linux

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

Основные команды диагностики

1. Проверка текущей таблицы маршрутизации

ip route show
# или устаревший вариант
route -n

Первым делом нужно убедиться, что ваши статические маршруты присутствуют в таблице. Если их нет - проблема в добавлении.

2. Проверка маршрутов к конкретному адресу

ip route get 8.8.8.8

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

3. Мониторинг утерянных маршрутов через журналы ядра

sudo dmesg | grep -i "route"
sudo journalctl -k --since "1 hour ago" | grep -i route

Ядро Linux логирует события, связанные с маршрутизацией, включая исчезновение маршрутов.

Типичные "нарушения" и их диагностика

### 1. Конфликты маршрутов

# Показать все маршруты с сортировкой по сети
ip route show | sort

Конфликты возникают, когда несколько маршрутов покрывают одинаковые сети с разными метриками или шлюзами.

### 2. Проблемы с ARP для шлюза

# Проверить доступность шлюза
arp -an | grep "шлюз_маршрута"
ping -c 3 шлюз_маршрута

Если шлюз недоступен на уровне L2 (нет ARP-записи), маршрут будет "мертвым".

### 3. Проверка Forwarding

cat /proc/sys/net/ipv4/ip_forward
# Должно быть 1 для маршрутизаторов

Если устройство должно маршрутизировать трафик, IP forwarding должен быть включен.

Расширенный мониторинг

Настройка мониторинга через ip monitor:

# Мониторить изменения маршрутов в реальном времени
ip monitor route &
# Отфильтровать только события добавления/удаления
ip monitor route | grep -E "(RTM_DELROUTE|RTM_NEWROUTE)"

Использование conntrack для отслеживания проблем:

# Показать неудачные попытки маршрутизации
conntrack -E -e FAILED

Пример скрипта для проверки статических маршрутов

#!/bin/bash
# check_static_routes.sh

STATIC_ROUTES=("192.168.10.0/24 via 10.0.0.1" "10.10.0.0/16 via 172.16.0.1")

echo "Проверка статических маршрутов..."
echo "================================"

CURRENT_ROUTES=$(ip route show)

for route in "${STATIC_ROUTES[@]}"; do
    if echo "$CURRENT_ROUTES" | grep -q "$route"; then
        echo "✓ Маршрут $route присутствует"
        
        # Проверка доступности шлюза
        gateway=$(echo "$route" | grep -o 'via [0-9.]*' | cut -d' ' -f2)
        if [ -n "$gateway" ]; then
            if ping -c 2 -W 1 "$gateway" > /dev/null 2>&1; then
                echo "  Шлюз $gateway доступен"
            else
                echo "  ⚠ Шлюз $gateway НЕДОСТУПЕН!"
            fi
        fi
    else
        echo "✗ Маршрут $route ОТСУТСТВУЕТ в таблице!"
    fi
done

echo "================================"
echo "Проверка метрик маршрутов:"
ip route show | grep -v "linkdown" | head -20

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

Для production-сред используйте:

  • Prometheus с экспортером node_exporter (метрики сети)
  • Zabbix шаблоны для мониторинга таблицы маршрутизации
  • Кастомные проверки через ip route в Nagios/Icinga

Главные принципы диагностики:

  1. Всегда проверяйте полную таблицу маршрутизации, а не отдельные записи
  2. Учитывайте метрики маршрутов - меньшая метрика имеет приоритет
  3. Проверяйте доступность шлюзов на L2 и L3 уровнях
  4. Смотрите логи ядра при исчезновении маршрутов
  5. Используйте tcpdump для анализа трафика на интерфейсах

Наиболее частые "нарушения": дублирующиеся маршруты с разными метриками, "мертвые" шлюзы, конфликты с маршрутами от DHCP, и проблемы с таблицами маршрутизации при использовании VPN или overlay-сетей.

Как посмотреть нарушения статических маршрутов | PrepBro