Ответ
При работе с 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, а весь остальной — через основной интерфейс.