Hoe't jo in rûteringslus fan rûteflapperjen op VPN-plakken ûnderskiede kinne
In rûteringslus en in flapperjende rûte feroarsaakje itselde ûnderbrutsen ferlies. Trije kontrôles op 'e poarten ûnderskiede se foardat jo eat feroarje.
Twa plakken, ien tunnel en in fierôflizzende prefiks dy't in skoft antwurdet en dan stil wurdt. De refleks is om it in rûteringslus te neamen, en soms is dat krekt wat it is. Mar in lus en in flapperjende rûte meitsje deselde klacht en hawwe tsjinoerstelde reparaasjes nedich: de iene is in trochstjoerbeslút dat nea einiget, de oare is in prefiks dat hieltyd de tabel ferlit. Trije waarnimmings skiede se, en jo kinne alle trije fan 'e opdrachtline fan 'e poarte sammelje foardat jo in filter oanreitsje of in tunnel opnij starte.
In lus wurdt hop foar hop besletten. Plak A kiest B as folgjende hop foar de bestimming, B kiest A foar deselde bestimming, en it pakket ferrint op TTL nei twa hin-en-wer-reizen. In flapperjen wurdt ynstee troch it rûteringsprotokol besletten: de prefiks wurdt weromlutsen, opnij ynstallearre of ferfongen troch in alternatyf folgjende hop, sadat guon pakketten hielendal gjin rûte hawwe wylst oaren in folslein goede folgje.
De trije kontrôles dy't de fraach besljochtsje
Jo hawwe gjin pakketopname nedich om it earste beslút te nimmen. Jo hawwe de tastân fan 'e prefiks oan beide kanten nedich, de folgjende hop dy't elke kant kiest, en in hopstal dat him of werhellet of net. As de prefiks ynstallearre bliuwt mei deselde folgjende hop wylst ferkear mislearret, wennet de lus yn it trochstjoerpaad. As de prefiks ferdwynt en weromkomt, is de flater boppe it trochstjoeren en heart de reparaasje by it rûteringsprotokol, net by in statyske rûte.
| Observation | Routing loop | Route flapping |
|---|---|---|
| Prefix in the table | Installed, same next hop throughout | Withdrawn and reinstalled, or next hop alternates |
| Hop count | Reaches zero at the same two gateways | Expires only while the prefix is missing |
| Failure shape | Consistent loss for that prefix from every source | Bursts, often after a link or peer event |
| Where the fix belongs | The site that owns the prefix, plus filters on the transit path | Advertisement, hold timers, or the flapping link |
Ien warskôging foardat jo begjinne. As jo dit lêze oer de tunnel dy't lusst, stjert jo sesje op it stuit dat jo de rûte feroarje. Iepenje in konsôle of in behearpaad dat net ôfhinklik is fan 'e prefiks dy't jo op it punt steane te reparearjen.
Kontrôle ien: is de prefiks stabyl of koelet er
Freegje de kearn wat er ynstallearre hat, net wat it konfiguraasjebestân belooft. Op in Linux-poarte docht ip route get 10.20.30.40 deselde syktocht as it trochstjoerpaad, ynklusyf beliedstabellen, wylst ip route show 10.20.30.0/24 de yngong sels sjen lit. ip monitor route streamt elke feroaring op it stuit dat it bart, wat de fluchste manier is om in prefiks te sjen kommen en gean.
Op in rûter mei FRR of BIRD is de trochstjoertabel net de nijsgjirrige. show ip bgp 10.20.30.0/24 jout it keazen paad en syn bedriuwstiid werom; in bedriuwstiid dy't elke pear minuten weromset wurdt is in flapperjen dat jo beneame kinne, net in lus. show ip bgp summary lit de tastân fan buorlju en it oantal prefiksen sjen, sadat in pear dy't hieltyd falt de skuld fan it trochstjoerpaad ôfnimt.
Skriuw it antwurd op foardat jo eat feroarje. Stabyl tsien minuten wylst pings mislearren, en fjouwer kear yn tsien minuten ferdwûn, liede ta ferskillende folgjende stappen. De twadde makket elke teory oer statyske rûtes irrelevant.
Kontrôle twa: wiist de folgjende hop werom yn 'e oankomsttunnel
In lus hat twa poarten nedich dy't it iens wurde. Op it plak dat it pakket ûntfangt, sjoch nei de rûte dy't it pakket brûke sil om fuort te gean: ip route get 10.20.30.40 from 10.10.5.20 mei it echte boarneadres, want in beliedsregel kin oars antwurdzje as de haadtabel. Werhelje dêrnei de syktocht op it plak dat it stjoerd hat. As elke kant de oare as folgjende hop foar deselde prefiks kiest, is de lus bewiisd en gjin opname sil der eat oan tafoegje.
De oarsaak is hast altyd in oankundiging dy't net troch de tunnel hinne moatten hie. In standertrûte dy't yn 'e tunnel werferdield wurdt, in aggregaat dat it eigen subnet fan it fiere plak dekt, of in statyske rûte nei de partner foar de wisheid meitsje allegear deselde wjerskantsje folgjende hop. De tunnel kin folslein opboud wêze en dochs ferkear yn in sirkel drage; de notysjes oer trochstjoeren fan strongSwan beskriuwe de rûteringskant fan dy eask.
WireGuard fertsjinnet in eigen notysje, want der is gjin oankundiging om te beskuldigen. wg show listet de AllowedIPs foar elke partner, en de kearn akseptearret in bestimming foar in partner allinnich as dy binnen dat berik falt. In lus dêr is in oerlaapjend AllowedIPs-berik of in statyske rûte dy't werom oer de ynterface wiist, dus de reparaasje wennet op dy twa plakken en nearne oars.
Kontrôle trije: lês it hopstal, net de stjerren
traceroute -n -I 10.20.30.40 en mtr -n -r -c 20 10.20.30.40 litte beide it paad sjen, en ICMP-modus oerlibbet faak filtraasje dy't UDP-sondes yt. In lus sjocht derút as in koarte werheljende oarder fan deselde twa poarteadressen, wêrby't de TTL elke kear klimt. In fal sjocht derút as stjerren nei de lêste poarte dy't antwurde, en ien stil hop is gjin bewiis foar eat.
As it paad dûbelsinnich is, lês de TTL op it tried. tcpdump -ni any -vv icmp op beide poarten lit de TTL fan elk pakket en it boarneadres fan elk antwurd oer ferstrutsen tiid sjen. As in pakket it fiere plak berikt mei in TTL leger as it oantal hops dat it paad befetsje kin, foeget eat hops ta dy't traceroute jo net sjen lit, en dat bart as de brânwâl fan it iene plak op sondes antwurdet út namme fan in oar.
Reparearje de eigner fan 'e prefiks, kontrolearje dan beide rjochtingen
Beslút hokker plak de bestimming oarspronklik makket en hokker trochgongspaden tastien binne, en feroarje dan de oankundiging of de statyske rûte by dy eigner. It ûntfangende plak reparearje is ferloklik en meastentiids ferkeard: it ferberget de lus foar ien prefiks en lit de minne oankundiging stean foar de folgjende. Rûte-etiketten, distribúsjelisten en split-horizon-regels besteane om dit by de boarne te stopjen, en se binne goedkeaper as in filter dat mei ien prefiks oerienkomt.
Kontrolearje nei de feroaring hin en wer apart, want in lus kin ferfongen wurde troch in swart gat sûnder sichtbere ferbettering fan it symptoom. Rin ip route get fan beide kanten, stjoer ferkear fan in gasthear dy't net de poarte is, en lit ip monitor route op syn minst ien hold-timer rinne sadat in flapperjen net foar in reparaasje oansjoen wurdt.
Foardat jo eat feroarje, befêstigje dizze fiif punten: de prefiks is stabyl of koelet, de folgjende hop oan beide kanten wiist nei in tunnel, it hopstal werhellet him of net, ien plak besit de prefiks, en jo hawwe in behearpaad dat de feroaring oerlibbet. As ien fan 'e fiif ûnbekend is, binne de oare fjouwer gisungen.