Туннель Strongswan IPSec не может быть восстановлен должным образом. Почему DPD продолжается?
У меня есть туннель IPSec между двумя машинами, одна из которых (инициатор) имеет два интерфейса (data0 и data1). Интерфейсы data0 имеют метрику 100, а data1 - 70, поэтому при первоначальном создании соединения используются интерфейсы data1, поскольку он имеет лучшую метрику.
После того, как соединение установлено, и я снимаю ip интерфейса data1, соединение должно быть восстановлено с новым CHILD_SA и новым виртуальным ip, используя интерфейс data0.
Но этого не происходит. Что происходит, так это то, что интерфейс data0 пытается сохранить работоспособность первого CHILD_SA, бесконечно отправляя запросы DPD.
Как я могу заставить CHILD_SA закрыться и создать новый, где используется интерфейс data0?
data0 - 10.3.219.27/16
data1 - 10.3.219.28/16
initiator's vti0 ip: 173.164.0.1
responder's vti0 ip: 192.168.169.1
Конфигурация инициатора DPD и повторная настройка конфига:
version=1
keyingtries=0
aggressive=no
dpd_delay=10
dpd_timeout=50
policies=yes
dpd_action=restart
close_action=start
Journalctl входит в код вставки: https://pastecode.xyz/view/3f89dfdd
ipsec statusall перед тем, как отключить интерфейс:
Listening IP addresses:
10.3.219.27
10.3.219.28
173.164.0.1
Connections:
conn-vti0: 0.0.0.0...94.26.49.38 IKEv1, dpddelay=10s
conn-vti0: local: [tve53] uses pre-shared key authentication
conn-vti0: local: [loc-2] uses XAuth authentication: any with XAuth identity 'config4'
conn-vti0: remote: [fortinetconfig4] uses pre-shared key authentication
ch_vti0: child: dynamic === 192.168.169.0/24 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 connecting):
conn-vti0[80]: ESTABLISHED 15 minutes ago, 10.3.219.28[tve53]...94.26.49.38[fortinetconfig4]
conn-vti0[80]: IKEv1 SPIs: ac8dfb7c5f24676a_i* 1fc2d2d23231b5ed_r, rekeying in 3 hours
conn-vti0[80]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_4096
ch_vti0{51}: INSTALLED, TUNNEL, reqid 32, ESP in UDP SPIs: c44c6569_i bda13b22_o
ch_vti0{51}: AES_CBC_128/HMAC_SHA2_256_128/ECP_384_BP, 4276555 bytes_i (9500 pkts, 0s ago), 1913489 bytes_o (8751 pkts, 0s ago), rekeying in 39 minutes
ch_vti0{51}: 173.164.0.1/32 === 192.168.169.0/24
ipsec statusall после того, как я это сделаю:
Listening IP addresses:
10.3.219.27
173.164.0.1
Connections:
conn-vti0: 0.0.0.0...94.26.49.38 IKEv1, dpddelay=10s
conn-vti0: local: [tve53] uses pre-shared key authentication
conn-vti0: local: [loc-2] uses XAuth authentication: any with XAuth identity 'config4'
conn-vti0: remote: [fortinetconfig4] uses pre-shared key authentication
ch_vti0: child: dynamic === 192.168.169.0/24 TUNNEL, dpdaction=restart
Security Associations (2 up, 0 connecting):
conn-vti0[81]: ESTABLISHED 8 seconds ago, 10.3.219.27[tve53]...94.26.49.38[fortinetconfig4]
conn-vti0[81]: IKEv1 SPIs: 8425e35cef48f8b5_i* 490188becb87d6ad_r, rekeying in 3 hours
conn-vti0[81]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_4096
ch_vti0{51}: INSTALLED, TUNNEL, reqid 32, ESP in UDP SPIs: c44c6569_i bda13b22_o
ch_vti0{51}: AES_CBC_128/HMAC_SHA2_256_128/ECP_384_BP, 7958755 bytes_i (17317 pkts, 9s ago), 3480780 bytes_o (15870 pkts, 9s ago), rekeying in 24 minutes
ch_vti0{51}: 173.164.0.1/32 === 192.168.169.0/24
conn-vti0[80]: REKEYING, 10.3.219.27[tve53]...94.26.49.38[fortinetconfig4]
conn-vti0[80]: IKEv1 SPIs: ac8dfb7c5f24676a_i* 1fc2d2d23231b5ed_r
conn-vti0[80]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_4096
1 ответ
Если вы хотите реализовать аварийное переключение на соединениях WAN, вам нужно настроить интерфейсы с правильной метрикой / приоритетом, а затем вручную переключаться или реализовать автоматическое переключение ping/http connect... но также подходящие статические маршруты.
Когда интерфейс data1 выходит из строя, IP-адреса ipv4 и ipv6 должны меняться / обновляться:
ip a (newer tool)
ifconfig -a (older tool)
и маршрут тоже должен измениться, чтобы трафик использовал data0. Проверить с:
ip r (using newer ip tool)
route -n (older command)
В частности, проверьте наличие любых оставшихся IP-адресов, например IP-адреса ipv6, даже если IP-адрес ipv4 исчез.