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

«Как проверить, что добавилось в таблицу маршрутизации при подключении VPN в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При работе с VPN (например, WireGuard для доступа к кластерам Kubernetes или OpenVPN для облачных сетей) важно контролировать изменения маршрутизации, чтобы не потерять доступ к хосту.

1. Сравнение состояния до и после Самый надежный способ — сделать снимки таблицы маршрутизации.

# Захватываем состояние ДО подключения
ip route show table all > /tmp/routes_before.txt

# Подключаем VPN (например, WireGuard)
sudo wg-quick up wg0

# Захватываем состояние ПОСЛЕ
ip route show table all > /tmp/routes_after.txt

# Находим различия
diff -u /tmp/routes_before.txt /tmp/routes_after.txt | grep -E '^[+-]' | grep -v '^+++' | grep -v '^---'

2. Ключевые изменения для анализа

  • Новый интерфейс: Появление маршрутов через tun0, wg0, ppp0.
  • Default route: Изменение маршрута по умолчанию (0.0.0.0/0 или ::/0). Если VPN перехватывает весь трафик, это может быть проблемой.
  • Специфичные маршруты: Добавление маршрутов к приватным сетям компании (например, 10.10.0.0/16 via 192.168.1.1).

3. Мониторинг в реальном времени

# Следим за изменениями каждую секунду
watch -n 1 "ip route show | grep -E '(default|wg0|tun0)'"

# Или используем более продвинутый инструмент iproute2
ip monitor route

4. Автоматизация проверки для скриптов

#!/bin/bash
VPN_INTERFACE="wg0"

if ip route show | grep -q "default.*dev $VPN_INTERFACE"; then
    echo "WARNING: Default route is through VPN. This may break SSH/management access."
    # Можно автоматически добавить исключающий маршрут для адреса управления
    ip route add 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
fi

5. Работа с политиками маршрутизации В сложных сценариях используем таблицы маршрутизации (ip rule), чтобы разделить трафик. Например, маршрутизировать только трафик к приватным сетям через VPN, а весь остальной — через основной интерфейс.