Описание проблемы: Три удалённых площадки подключены к Главному офису. Site1 и Site3 соединяются с Главным офисом через Wireguard. Site2 соединяется с Site1 и Site3 по радиолиниям и не имеет прямого доступа в публичный интернет. Это кольцевая топология в удалённой зоне; наличие нескольких путей в обе стороны — обязательное требование для обеспечения максимального времени безотказной работы передачи данных. Маршрутизация выполняется через OSPF. Линия между Site1 и Главным офисом — оптоволокно, поэтому стоимость OSPF = 10. Линия между Site3 и Главным офисом — через сотовый модем, поэтому стоимость OSPF = 500, чтобы сделать маршрут менее предпочтительным. OSPF работает как надо, если радиолиния между Site2 и одним из соседних сайтов падает; тогда альтернативный маршрут через Wireguard на WG-site3 активируется, и Site2 и/или Site3 остаются доступны по этому пути. Проблема возникает, когда падает связь между Site1 и Главным офисом. Маршрут через WG-site3 активируется примерно на 15 секунд, затем маршрут через WG-Site1 занимает место в таблице маршрутизации на ~35 секунд, после чего снова возвращается маршрут через WG-Site3. Такая ситуация повторяется бесконечно, вызывая постоянное переключение и нерабочее состояние. Когда маршрут через WG-site3 становится активен, WG-site1 считает, что связь восстановлена, так как удалённая сторона Wireguard-соединения доступна через маршрут через WG-site3. Такого поведения при использовании IPsec для VPN не наблюдается. Я считаю, что причина в том, что интерфейсы Wireguard считаются активными (running) вне зависимости от наличия реально работающей сессии с пэром. Кажется, здесь должна быть рабочая схема решения, но пока её не удалось найти. Хочется продолжать использовать Wireguard, поскольку производительность лучше, особенно при плохом соединении, например, через сотовые модемы. Конфигурация приведена ниже. Заранее спасибо за советы и предложения.
Конфигурация роутера Главного офиса:
/interface wireguard add listen-port=13230 mtu=1420 name=WG-site1
/interface wireguard add listen-port=13229 mtu=1420 name=WG-site3
/interface wireguard peers add allowed-address=0.0.0.0/0 comment=site1 endpoint-port=13230 interface=WG-site1 persistent-keepalive=30s public-key=""
/interface wireguard peers add allowed-address=0.0.0.0/0 comment=site3 endpoint-port=13229 interface=WG-site3 persistent-keepalive=30s public-key=""
/routing ospf interface-template add area=backbone cost=10 disabled=no interfaces=WG-site1 networks=10.10.128.0/30 type=ptp
/routing ospf interface-template add area=backbone cost=500 disabled=no interfaces=WG-site3 networks=10.10.128.4/30 type=ptp
/ip address add address=10.10.128.1/30 interface=WG-site1 network=10.10.128.0/30
/ip address add address=10.10.128.5/30 interface=WG-site3 network=10.10.128.4/30
Конфигурация роутера Site1:
/interface wireguard add comment="WG to Main Office" listen-port=13230 mtu=1420 name=wireguard1
/interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address=192.168.10.1 endpoint-port=13230 interface=wireguard1 persistent-keepalive=30s public-key=""
/routing ospf interface-template add area=backbone-v2 cost=10 disabled=no interfaces=wireguard1 networks=10.10.128.0/30 type=ptp
/ip address add address=10.10.128.2/30 interface=wireguard1 network=10.10.128.0/30
Конфигурация роутера Site3:
/interface wireguard add comment="WG to Main Office" listen-port=13229 mtu=1420 name=wireguard1
/interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address=192.168.20.1 endpoint-port=13229 interface=wireguard1 persistent-keepalive=30s public-key=""
/routing ospf interface-template add area=backbone-v2 cost=500 disabled=no interfaces=wireguard1 networks=10.10.128.4/30 type=ptp
/ip address add address=10.10.128.6/30 interface=wireguard1 network=10.10.128.4/30
Конфигурация роутера Главного офиса:
/interface wireguard add listen-port=13230 mtu=1420 name=WG-site1
/interface wireguard add listen-port=13229 mtu=1420 name=WG-site3
/interface wireguard peers add allowed-address=0.0.0.0/0 comment=site1 endpoint-port=13230 interface=WG-site1 persistent-keepalive=30s public-key=""
/interface wireguard peers add allowed-address=0.0.0.0/0 comment=site3 endpoint-port=13229 interface=WG-site3 persistent-keepalive=30s public-key=""
/routing ospf interface-template add area=backbone cost=10 disabled=no interfaces=WG-site1 networks=10.10.128.0/30 type=ptp
/routing ospf interface-template add area=backbone cost=500 disabled=no interfaces=WG-site3 networks=10.10.128.4/30 type=ptp
/ip address add address=10.10.128.1/30 interface=WG-site1 network=10.10.128.0/30
/ip address add address=10.10.128.5/30 interface=WG-site3 network=10.10.128.4/30
Конфигурация роутера Site1:
/interface wireguard add comment="WG to Main Office" listen-port=13230 mtu=1420 name=wireguard1
/interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address=192.168.10.1 endpoint-port=13230 interface=wireguard1 persistent-keepalive=30s public-key=""
/routing ospf interface-template add area=backbone-v2 cost=10 disabled=no interfaces=wireguard1 networks=10.10.128.0/30 type=ptp
/ip address add address=10.10.128.2/30 interface=wireguard1 network=10.10.128.0/30
Конфигурация роутера Site3:
/interface wireguard add comment="WG to Main Office" listen-port=13229 mtu=1420 name=wireguard1
/interface wireguard peers add allowed-address=0.0.0.0/0 endpoint-address=192.168.20.1 endpoint-port=13229 interface=wireguard1 persistent-keepalive=30s public-key=""
/routing ospf interface-template add area=backbone-v2 cost=500 disabled=no interfaces=wireguard1 networks=10.10.128.4/30 type=ptp
/ip address add address=10.10.128.6/30 interface=wireguard1 network=10.10.128.4/30
