1. Какая основная задача?
Нужно выполнять некоторые команды по событию. Конкретно добавлять/удалять правила iptables при поднятии/гашении интерфейса.
Основная задача такова:
Есть шлюз, две внутренние сети, два WAN. На шлюзе поднят openvpn в режиме клиента, нужно через шлюз выпустить определённый хост в openvpn.
На шлюзе три таблицы маршрутизации: WAN1; WAN2; WAN1\WAN2 (через nexthop). Таблица main без маршрута по умолчанию.
Общий вид WAN1 и WAN2
default via GW_WAN dev WAN proto bird
Таблицы WAN1\WAN2
default proto bird
nexthop via GW_WAN2 dev WAN2 weight 1
nexthop via GW_WAN1 dev WAN1 weight 3
Некоторая статическая маршрутизация на сети осуществляется iprule+fwmark+iptables+ipset.
В кратце так.
2. push "route ...."
?
Например мне нужно записать маршрут на стороне клиента в кастомную таблицу.
Как пример
ip route add default via $TUNNEL_REMOTE dev $TUNNEL_IFACE table openvpnpush route это на стороне сервера, route можно использовать на стороне клиента, в мане есть такое
--route network/IP [netmask] [gateway] [metric]
Эта штуковина добавляет маршут в таблицу main