Keepalive is nie 'n herverbinding nie: kies volgens die fout wat jy het
Een pakkie hou 'n kartering lewendig; 'n herverbinding bou die verhouding weer op. Pas die meganisme by die fout aan en verifieer dan met 'n werklike versoek.
Keepalives en herverbindings word in een asem opgestel en los verskillende probleme op, daarom maak die instel van die een selde die ander reg. 'n Keepalive stuur klein verkeer om 'n staatinskrywing lewendig te hou of om te merk dat 'n eweknie opgehou antwoord het. 'n Herverbinding breek af wat stukkend is en bou die verhouding weer op, insluitend sleutels, adresse en roetes. Kies die meganisme wat by die fout pas, nie dié waarvan jy reeds die knop ken nie. Twee vrae besluit dit: is die pad dood, of vergeet iets tussen die eweknieë dit?
Wanneer die kartering die probleem is
'n Tonnel wat eers ná minute van stilte sterf, verloor gewoonlik 'n vertaalinskrywing eerder as 'n eweknie. WireGuard se PersistentKeepalive bestaan vir NAT- en vuurmuurstaat, en die projek se eie notas stel dit so voor eerder as 'n gesondheidskontrole. 'n Interval van 'n paar tien sekondes hou 'n inskrywing warm, terwyl 'n pakkie elke sekonde 'n batterybesluit is en nie 'n betroubaarheidsbesluit nie. OpenVPN kom op dieselfde plek uit deur ping en ping-restart , wat eers die stilte raaksien en dan daarop reageer.
Daardie instellings is ook nie tussen protokolle uitruilbaar nie. 'n IKEv2-beleid vir 'n dooie eweknie, 'n OpenVPN-pingtydhouer en 'n WireGuard-keepalive beantwoord dieselfde vraag met drie verskillende sintakse en drie verskillende verstekke, so om 'n nommer tussen hulle te kopieer is raaiwerk in die klere van instel.
Wanneer die verhouding weg is
As die eweknie van adres verander, die geloofsbrief verval of die ander kant herbegin, is klein pakkies nie die herstel nie. Die herverbinding moet staat herbou : kry 'n adres, herinstalleer roetes, heronderhandel sleutels en in sommige ontplooiings herverifieer 'n gebruiker.
Kliënte wat onbewaak herverbind, hou 'n sertifikaat of 'n gestoorde geheim. 'n Kliënt wat 'n mens sou vra, misluk juis wanneer niemand teenwoordig is nie, en dit is die scenario waar die herverbinding saak gemaak het. Dit is 'n ontwerpkeuse wat maande vroeër gemaak is, nie 'n instelling wat jy tydens 'n onderbreking kan verander nie.
Wat nie een van die twee bewys nie
'n Tonnel kan herverbind, gesleutel en gerouteer wees terwyl die diens agter hom af is, en 'n keepalive kan 'n kartering oop hou vir 'n sessie waarvan die bediener al ure weg is. Albei meganismes kan sukses rapporteer terwyl die ding waaroor jy werklik omgee, onbeskikbaar is.
Daarom eindig die toets by 'n werklike versoek. Stuur iets deur die tonnel ná die interval waaroor jy omgee, en veroorsaak dan afsonderlik die fout waarvoor jy ontwerp het: 'n ledige tydperk vir die karteringsgeval, 'n herbegin of 'n adresverandering vir die herverbindingsgeval.
Om direkte verkeer te blokkeer is 'n aparte besluit
'n Herverbindingslus kan heeltemal gesond wees terwyl 'n toepassing stil die gewone roete gebruik, wat 'n lek is eerder as 'n fout. As die vereiste is dat niks buite die tonnel mag weggaan nie, sê dit uitdruklik in die kliëntkonfigurasie en bewys dit deur die tonnel af te haal en te kyk wat nog verbind. Nie een meganisme impliseer daardie gedrag nie, en geen hoeveelheid herprobeerdissipline vestig dit nie.
Teken aan watter meganisme geloop het en of 'n nuwe versoek daarna geslaag het. Daardie twee feite is wat die volgende ingenieur nodig het, en nie een is in 'n statusikoon sigbaar nie. 'n Logreël wat sê die kliënt het herverbind, is nie dieselfde as 'n versoek wat gewerk het nie.
Skryf die beleid, nie net die nommer nie
Sit die paar in een sin: die ledige interval, die lewendigheidsdrempel, wat 'n herbou veroorsaak , en wat die kliënt doen terwyl hy herprobeer. Sonder daardie sin heropen elke toekomstige voorval dieselfde argument oor of die keepalive te kort of die herverbinding te stadig is.
Die WireGuard-notas oor beperkings is 'n nuttige herinnering dat die keepalive 'n werkoplossing vir middelboksies is eerder as 'n algemene lewendigheidsontwerp. Lees daardie beperking voordat jy die frekwensie verhoog in reaksie op 'n probleem wat dit nie kan oplos nie.