Divas vietnes, viens tunelis un attāls prefikss, kas kādu laiku atbild un tad apklust. Reflekss ir nosaukt to par maršrutēšanas cilpu, un dažreiz tas tiešām ir tā. Bet cilpa un plivinošs maršruts rada vienu un to pašu sūdzību un prasa pretējus labojumus: viens ir pārsūtīšanas lēmums, kas nekad nebeidzas, otrs ir prefikss, kas nemitīgi atstāj tabulu. Trīs novērojumi tos atšķir, un visus trīs varat savākt no vārtejas komandrindas, pirms aiztiekat filtru vai restartējat tuneli.

Cilpa tiek izlemta lēciens pa lēcienam. Vietne A izvēlas B kā nākamo lēcienu mērķim, B izvēlas A tam pašam mērķim, un pakete beidzas uz TTL pēc diviem braucieniem turp un atpakaļ. Plivināšanos gan izlemj maršrutēšanas protokols: prefikss tiek atsaukts, pārinstalēts vai aizstāts ar alternatīvu nākamo lēcienu, tāpēc dažām paketēm vispār nav maršruta, bet citas seko pilnīgi labam.

Trīs pārbaudes, kas izšķir jautājumu

Pirmajam lēmumam nav nepieciešama pakešu uztveršana. Jums vajag prefiksa stāvokli abos galos, katras puses izvēlēto nākamo lēcienu un lēcienu skaitu, kas vai nu atkārtojas, vai nē. Ja prefikss paliek instalēts ar to pašu nākamo lēcienu, kamēr satiksme neizdodas, cilpa dzīvo pārsūtīšanas ceļā. Ja prefikss pazūd un atgriežas, kļūme ir virs pārsūtīšanas, un labojums pieder maršrutēšanas protokolam, nevis statiskam maršrutam.

ObservationRouting loopRoute flapping
Prefix in the tableInstalled, same next hop throughoutWithdrawn and reinstalled, or next hop alternates
Hop countReaches zero at the same two gatewaysExpires only while the prefix is missing
Failure shapeConsistent loss for that prefix from every sourceBursts, often after a link or peer event
Where the fix belongsThe site that owns the prefix, plus filters on the transit pathAdvertisement, hold timers, or the flapping link

Viens brīdinājums pirms sākšanas. Ja jūs to lasāt caur tuneli, kas cilpo, jūsu sesija mirst tajā mirklī, kad maināt maršrutu. Atveriet konsoli vai pārvaldības ceļu, kas nav atkarīgs no prefiksa, kuru gatavojaties labot.

Pirmā pārbaude: vai prefikss ir stabils vai kūsā

Jautājiet kodolam, ko tas instalēja, nevis ko sola konfigurācijas fails. Linux vārtejā ip route get 10.20.30.40 veic to pašu meklēšanu kā pārsūtīšanas ceļš, ieskaitot politikas tabulas, bet ip route show 10.20.30.0/24 rāda pašu ierakstu. ip monitor route pārraida katru izmaiņu tās rašanās brīdī, un tas ir ātrākais veids, kā vērot prefiksu nākam un ejam.

Maršrutētājā ar FRR vai BIRD interesantā nav pārsūtīšanas tabula. show ip bgp 10.20.30.0/24 atgriež izvēlēto ceļu un tā darbības laiku; darbības laiks, kas atiestatās ik pēc dažām minūtēm, ir plivināšanās, ko varat nosaukt, nevis cilpa. show ip bgp summary rāda kaimiņu stāvokli un prefiksu skaitu, tāpēc pastāvīgi krītošs partneris noņem vainu no pārsūtīšanas ceļa.

Pierakstiet atbildi, pirms kaut ko maināt. Stabilitāte desmit minūtes, kamēr pingi neizdevās, un pazušana četras reizes desmit minūtēs ved pie dažādiem nākamajiem soļiem. Otrais gadījums padara jebkuru statiskā maršruta teoriju nebūtisku.

Otrā pārbaude: vai nākamais lēciens rāda atpakaļ uz ienākšanas tuneli

