В общем, он правильно сомневается: bgpd или ospfd отслеживают события
"link up/down" гораздо надёжнее, чем самопальные скрипты. Хотя бы потому,
что между двумя poll-ами вида "wg show" можно пропустить события
link down-up, скрипт этого не заметит, а вот ядро маршрутик-то через
могнувший дивайс аккуратно удалит. С push-ами через netlink таких пропусков
не будет. У quagga с этим всё вроде нормально, про bird не скажу, но
думаю что у него аналогично.
Мне что-то в голову не приходит, каким образом моя задача может быть решена с помощью ospfd.
Давайте определим задачу, если вы уже тут собрались придумать решение за рамками очерченной в исходном вопросе проблемы.
Задача: в некоторой сети за рубежом необходимо сделать так, что трафик на российские IP заворачивается в туннель, который выныривает на сервере внутри России, и чтобы всё это не зависело от настроек хостов в этой сети. Для чего? Для того, чтобы не страдал user experience в отношении российских сервисов анально отгородившихся от остального мира - это как многие государственные сервисы, так и коммерческие (например, Авито). Почему не заворачивать весь трафик? Out of scope. Так надо сделать.
Сейчас задача решается следующим способом: между роутером в этой сети и серваком в РФ поднят wireguard-туннель. Пакеты на роутере классифицируются по destination ip с помощью geoip-модуля iptables или с помощью nftables, и пакетам присваивается соответствующий fwmark. Далее, работает policy routing по этому fwmark, который заворачивает весь трафик, кроме пакетов на адрес российского сервака (он, очевидно, тоже получает такой fwmark), в туннель.
Проблема: если туннель ложится (причины не обсуждаем сейчас), то отваливается весь рунет. То есть нужна некоторая активная сущность, которая будет отключать классификатор пакетов, либо менять правила policy routing. Я не совсем понимаю, как эту задачу можно решить с помощью ospfd. То есть, понятно, что можно анонсировать со стороны российского сервера в туннель маршруты на весь рунет, но как это сделать с т.з. конфигурации - я хз.