Всем привет.
Есть необходимость добавить дефолтный маршрут в таблицу маршрутизации.
ip route add default dev $IF_NAME table $TABLE_NUM
На определенных события роутер возвращает таблицу в исходное состояние.
Необходимо после таких событий добавлять маршрут заново, выполняя команду выше. Подскажите, пожалуйста, каким образом это можно сделать?
Я знаю, что для внесения пользовательских изменений в таблицу netfilter существует хук ndm/netfilter.d, но не смог найти информацию, что нужно использовать для модификаций routing table.
Попробовал привязать команду к netfilter.d. Однако во время выполнения скрипта в таблице все еще находится мой маршрут. Сразу после выполнения скрипта он удаляется какой-то системной очисткой.
Если прикрутить костыль в виде sleep 1, скрипт будет работать с состоянием таблицы уже после очистки и таким способом можно решить мою изначальную задачу. Но хотелось бы воспользоваться правильным способом без костыльных таймаутов.
Костыльное решение с наглядной демонстрацией проблемы:
/etc/ndm/netfilter.d/010-route.sh
Логи:
В примере скрипт пытается добавить роут, потом спит 1 секунду и пытается добавить его снова.
Роутер получает ACK, что триггерит очистку таблиц системой, вызывается хук netfilter.d.
По логам видно, что при первой попытке добавления роут еще существует в таблице. После sleep 1 система очистила таблицу и роут отсутствует.