Cilpai vajag, lai divas vārtejas vienotos. Vietnē, kas saņem paketi, apskatiet maršrutu, ko pakete izmantos, lai izietu: ip route get 10.20.30.40 from 10.10.5.20 ar īsto avota adresi, jo politikas noteikums var atbildēt citādi nekā galvenā tabula. Pēc tam atkārtojiet meklēšanu vietnē, kas to nosūtīja. Ja katra puse izvēlas otru kā nākamo lēcienu tam pašam prefiksam, cilpa ir pierādīta un nekāda uztveršana neko nepievienos.

Iemesls gandrīz vienmēr ir sludinājums, kam nevajadzēja šķērsot tuneli. Tunelī pārdalīts noklusējuma maršruts, agregāts, kas aptver pašas attālās vietnes apakštīklu, vai statisks maršruts uz partneri drošības pēc — visi rada vienu un to pašu savstarpējo nākamo lēcienu. Tunelis var būt pilnībā izveidots un tomēr vadīt satiksmi aplī; strongSwan pārsūtīšanas piezīmes apraksta šīs prasības maršrutēšanas pusi.

WireGuard pelna savu piezīmi, jo nav sludinājuma, ko vainot. wg show uzskaita katra partnera AllowedIPs, un kodols pieņem galamērķi partnerim tikai tad, ja tas iekrīt šajā diapazonā. Cilpa tur ir pārklājošs AllowedIPs diapazons vai statisks maršruts, kas rāda atpakaļ pāri saskarnei, tāpēc labojums dzīvo tikai šajās divās vietās.

Trešā pārbaude: lasiet lēcienu skaitu, nevis zvaigznītes

traceroute -n -I 10.20.30.40 un mtr -n -r -c 20 10.20.30.40 abi rāda ceļu, un ICMP režīms bieži izdzīvo filtrēšanu, kas aprij UDP zondes. Cilpa izskatās kā īsa atkārtojoša to pašu divu vārteju adrešu secība, un TTL katru reizi kāpj. Kritums izskatās kā zvaigznītes pēc pēdējās atbildējušās vārtejas, un viens kluss lēciens nav nekam pierādījums.

Kad ceļš ir neskaidrs, lasiet TTL uz vada. tcpdump -ni any -vv icmp abās vārtejās rāda katrai paketei TTL un katrai laika pārsniegšanas atbildei avota adresi. Ja pakete sasniedz attālo vietni ar zemāku TTL nekā lēcienu skaits, ko ceļš var saturēt, kaut kas pievieno lēcienus, ko traceroute jums nerāda, un tas notiek, kad vienas vietnes ugunsmūris atbild uz zondēm citas vārdā.

Salabojiet prefiksa īpašnieku, pēc tam pārbaudiet abus virzienus

Izlemiet, kura vietne rada galamērķi un kuri tranzīta ceļi ir atļauti, pēc tam mainiet sludinājumu vai statisko maršrutu pie šī īpašnieka. Saņēmējas vietnes labošana ir vilinoša un parasti nepareiza: tā paslēpj cilpu vienam prefiksam un atstāj slikto sludinājumu vietā nākamajam. Maršruta birkas, sadales saraksti un split-horizon noteikumi pastāv, lai to apturētu avotā, un tie ir lētāki par filtru, kas atbilst vienam prefiksam.

Pēc izmaiņām pārbaudiet uz priekšu un atpakaļ atsevišķi, jo cilpu var aizstāt ar melnu caurumu bez redzama simptoma uzlabojuma. Palaidiet ip route get no abiem galiem, sūtiet satiksmi no saimnieka, kas nav vārteja, un atstājiet ip monitor route darboties vismaz vienu aizturēšanas taimeri, lai plivināšanos nepaturētu par labojumu.

Pirms kaut ko maināt, apstipriniet šos piecus punktus: prefikss ir stabils vai kūsā, nākamais lēciens abos galos rāda uz tuneli, lēcienu skaits atkārtojas vai nē, viena vietne pārvalda prefiksu, un jums ir pārvaldības ceļš, kas pārdzīvo izmaiņas. Ja kāds no pieciem nav zināms, pārējie četri ir minējumi.

Saistītie raksti