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

Как проверить, что добавилось в таблицу маршрутизации при подключении VPN в Linux

2.0 Middle🔥 211 комментариев
#Linux и администрирование#Сети и протоколы

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

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

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

Анализ изменений в таблице маршрутизации при подключении VPN в Linux

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

Основные команды для проверки маршрутизации

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

ip route show

Или классическая команда:

route -n

Эти команды показывают текущее состояние таблицы маршрутизации. При подключении VPN вы увидите:

  • Новый маршрут через туннельный интерфейс (обычно tun0, tun1, wg0, ppp0)
  • Изменение маршрута по умолчанию (default via) на VPN-шлюз
  • Специфичные маршруты к VPN-серверу через основной интерфейс

2. Дифференциальный анализ до/после подключения

# Сохраняем состояние до подключения
ip route show > routes_before.txt

# Подключаем VPN
sudo openvpn --config client.ovpn

# Сохраняем состояние после подключения
ip route show > routes_after.txt

# Сравниваем различия
diff routes_before.txt routes_after.txt

Или в одну строку с ip route save:

sudo ip route save > /tmp/routes_before.bin
# После подключения VPN
sudo ip route save > /tmp/routes_after.bin

3. Просмотр маршрутов для конкретного интерфейса

ip route show dev tun0

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

Типичные изменения при подключении VPN

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

  • Новый маршрут по умолчанию:

    default via 10.8.0.1 dev tun0 proto static metric 50
    
  • Маршрут к VPN-серверу через физический интерфейс:

    203.0.113.5 via 192.168.1.1 dev eth0
    
  • Локальные маршруты для VPN-подсети:

    10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
    

Автоматизированный мониторинг изменений

Для автоматического отслеживания изменений можно использовать скрипт:

#!/bin/bash
# monitor-route-changes.sh

INTERFACE="tun0"
LOG_FILE="/var/log/vpn-routes.log"

echo "Мониторинг изменений маршрутизации для $INTERFACE" | tee -a $LOG_FILE

while true; do
    if ip link show $INTERFACE > /dev/null 2>&1; then
        CURRENT_ROUTES=$(ip route show dev $INTERFACE)
        if [ "$CURRENT_ROUTES" != "$LAST_ROUTES" ]; then
            echo "=== $(date) ===" | tee -a $LOG_FILE
            echo "Изменения в маршрутизации:" | tee -a $LOG_FILE
            echo "$CURRENT_ROUTES" | tee -a $LOG_FILE
            LAST_ROUTES="$CURRENT_ROUTES"
        fi
    fi
    sleep 5
done

Анализ политик маршрутизации

В современных дистрибутивах также важно проверять таблицы политик маршрутизации:

ip rule show

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

Проверка с использованием network namespaces

Для изоляции можно использовать network namespaces:

# Создаем namespace для тестирования
sudo ip netns add vpn-test

# Запускаем VPN внутри namespace
sudo ip netns exec vpn-test openvpn --config client.ovpn

# Проверяем маршруты внутри namespace
sudo ip netns exec vpn-test ip route show

Практические примеры диагностики

  1. Проверка утечки DNS:

    ip route show | grep -E '^default|^0\.0\.0\.0'
    
  2. Определение, какой трафик идет через VPN:

    # Проверка маршрута для конкретного IP
    ip route get 8.8.8.8
    
  3. Просмотр метрик маршрутов:

    ip route show table all
    

Важные моменты для DevOps-инженера

  • Понимание таблиц маршрутизации: В Linux может быть несколько таблиц (main, local, default). Используйте ip route show table <name> для просмотра конкретной
  • Метрики маршрутов: При конфликтах используется маршрут с меньшей метрикой
  • Split-tunneling: Некоторые VPN настраивают маршруты только для определенных подсетей
  • Сохранение маршрутов: Используйте ip route save и ip route restore для бэкапа конфигурации

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