У меня есть продукт VPN для macOS. При активации он создает виртуальный интерфейс, который отражает весь исходящий трафик для VPN. VPN зашифрует его и отправляет в туннельный шлюз. Затем шлюз декапсулирует пакет и направляет его в исходный пункт назначения.# after packets were encoded with the vpn protocol, re-send them through
# the physical interface
/sbin/route add -host -ifp en0 > /dev/null 2>&1
# remove the default rule for en0 and replace it with scoped rule
/sbin/route delete default -ifp en0 > /dev/null 2>&1
/sbin/route add default -ifscope en0 > /dev/null 2>&1
# create new rule for the virtual interface that will catch all packets
# for the vpn
/sbin/route add default -ifp utunX > /dev/null 2>&1
< /code>
Это работает в большинстве случаев. Тем не менее, существуют сценарии, в которых процесс VPN может потерпеть крах, перестать отвечать, или другой продукт VPN может изменить таблицу маршрутизации. Когда это произойдет, пакеты больше не могут проходить через правильный интерфейс. В идеале я хотел бы восстановить базовые правила для физического интерфейса (например, EN0), а затем повторно применить VPN-специфические правила на вершине. Существуют ли API, системные утилиты или лучшие практики в MacOS для восстановления исходной конфигурации маршрутизации перед повторным применением пользовательских VPN -маршрутов?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-changes