cameron, всегда пытаюсь рассказать как можно подробнее.
Ваше сообщение, меня натолкнуло на мысль поднятия туннеля. Т.е. сейчас есть сервер, есть клиент, логины пароли и процедура авторизации. И при падении клиент должен заново инициализировать соединение. Когда-то я настраивал GRE туннель между двумя Linux системами. В системе он определялся просто как интерфейс tun0. В настройках интерфейса указывались внешние адреса двух взаимодействующих серверов. И, как я понимаю, пакетам просто добавлялся заголовок и пакет передавался на внешний интерфейс второго сервера. Сервер приняв такой пакет снимал заголовок и маршрутизировал дальше. Меня не обрадовало отсутствие шифрования.
Если есть мысли по этому вопросу - прошу озвучить
По идее мне бы сначала найти вариант передачи трафика между сетями с минимальными количеством настроек на точках, а уже потом развивать идею динамической маршрутизации между этими точками (возможно у какого-то из провайдеров будут проблемы с одним направлением и выгоднее будет пустить трафик через транзитный офис)