Am folosit Strongswan pentru a configura un tunel IPSec între două unități. Tunelurile SA se instalează fără probleme, iar traficul poate trece prin conexiune.
Ori de câte ori dau ping peste tunel, cererea de ping este trimisă AMBĂ ca pachet ESP și ICMP. Răspunsul ping este întotdeauna doar un pachet ESP. Privind aceste pachete cu Wireshark, se pare că cererea ping trimite două pachete, unul încapsulat și unul nu. Răspunsul este doar un răspuns ecou ICMP încapsulat. Deci, fiecare ping are ca rezultat 3 pachete schimbate în loc de 2.
Unitățile pot comunica fără un tunel IPSec, dar aceeași problemă se întâmplă atunci când conexiunea IPSec este peste un tunel GRE.
Cum se diagnostichează/remediază această problemă?
Exemplu tcpdump
tcpdump -vv gazdă aaa.aaa.aaa.aaa
tcpdump: ascultare pe enp4s0, tip link EN10MB (Ethernet), dimensiunea capturii 262144 octeți
10:18:33.302502 IP (to 0x0, ttl 64, id 11718, offset 0, flags [DF], proto ESP (50), lungime 156)
unit1 > unit2: ESP(spi=0xc3e93e85,seq=0x1), lungime 136
10:18:33.302762 IP (to 0x0, ttl 64, id 5550, offset 0, flags [DF], proto ICMP (1), lungime 84)
unit1 > unit2: cerere de eco ICMP, id 30684, seq 1, lungime 64
10:18:33.303033 IP (to 0x0, ttl 64, id 1623, offset 0, steaguri [niciun], proto ESP (50), lungime 156)
unit2 > unit1: ESP(spi=0xcc947f6d,seq=0x1), lungime 136
Starea IPSec
starea ipsec
Asociații de securitate (1 în sus, 0 conexiuni):
unitate-la-unitate[2]: STABILIT cu 11 minute în urmă, aaa.aaaa.aaaa.aaa[aaaa.aaa.aaaa.aaa]...zzz.zzz.zzz.zzz[zzz.zzz.zzz.zzz]
unitate-la-unitate{1}: INSTALED, TUNNEL, reqid 1, ESP SPI-uri: cc947f6d_i c3e93e85_o
de la unitate la unitate{1}: aaa.aaa.aaaa.aaa/32 === zzz.zzz.zzz.zzz/32
/etc/ipsec.conf
configurare
#strictcrlpolicy=da
#uniqueids = nu
#nat_traversal=da
conn unitate la unitate
authby=secret
auto=pornire
keyexchange=ikev2
ike=aes256-sha2_256-modp1024!
stânga=aaaa.aaaa.aaaa.aaaa
dreapta=zzz.zzz.zzz.zzz
tip=tunel
esp=aes256-sha2_256