Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

NET-DUALWAN-009 Сетевое оборудование и VPN

Резервирование VPN (Dual-WAN IPsec и WireGuard) с автопереключением на MikroTik

Обновлено: 25.08.2026 · Официальная документация ↗

При использовании двух и более интернет-провайдеров для построения корпоративного VPN часто фиксируются:

  • Туннель не переключается на резервного провайдера (ISP2) при физическом падении связи у основного (ISP1).
  • Зависание установленных IPsec SA сессий на мертвом интерфейсе (черная дыра трафика).
  • Пакеты WireGuard продолжают отправляться через упавший шлюз из-за жесткой привязки сокетов в ядре.
  • Флаппинг маршрутов (Routing Flapping) при кратковременных потерях пакетов.

1. Настройка рекурсивной маршрутизации (Failover) на MikroTik RouterOS

Рекурсивный поиск проверяет реальную доступность публичных DNS серверов через каждого провайдера:

# Маршруты проверки доступности интернета через внешние IP:
/ip route add dst-address=1.1.1.1/32 gateway=198.51.100.1 scope=10 comment="Check ISP1"
/ip route add dst-address=8.8.8.8/32 gateway=203.0.113.1 scope=10 comment="Check ISP2"

# Маршруты по умолчанию с проверкой check-gateway:
/ip route add dst-address=0.0.0.0/0 gateway=1.1.1.1 check-gateway=ping distance=1 target-scope=11 comment="Primary Default Route"
/ip route add dst-address=0.0.0.0/0 gateway=8.8.8.8 check-gateway=ping distance=2 target-scope=11 comment="Backup Default Route"

2. Настройка отказоустойчивого WireGuard туннеля

# Создаем два интерфейса WireGuard через разных провайдеров:
/interface wireguard add name=wg-isp1 listen-port=51821 mtu=1420
/interface wireguard add name=wg-isp2 listen-port=51822 mtu=1420

# Добавляем пиры с привязкой к разным портам удаленного сервера:
/interface wireguard peers add interface=wg-isp1 public-key="KEY1..." endpoint-address=192.0.2.1 endpoint-port=51821 allowed-address=0.0.0.0/0 persistent-keepalive=10s
/interface wireguard peers add interface=wg-isp2 public-key="KEY2..." endpoint-address=192.0.2.1 endpoint-port=51822 allowed-address=0.0.0.0/0 persistent-keepalive=10s

3. Автоматический сброс зависших сессий IPsec через Netwatch

# При падении основного линка сбрасываем залипшие SA сессии:
/tool netwatch add host=1.1.1.1 interval=5s timeout=1s down-script="/ip ipsec installed-sa flush; /log warning \"ISP1 Down: Flushed IPsec SAs\""

4. Маршрутизация через туннели с плавающими метриками (Floating Static Routes)

/ip route add dst-address=192.168.0.0/16 gateway=10.254.1.2 distance=1 comment="VPN via ISP1"
/ip route add dst-address=192.168.0.0/16 gateway=10.254.2.2 distance=2 comment="VPN via ISP2"
💡 Практика специалистов: На RouterOS v7 всегда маркируйте исходящие соединения самого роутера (Output chain) для пиров WireGuard/IPsec через разные таблицы маршрутизации (Routing Tables), чтобы жестко зафиксировать обмен хэндшейками через правильные физические WAN-интерфейсы.

Частые вопросы (FAQ)

Почему check-gateway=ping не работает напрямую со шлюзом провайдера?

Шлюз провайдера может продолжать отвечать на ping даже при полной аварии на магистральной сети вышестоящего оператора. Рекурсивная маршрутизация проверяет сквозную доступность независимых внешних хостов (например, 1.1.1.1).

Зачем выполнять 'installed-sa flush' при переключении каналов в IPsec?

Без принудительной очистки Security Associations ядро операционной системы будет пытаться отправлять шифрованный трафик через старые SA с привязкой к упавшему IP-адресу вплоть до истечения их тайм-аута (Lifetime).

Как WireGuard определяет, через какой интерфейс отправлять трафик при наличии двух WAN?

WireGuard отправляет пакеты на IP:Port, указанный в поле Endpoint, используя системную таблицу маршрутизации. При переключении шлюза по умолчанию ядро автоматически направляет UDP-пакеты через новый активный маршрут.

Какое время переключения обеспечивает связка Netwatch + Check Gateway?

При интервале опроса 2-3 секунды время обнаружения аварии и полной сходимости маршрутов составляет от 3 до 7 секунд.

Полезные материалы
Рекомендуем