Я протестировал keepalive ping, и он работает. Однако, если перезагрузить Mikrotik с одной стороны туннеля (сайт А) для имитации сбоя, то происходит вот что: пока сайт А не работает, сайт Б удаляет активную SA в соответствии с обнаружением пиринга по протоколу deed. Когда сайт А снова появляется, и после того, как keepalive ping запускается на сайте Б, туннель восстанавливается на сайте Б, но сайт А так и не поднимается. Если туннель установлен, а сайт Б перезагружен, сайт А удаляет SA в соответствии с обнаружением пиринга по протоколу deed, после чего сайт Б снова появляется и keepalive ping запускается, туннель восстанавливается на обеих сторонах. Я перепробовал все комбинации ‘send-initial-contact’ (выключен на одной стороне и не на другой, и наоборот, и включен / выключен на обеих сторонах одновременно), но поведение не меняется.
SITE A address=y.y.y.y/32 passive=no port=500 auth-method=pre-shared-key secret=“secret” generate-policy=no exchange-mode=main send-initial-contact=no nat-traversal=no proposal-check=obey hash-algorithm=md5 enc-algorithm=3des dh-group=modp1024 lifetime=8h lifebytes=0 dpd-interval=30s dpd-maximum-failures=1 src-address=src_ip src-port=any dst-address=dst_ip dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=x.x.x.x sa-dst-address=y.y.y.y proposal=default priority=0
SITE B address=x.x.x.x/32 passive=no port=500 auth-method=pre-shared-key secret=“secret” generate-policy=no exchange-mode=main send-initial-contact=no nat-traversal=no proposal-check=obey hash-algorithm=md5 enc-algorithm=3des dh-group=modp1024 lifetime=8h lifebytes=0 dpd-interval=30s dpd-maximum-failures=1 src-address=src_ip src-port=any dst-address=dst_ip dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=y.y.y.y sa-dst-address=x.x.x.x proposal=default priority=0
NAT на обеих сторонах не используется. Есть какие-нибудь идеи, почему это происходит?