Mijn vraag/probleemomschrijving:
Op kantoor hebben we drie site-to-site VPN verbindingen naar verschillende endpoints. Eentje is een ipsec/IKEv1 verbinding met een Sophos UTM. Dat blijft zonder problemen draaien. De andere twee zijn ipsec/IKEv2 naar Ubuntu 16.04 met Strongswan 5.3.5. Deze hadden eerst het probleem dat elk uur de verbinding opnieuw werd opgezet, wat erg vervelend is als je met SSH verbinding maakt. Die valt dan ook uit. Dat heb ik met wat aanpassen van de configuratie (matchen van key lifetimes) opgelost zodat de phase 2 rekey correct werkt en geen uitval van de hele verbinding veroorzaakt.
Echter is nu het probleem dat zodra de tunnel 24 uur actief is, deze alsnog helemaal opnieuw wordt opgebouwd. Het ziet er dus naar uit dat de rekey van phase 1 niet goed gaat. Dit zou an sich niet zo'n probleem zijn, al zou ik wel graag een tunnel willen die langer dan 1 dag up blijft. Maar na een paar dagen is het opeens niet meer mogelijk om verkeer door de tunnel te sturen. Dit gebeurt wanneer de tunnel opnieuw wordt opgezet, maar niet altijd als de 24 uur van de phase 1 key lifetime is bereikt. Ik heb het ook enkele uren erna zien gebeuren (bijvoorbeeld om 8:00 wordt de tunnel volledig opnieuw opgezet en om 11:00 dezelfde ochtend nogmaals, maar dan zonder verkeer mogelijk).
Het maakt dan niet uit of ik de tunnel handmatig opnieuw opzet door Strongswan te herstarten. De verbinding is er, het ziet er goed uit, maar er komt gewoon geen verkeer doorheen. Om het weer te laten werken, moet de hele Cisco ASA herstart worden. Dat is natuurlijk verre van ideaal, want het hele bedrijf ligt dan plat totdat deze weer online is.
Relevante software en hardware die ik gebruik:
Cisco ASA 5506 met software versie 9.6(1)
Ubuntu 16.04 met Strongswan 5.3.5. Ik heb ook 5.5.1 via een PPA geprobeerd, maar maakt geen verschil.
Wat ik al gevonden of geprobeerd heb:
Een goed beheerder zoekt natuurlijk eerst zelf. Ik had dus al wat gevonden om de tunnel langer online te houden en dat heeft ook een tijd gewerkt. Tot recentelijk dus.
In eerste instantie ben ik gaan testen met Packet-tracer om te kijken of er verkeer naar de andere kant komt. Eerst had ik het resultaat dat bij fase 8 of 9, wanneer het de tunnel in moet met type VPN, subtype ENCRYPT, het verkeer gedropt werd. De laatste regel in de access-lists werd geraakt. Dat was al heel vreemd, aangezien hetzelfde via de andere tunnel die nog wel verkeer door liet een ander resultaat gaf.
Nu is het zo dat alles groen is en verkeer lijkt door de VPN te gaan. Maar een ping, SSH of wat dan ook komt gewoon niet aan. En ik kan niet achterhalen waar het heen gaat.
Google zoeken op o.a. 'cisco asa ipsec tunnel up but no traffic' en 'cisco asa drops traffic vpn' geven veel resultaten, maar geen van de resultaten geven een oplossing die bij ons hier van toepassing is. Bijvoorbeeld https://community.cisco.c...p-no-traffic/td-p/2299125 heeft het over dubbele en overbodige regels in de access-list. Die hebben we niet, dus daar ligt het helaas niet aan.
Een ander resultaat brengt mij bij https://networkengineerin...p-but-not-passing-traffic. Het antwoord dat wordt gegeven klinkt erg logisch en ik zie bij de uitvoer van het commando ook meerdere in en out regels. Echter zie ik er hoe dan ook meer dan 1, ongeacht of er verkeer mogelijk is of niet. Dat lijkt dus ook niet de boosdoener te zijn.
Om nog volledig te zijn, de configuratie voor de VPN voor zover ik die kan geven (gevoelige zaken weggehaald natuurlijk).
Strongswan config
Edit:
Logging van Strongswan vanaf uitval toegevoegd.
Op kantoor hebben we drie site-to-site VPN verbindingen naar verschillende endpoints. Eentje is een ipsec/IKEv1 verbinding met een Sophos UTM. Dat blijft zonder problemen draaien. De andere twee zijn ipsec/IKEv2 naar Ubuntu 16.04 met Strongswan 5.3.5. Deze hadden eerst het probleem dat elk uur de verbinding opnieuw werd opgezet, wat erg vervelend is als je met SSH verbinding maakt. Die valt dan ook uit. Dat heb ik met wat aanpassen van de configuratie (matchen van key lifetimes) opgelost zodat de phase 2 rekey correct werkt en geen uitval van de hele verbinding veroorzaakt.
Echter is nu het probleem dat zodra de tunnel 24 uur actief is, deze alsnog helemaal opnieuw wordt opgebouwd. Het ziet er dus naar uit dat de rekey van phase 1 niet goed gaat. Dit zou an sich niet zo'n probleem zijn, al zou ik wel graag een tunnel willen die langer dan 1 dag up blijft. Maar na een paar dagen is het opeens niet meer mogelijk om verkeer door de tunnel te sturen. Dit gebeurt wanneer de tunnel opnieuw wordt opgezet, maar niet altijd als de 24 uur van de phase 1 key lifetime is bereikt. Ik heb het ook enkele uren erna zien gebeuren (bijvoorbeeld om 8:00 wordt de tunnel volledig opnieuw opgezet en om 11:00 dezelfde ochtend nogmaals, maar dan zonder verkeer mogelijk).
Het maakt dan niet uit of ik de tunnel handmatig opnieuw opzet door Strongswan te herstarten. De verbinding is er, het ziet er goed uit, maar er komt gewoon geen verkeer doorheen. Om het weer te laten werken, moet de hele Cisco ASA herstart worden. Dat is natuurlijk verre van ideaal, want het hele bedrijf ligt dan plat totdat deze weer online is.
Relevante software en hardware die ik gebruik:
Cisco ASA 5506 met software versie 9.6(1)
Ubuntu 16.04 met Strongswan 5.3.5. Ik heb ook 5.5.1 via een PPA geprobeerd, maar maakt geen verschil.
Wat ik al gevonden of geprobeerd heb:
Een goed beheerder zoekt natuurlijk eerst zelf. Ik had dus al wat gevonden om de tunnel langer online te houden en dat heeft ook een tijd gewerkt. Tot recentelijk dus.
In eerste instantie ben ik gaan testen met Packet-tracer om te kijken of er verkeer naar de andere kant komt. Eerst had ik het resultaat dat bij fase 8 of 9, wanneer het de tunnel in moet met type VPN, subtype ENCRYPT, het verkeer gedropt werd. De laatste regel in de access-lists werd geraakt. Dat was al heel vreemd, aangezien hetzelfde via de andere tunnel die nog wel verkeer door liet een ander resultaat gaf.
Nu is het zo dat alles groen is en verkeer lijkt door de VPN te gaan. Maar een ping, SSH of wat dan ook komt gewoon niet aan. En ik kan niet achterhalen waar het heen gaat.
Google zoeken op o.a. 'cisco asa ipsec tunnel up but no traffic' en 'cisco asa drops traffic vpn' geven veel resultaten, maar geen van de resultaten geven een oplossing die bij ons hier van toepassing is. Bijvoorbeeld https://community.cisco.c...p-no-traffic/td-p/2299125 heeft het over dubbele en overbodige regels in de access-list. Die hebben we niet, dus daar ligt het helaas niet aan.
Een ander resultaat brengt mij bij https://networkengineerin...p-but-not-passing-traffic. Het antwoord dat wordt gegeven klinkt erg logisch en ik zie bij de uitvoer van het commando ook meerdere in en out regels. Echter zie ik er hoe dan ook meer dan 1, ongeacht of er verkeer mogelijk is of niet. Dat lijkt dus ook niet de boosdoener te zijn.
Om nog volledig te zijn, de configuratie voor de VPN voor zover ik die kan geven (gevoelige zaken weggehaald natuurlijk).
Strongswan config
Cisco ASAcode:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn kantoor authby=secret left=%defaultroute leftid=<extern ip> leftsubnet=<interne subnet> right=<kantoor ip> rightid=<kantoor ip> rightsubnet=<kantoor subnet> ike=aes256-sha-modp1536 esp=aes256-sha2_256! keyexchange=ikev2 keyingtries=%forever ikelifetime=24h # Option below is equivalent to salifetime and keylife lifetime=1h dpddelay=30 dpdtimeout=120 dpdaction=restart auto=start
Dit is wat ik in het log van Strongswan zie zodra het phase 1 rekey uitvoert. Wat mij opvalt is dat de Cisco geen antwoord lijkt te geven, getuige de 'retransmit' meldingen. Ik zie die alleen als er geen verkeer over de tunnel kan.Crypto MapsIKEv2 Policies
- IKEv2 IPsec Proposal: AES256_SHA256
- Enable NAT-T
- SA Lifetime: 1h
- Traffic Selection: Action: Protect; Source Criteria: <kantoor subnet>, Destination Criteria: <server intern subnet>
Er zijn meer policies gedefinieerd, allemaal standaard eigenlijk met lagere encryptiegrootte, zoals 192-sha, 3des, etc. Beetje onzinnig dat ook op te schrijven.
- Encryption: aes-256
- Integrity Hash: sha256, sha
- PRF Hash: sha256, sha
- Dh-H Group: 2; 5
- Lifetime (seconds): 86400 (1 dag)
Connection Profile
IKE v2 SettingsNAT Rules
- Authentication: PSK
- Encryption Algoritms:
- IKE Policy: aes-256-sha256&sha-sha256&sha, aes-192-sha-sha, aes-sha-sha, 3des-sha-sha, des-sha-sha
- IPsec Proposal: AES256_SHA256
- NAT Exempt: Exempt ASA side host/network from address translation: <interne range>
En nog een paar meer rules, maar het gaat er even om dat we wel NAT rules hebben voor het andere subnet.
- Match Criteria: Original Packet
- Source intf: <kantoor intern interfaces groep>
- Dest Intf: <WAN interface>
- Source: <kantoor subnet>
- Destination: <server interne subnet>
- Service: any
- Action: Translated Packet
- Source, Destination, Service: -- Original --
- Options: No Proxy ARP, Route Lookup
Ik denk dat ik hiermee alles heb. Mocht ik iets missen, zeg 't dan vul ik 't aan.code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 charon: 08[KNL] creating rekey job for CHILD_SA ESP/0xe730ea05/<kantoor ip> charon: 08[IKE] establishing CHILD_SA <kantoor vpn>{5} charon: 08[IKE] establishing CHILD_SA <kantoor vpn>{5} charon: 08[ENC] generating CREATE_CHILD_SA request 62 [ N(REKEY_SA) SA No TSi TSr ] charon: 08[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (204 bytes) charon: 10[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (236 bytes) charon: 10[ENC] parsed CREATE_CHILD_SA response 62 [ SA No TSi TSr ] charon: 10[IKE] CHILD_SA <kantoor vpn>{129} established with SPIs cb99af21_i 242cb60e_o and TS <server interne subnet> === <kantoor subnet> charon: 10[IKE] CHILD_SA <kantoor vpn>{129} established with SPIs cb99af21_i 242cb60e_o and TS <server interne subnet> === <kantoor subnet> charon: 10[IKE] closing CHILD_SA <kantoor vpn>{128} with SPIs c2cdaa5d_i (1238316 bytes) e730ea05_o (1450903 bytes) and TS <server interne subnet> === <kantoor subnet> charon: 10[IKE] closing CHILD_SA <kantoor vpn>{128} with SPIs c2cdaa5d_i (1238316 bytes) e730ea05_o (1450903 bytes) and TS <server interne subnet> === <kantoor subnet> charon: 10[IKE] sending DELETE for ESP CHILD_SA with SPI c2cdaa5d charon: 10[ENC] generating INFORMATIONAL request 63 [ D ] charon: 10[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 09[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 09[ENC] parsed INFORMATIONAL request 0 [ D ] charon: 09[IKE] received DELETE for ESP CHILD_SA with SPI e730ea05 charon: 09[IKE] CHILD_SA closed charon: 09[ENC] generating INFORMATIONAL response 0 [ ] charon: 09[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 14[IKE] retransmit 1 of request with message ID 63 charon: 14[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 04[IKE] retransmit 2 of request with message ID 63 charon: 04[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 13[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 13[ENC] parsed INFORMATIONAL request 1 [ ] charon: 13[ENC] generating INFORMATIONAL response 1 [ ] charon: 13[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 05[IKE] retransmit 3 of request with message ID 63 charon: 05[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 15[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 15[ENC] parsed INFORMATIONAL request 2 [ ] charon: 15[ENC] generating INFORMATIONAL response 2 [ ] charon: 15[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 07[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 07[ENC] parsed INFORMATIONAL request 3 [ ] charon: 07[ENC] generating INFORMATIONAL response 3 [ ] charon: 07[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 11[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 11[ENC] parsed INFORMATIONAL request 4 [ ] charon: 11[ENC] generating INFORMATIONAL response 4 [ ] charon: 11[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 10[IKE] retransmit 4 of request with message ID 63 charon: 10[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 09[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 09[ENC] parsed INFORMATIONAL request 5 [ ] charon: 09[ENC] generating INFORMATIONAL response 5 [ ] charon: 09[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 12[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 12[ENC] parsed INFORMATIONAL request 6 [ ] charon: 12[ENC] generating INFORMATIONAL response 6 [ ] charon: 12[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 06[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 06[ENC] parsed INFORMATIONAL request 7 [ ] charon: 06[ENC] generating INFORMATIONAL response 7 [ ] charon: 06[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 04[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 04[ENC] parsed INFORMATIONAL request 8 [ ] charon: 04[ENC] generating INFORMATIONAL response 8 [ ] charon: 04[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 13[IKE] retransmit 5 of request with message ID 63 charon: 13[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 05[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 05[ENC] parsed INFORMATIONAL request 9 [ ] charon: 05[ENC] generating INFORMATIONAL response 9 [ ] charon: 05[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 07[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 07[ENC] parsed INFORMATIONAL request 10 [ ] charon: 07[ENC] generating INFORMATIONAL response 10 [ ] charon: 07[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 08[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 08[ENC] parsed INFORMATIONAL request 11 [ ] charon: 08[ENC] generating INFORMATIONAL response 11 [ ] charon: 08[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 11[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 11[ENC] parsed INFORMATIONAL request 12 [ ] charon: 11[ENC] generating INFORMATIONAL response 12 [ ] charon: 11[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 09[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 09[ENC] parsed INFORMATIONAL request 13 [ ] charon: 09[ENC] generating INFORMATIONAL response 13 [ ] charon: 09[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 12[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 12[ENC] parsed INFORMATIONAL request 14 [ ] charon: 12[ENC] generating INFORMATIONAL response 14 [ ] charon: 12[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 14[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 14[ENC] parsed INFORMATIONAL request 15 [ ] charon: 14[ENC] generating INFORMATIONAL response 15 [ ] charon: 14[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 04[IKE] giving up after 5 retransmits charon: 04[IKE] restarting CHILD_SA <kantoor vpn> charon: 04[IKE] initiating IKE_SA <kantoor vpn>[6] to <kantoor ip> charon: 04[IKE] initiating IKE_SA <kantoor vpn>[6] to <kantoor ip> charon: 04[ENC] generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(HASH_ALG) ] charon: 04[NET] sending packet: from <server ip>[500] to <kantoor ip>[500] (596 bytes) charon: 04[IKE] restarting CHILD_SA <kantoor vpn> charon: 05[NET] received packet: from <kantoor ip>[500] to <server ip>[500] (567 bytes) charon: 05[ENC] parsed IKE_SA_INIT response 0 [ SA KE No V V N(NATD_S_IP) N(NATD_D_IP) CERTREQ ] charon: 05[IKE] received Cisco Delete Reason vendor ID charon: 05[IKE] received Cisco Copyright (c) 2009 vendor ID charon: 05[IKE] received 4 cert requests for an unknown ca charon: 05[IKE] authentication of '<server ip>' (myself) with pre-shared key charon: 05[IKE] establishing CHILD_SA <kantoor vpn>{5} charon: 05[IKE] establishing CHILD_SA <kantoor vpn>{5} charon: 05[ENC] generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) IDr AUTH SA TSi TSr N(MOBIKE_SUP) N(ADD_4_ADDR) N(EAP_ONLY) ] charon: 05[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (252 bytes) charon: 15[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (236 bytes) charon: 15[ENC] parsed IKE_AUTH response 1 [ V IDr AUTH SA TSi TSr N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) ] charon: 15[IKE] authentication of '<kantoor ip>' with pre-shared key successful charon: 15[IKE] IKE_SA <kantoor vpn>[6] established between <server ip>[<server ip>]...<kantoor ip>[<kantoor ip>] charon: 15[IKE] IKE_SA <kantoor vpn>[6] established between <server ip>[<server ip>]...<kantoor ip>[<kantoor ip>] charon: 15[IKE] scheduling reauthentication in 85569s charon: 15[IKE] maximum IKE_SA lifetime 86109s charon: 15[IKE] received ESP_TFC_PADDING_NOT_SUPPORTED, not using ESPv3 TFC padding charon: 15[IKE] CHILD_SA <kantoor vpn>{130} established with SPIs cfc0afa9_i 8d188c56_o and TS <server interne subnet> === <kantoor subnet> charon: 15[IKE] CHILD_SA <kantoor vpn>{130} established with SPIs cfc0afa9_i 8d188c56_o and TS <server interne subnet> === <kantoor subnet> charon: 15[IKE] establishing CHILD_SA <kantoor vpn>{5} charon: 15[IKE] establishing CHILD_SA <kantoor vpn>{5} charon: 15[ENC] generating CREATE_CHILD_SA request 2 [ SA No TSi TSr ] charon: 15[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (204 bytes) charon: 08[NET] received packet: from <kantoor ip>[4500] to <server ip>[4500] (76 bytes) charon: 08[ENC] parsed INFORMATIONAL request 0 [ ] charon: 08[ENC] generating INFORMATIONAL response 0 [ ] charon: 08[NET] sending packet: from <server ip>[4500] to <kantoor ip>[4500] (76 bytes) charon: 09[IKE] retransmit 1 of request with message ID 2
Edit:
Logging van Strongswan vanaf uitval toegevoegd.
[ Voor 63% gewijzigd door Hero of Time op 07-02-2019 13:13 ]
Commandline FTW | Tweakt met mate