Ну скажи, какие настройки нужно сделать на OpenVPN, чтобы достичь аналогичного эффекта, я просто покажу, что это не сработает.
Ты знаешь как происходит адрес Билдинг? Например в линуксе? И понимаешь, чтобы состоялся tcp handshake, нужен unique tuple4 (local ip:port foreign ip:port). И что, например в линуксе, сокет не связан напрямую состоянием интерфейса? И я технически не понимаю, зачем какому либо клиенту закрывать сокет если туннель/интерфейс упал (разве что для bgp клиентов, и подобных случаев). Я так глубоко не копал, либо все остальные клиенты закрыают сокет, когда падает туннель, а вайергард этого не делает. Либо что-то ты делаешь не так. У TCP есть несколько таймеров: RTO, persistent, keepalive, time wait. А нашем случае интересуют два таймера: RTO и keepalive. По дефолту в линуксе, keepalive составляет два часа (вроде в рфс описаны теже два часа, но тут память может подводить). Т.е. если у нас сотоялся three way handshake, только через два часа (по дефолту, ещё раз), если нет никакой активности между клиентом и сервером, сервер отправит keepalive пакет, чтобы проверить, что клиент ещё жив и сессию можно оставить открытой, если клиент не ответил - закроет сокет. RTO чуть интереснее, так тут все зависит от настройки TCC. В линуксе по дефолту используется cubic. В этом случае, если клиент или сервер не получат ack на отправленные пакеты сработает таймер RTO, и попробуют отпраить пакет ещё раз, точные цифры не помню, но после 3 неудачных попыток, этот таймер увеличивается, и будут ещё 15 попыток доставить пакет перед тем как сокет закроется (а это где-то 30 минут) . Т.е. если клиент, при падения интерфейса, не закроет сокет, и айпи адрес на интерфейсе не поменяется, я не вижу технических причин (кроме как пакет попадёт на другой стейтфул фаервол, где небыло syn для данной сессии) чтобы сессия разорвалась, при флапе/переключении провайдера