Databasisnavraag hang oor IPsec: UDP-herordening of TCP?
'n Navraag wat ná 'n skoon handdruk hang, wys na die binnekant van die tonnelroete. Drie voorwaardes beslis of jy die roete moet regmaak of na TCP op 443 moet terugval.
'n Navraag wat ná die TCP-handdruk hang, is nie 'n roeteprobleem nie. Roetefoute laat die handdruk misluk, so 'n sessie wat tot stand kom en dan stil word, wys na die binnekant van die roete: inspeksie, MTU, of die manier waarop die tonnel se UDP-pakkette aankom. Die besluit voor jou is of jy daardie roete moet regmaak of die tonnel na TCP moet skuif. Drie voorwaardes beslis dit, en nie een daarvan gaan oor die databasis nie.
Klassifiseer die staking voordat jy die tonnel blameer
Vier uitkomste lyk vir 'n gebruiker dieselfde, maar beteken vir 'n ingenieur heeltemal verskillende dinge.
| What the client sees | What it rules out |
|---|---|
| Connection refused | Nothing is listening on the address and port the client reached |
| Timeout before the handshake | A filter, a missing route, or the wrong address |
| Handshake completes, query hangs | The session exists, so look at inspection, MTU and packet order |
| Stalls that recover on retry | Often reordering, or a state table entry expiring |
Net die laaste twee rye regverdig tyd aan die tonnel. 'n Geweierde verbinding oor 'n VPN is gewoonlik die databasis wat net op loopback luister, wat 'n luisteraarprobleem is, en 'n tydsverloop voor die handdruk is 'n filter of 'n roete. Nie een verbeter deur die inkapseling te verander nie.
Skryf die klassifikasie eerste in die kaartjie. Dit is die goedkoopste stap en dit verklein die soekruimte die meeste.
Drie voorwaardes wat tussen UDP en TCP beslis
Ingekapselde IPsec-verkeer ry op UDP, en UDP gee die roete vryheid om te herorden en te laat val sonder om dit vir iemand te sê. Wanneer herordening pakkette buite die tonnel se venster teen herspeling stoot, word hulle stilweg weggegooi en die binneste TCP-sessie wag bloot. Dit is die meganisme agter 'n handdruk wat slaag en 'n navraag wat nooit terugkom nie.
Om die roete reg te maak of na TCP terug te val, hang van drie dinge af. Eerste, is daar werklike pakketverlies op die roete, of net herordening? Tweede, kan jy verander waar inspeksie gebeur, of hierdie tonnel van die komponent wat herorden uitsluit? Derde, is die werklaag sensitief vir die stakingspatroon, byvoorbeeld baie gemultiplekseerde sessies wat een skakel deel?
As die eerste antwoord verlies is en die tweede nee,is TCP op 443 die pragmatiese terugval. As die tweede antwoord ja is, maak die roete reg en hou UDP.
Lees die brandmuur se rekord, nie die toepassing se fout nie
Die toepassing rapporteer 'n tydsverloop, wat jou niks oor die oorsaak sê nie. Die brandmuur se eie log is waar die weggooi of blokkade verskyn, so filter op die databasis- en toepassingsadresse en soek na verwerpings sowel as aanvaardings.Blades vir bedreigingsvoorkoming kan pakkette weggooi sonder om 'n fout op toepassingsvlak te veroorsaak, wat presies die vorm van 'n navraag is wat hang. Stilte in die log is ook data: dit wys na iets wat nie log nie, soos herordening.
Kyk ook na die cluster. 'n Verkeerd opgestelde cluster kan 'n sessie in die toestandtabel op een lid hou terwyl die pakkette 'n ander lid se roete volg, so antwoorde kom waar geen toestand bestaan nie. Daardie stakings lyk toevallig en korreleer nie met las nie.
Vergelyk beide kante voordat jy iets verander, en vergelyk aankomsorde eerder as pakkettellings:
tcpdump -ni any udp port 4500 -w /tmp/encap.pcap
tcpdump -ni any tcp port 5432 -w /tmp/inner.pcapWat TCP op 443 jou werklik kos
Om die tonnel na TCP te skuif, verwyder die herordening-simptoom, want die middlebox sien nou 'n geordende stroom. Dit skep ook TCP-oor-TCP. Die buitenste verbinding herstuur wat die binneste verbinding reeds herstuur het, en 'n enkele verlies kan elke gemultiplekseerde sessie gelyktydig laat staking. Op 'n skoon roete is dit onsigbaar. Op 'n verliesryke een is die kuur erger as die simptoom.
Die ruil is aanvaarbaar wanneer die alternatief geen verbinding is nie, en dit moet as 'n uitsondering met 'n eienaar gedokumenteer word eerder as om as normaal opgeneem te word.
Teken die transport, die poort, 'n voorbeeldnavraag en die gemeet resultaat op, plus die datum. Sonder daardie rekord herhaal die volgende ingenieur die eksperiment, en die uitsondering word stilweg die argitektuur.
Hou die besluit hersienbaar
'n Roetediagnose verouder vinnig. Die middlebox word vervang, die blade-konfigurasie verander, die skakel word opgradeer, en die rede vir TCP op 443 verdwyn terwyl die konfigurasie bly staan. Sit 'n hersieningsdatum op die uitsondering en noem die voorwaarde wat jou na UDP sou laat terugkeer.
Toets beide transports met 'n klein navraag en met 'n groot resultaatstel. Herordening wys as grootteafhanklike stakings, terwyl 'n luisteraarfout albei groottes ewe veel stop.