Preciso de ajuda, configurei um túnel IPsec strongswan com ESP e IKEv2, o túnel está UP e o remoto vê os pacotes chegando e os responde, mas meu servidor está ignorando? respostas.
O túnel está entre meu servidor Debian 11 contendo o IP 10.0.1.1 e o IP público 100.100.100.100 (sem NAT neste lado) e o controle remoto é um endpoint Checkpoint VPN.
Do meu lado, configurei um swanctl config assim (todos os IPs foram alterados):
cat /etc/swanctl.d/conf.d/test.conf
connections {
test {
local_addrs = 100.100.100.100
local {
id = 100.100.100.100
auth = psk
}
remote_addrs = 200.200.200.200
remote {
id = 200.200.200.200
}
children {
test_child {
local_ts = 10.0.1.0/24
remote_ts = 10.0.2.0/24
esp_proposals = aes256-sha256-modp2048
dpd_action = restart
start_action = start
ike {
proposals = aes256-sha256-modp2048
}
}
}
version = 2
dpd_delay = 300s
}
}
secrets {
ike-psk {
secret = "MY_PSK_KEY"
}
}
O controle remoto é configurado por outra pessoa em um endpoint Checkpoint VPN.
Eu posso ver que o túnel está funcionando, mas mostra 0 pacotes na parte "in" , apenas pacotes de saída
swanctl --list-sas
test: #1, ESTABLISHED, IKEv2, c7742fc57b157ccd_i* b75ae63221a8c6d7_r
local '100.100.100.100' @ 100.100.100.100[4500]
remote '200.200.200.200' @ 200.200.200.200[4500]
AES_CBC-256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
established 2326s ago, rekeying in 11899s
test_child: #1, reqid 1, INSTALLED, TUNNEL, ESP:AES_CBC-256/HMAC_SHA2_256_128
installed 2326s ago, rekeying in 916s, expires in 1634s
in cb90145c, 0 bytes, 0 packets
out 883097a1, 15600 bytes, 260 packets, 2s ago
local 10.0.1.0/24
remote 10.0.2.0/24
Do lado remoto, eles confirmam que estão vendo tráfego entrando e confirmam que estão respondendo (testo com nc 10.0.2.1 4444). Para tentar entender o que está acontecendo, capturei o tráfego com o tcpdump e consegui descriptografar tudo com o Wireshark. No Wireshark, os pacotes desencapsulados mostram meu "nc 10.0.2.1 4444" com um TCP SYN de 10.0.1.1 a 10.0.2.1, respostas remotas com um TCP SYN ACK de 10.0.2.1 a 10.0.1.1 mas nenhum TCP ACK é enviado de meu lado depois. Ele apenas começa novamente com TCP Retransmission TCP SYN de 10.0.1.1 a 10.0.2.1, em seguida, respostas remotas com um TCP SYN ACK de 10.0.2.1 a 10.0.1.1, ....
Com o firewall (UFW) desativado, um Destino ICMP inacessível (Porta inacessível) é enviado após o SYN-ACK recebido do IP público 100.100.100.100 do meu servidor (não do IP 10.0.1.1 local estranhamente (novamente vejo isso no desencapsulado e tráfego descriptografado))
No meu Firewall (UFW), as únicas regras são
ufw allow from 200.200.200.200 port 500,4500 proto udp to any
ufw allow from 10.0.2.0/24 to any
Não configurei nenhuma regra de NAT , pois acho que não preciso, pois é meu servidor que contém o IP 10.0.1.1 na sub-rede local_ts e o tráfego enviado está usando corretamente 10.0.1.1 como endereço de origem.
Então, minha pergunta é por que o SYN-ACK é ignorado, por que swanctl --list-sas mostra 0 pacotes quando posso vê-los no Wireshark?
Algumas informações adicionais
ip xfrm policy
src 10.0.1.0/24 dst 10.0.2.0/24
dir out priority 371839 ptype main
tmpl src 100.100.100.100 dst 200.200.200.200
proto esp spi 0x649d7f4d reqid 1 mode tunnel
src 10.0.2.0/24 dst 10.0.1.0/24
dir fwd priority 371839 ptype main
tmpl src 200.200.200.200 dst 100.100.100.100
proto esp reqid 1 mode tunnel
src 10.0.2.0/24 dst 10.0.1.0/24
dir in priority 371839 ptype main
tmpl src 200.200.200.200 dst 100.100.100.100
proto esp reqid 1 mode tunnel
ip route show table 220
10.0.2.0/24 via 100.100.100.255 dev enp33s0f0 proto static src 10.0.1.1
ip a
2: enp33s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ab:cd:ef:gh:ij:kl brd ff:ff:ff:ff:ff:ff
inet 100.100.100.100/24 brd 100.100.100.255 scope global dynamic enp33s0f0
valid_lft 81651sec preferred_lft 81651sec
inet 10.0.1.1/24 brd 10.0.1.255 scope global enp33s0f0:0
valid_lft forever preferred_lft forever