IPsec med flere subnett mister returtrafikk? Tell reqid-ene
Ensrettet trafikk gjennom en tunnel med flere subnett er som regel en forskjell i policy og reqid, ikke i kryptering eller ruting. Les xfrm-databasene i riktig rekkefølge.
Trafikk forlater det ene stedet og kommer aldri tilbake, begge gatewayene rapporterer en fullført forhandling, og det eneste sporet er en haug med utgående pakker uten svar. På et Linux-endepunkt er den vanlige årsaken ikke krypteringsstyrken, MTU-en eller en rutingtabell. Det er granulariteten i policy-oppføringene og nummeret som knytter hver policy til en sikkerhetsassosiasjon. Prosedyren nedenfor leser de to databasene før noe annet røres.
Del opp symptomet før du endrer noe
En ensrettet feil med en fullført IKE-forhandling avgrenser problemet til datastien. Enten passet den utgående policyen og svaret ble forkastet, eller så kom svaret aldri fram fordi den andre siden ikke hadde noe å sende det gjennom. Fra en applikasjon ser begge like ut, og xfrm-databasene skiller dem.
Ikke start med MTU-en. En feil MTU gir hakking og fragmenteringssymptomer, ikke en ren retningsdeling med stigende utgående tellere.
Les policy-databasen og state-databasen
Kryptering på Linux avgjøres av policy-oppføringer, så en passende policy, ikke en rute, er det som fører en pakke inn i tunnelen. Kjør ip xfrm policy for å se selectors, retning, prioritet og mal for hver oppføring, og ip xfrm state for å se de etablerte assosiasjonene med reqid-ene sine. Policyen og assosiasjonen knyttes sammen av den reqiden.
Se på alle tre retningene. Utgående og inngående dekker trafikk til og fra denne verten; forward-retningen betyr noe når verten ruter for andre. En manglende eller avvikende oppføring i én retning forklarer et ensrettet resultat uten noen kryptografisk feil.
Den klassiske asymmetrien: én reqid for flere subnett
En vanlig feil kommer fra en peer som installerer policyer for alle forhandlede subnett under én enkelt reqid, noe som skjer med racoons generate_policy require. Trafikken går da ut gjennom den assosiasjonen som ble opprettet sist, mens den andre siden beholder en egen assosiasjon per subnett. Svar ankommer på en assosiasjon der reqiden ikke peker på policyen som burde godta dem, og kjernen forkaster dem etter dekryptering.
Løsningen er en konfigurasjonsendring, ikke en brannmurregel: generate_policy unique; gir hver policy sin egen reqid, slik at peerens assosiasjoner per policy har passende partnere. Bruk det, forhandle på nytt, og tell de distinkte reqid-ene for subnettene du forventer før du erklærer suksess.
Hvis to subnett fortsatt deler en reqid mens den andre siden forventer to, har du funnet asymmetrien. Noter koblingen, for den er beviset på om den neste endringen rettet den eller bevarte den.
Selectors kommer fra forhandlingen, ikke fra konfigurasjonen din
De beskyttede områdene er det begge ender ble enige om, ikke det en av sidene ba om. En klient som tilbyr et vertspar mot et bredt eksternt område, får gatewayens innsnevrede versjon, og klienten kan ikke utvide den. Les de installerte selectors i stedet for dem i den lokale filen.
Når målet er det motsatte, å holde én destinasjon utenfor tunnelen, legg til en bypass-policy med et lavere prioritetsnummer slik at den vinner over den automatisk installerte oppføringen. En policy uten mal tillater klartekst, noe som gjør den til et bevisst unntak for en endringslogg i stedet for et feilsøkingstrinn.
Kontroller i denne rekkefølgen, og vit hvordan du ruller tilbake
List policyer for hvert subnett i begge retninger, inkludert forward hvis verten ruter. Tell distinkte reqids og bekreft én per policy på siden som forventer det. Sammenlign installerte selectors med de forhandlede. Les tellere per assosiasjon på nytt etter en rekey, for assosiasjonen du undersøkte kan allerede være borte. Kontroller ruter til slutt, siden en manglende rute til det eksterne subnettet gir et lignende ensrettet symptom med rene policytellere.
Før du endrer peeren, lagre den gjeldende utskriften fra begge xfrm-kommandoene. Hvis den nye innstillingen ikke gjenoppretter returretningen, er det å gjenopprette den utskriften en raskere tilbakerulling enn å bygge tunnelen på nytt fra hukommelsen, og det holder sammenligningen ærlig.