Две локации, еден тунел и далечинска префиксна ознака што одговара извесно време, а потоа замолчува. Рефлексот е тоа да се нарече јамка во рутирањето, и понекогаш тоа е токму така. Но јамката и треперечката рута предизвикуваат иста поплака и бараат спротивни поправки: едната е одлука за препраќање што никогаш не завршува, другата е префиксна ознака што постојано ја напушта табелата. Три набљудувања ги раздвојуваат, и сите три можете да ги соберете од командната линија на портата пред да допрете филтер или да рестартирате тунел.

Јамката се решава скок по скок. Локацијата A ја избира B како следен скок за одредиштето, B ја избира A за истото одредиште, и пакетот истекува на TTL по две обиколки. Треперењето пак го решава протоколот за рутирање: префиксната ознака се повлекува, повторно се инсталира или се заменува со алтернативен следен скок, така што некои пакети воопшто немаат рута, а други следат сосема добра.

Трите проверки што го решаваат прашањето

За првата одлука не ви треба фаќање пакети. Ви треба состојбата на префиксната ознака на двата краја, следниот скок што го избира секоја страна, и број на скокови што или се повторува, или не. Ако префиксната ознака остане инсталирана со истиот следен скок додека сообраќајот пропаѓа, јамката живее во патеката за препраќање. Ако префиксната ознака исчезне и се врати, дефектот е над препраќањето и поправката и припаѓа на протоколот за рутирање, не на статична рута.

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

Едно предупредување пред да започнете. Ако читате ова преку тунелот што создава јамка, вашата сесија умира во моментот кога ќе ја смените рутата. Отворете конзола или административна патека што не зависи од префиксната ознака што ја поправате.

Прва проверка: дали префиксната ознака е стабилна или се бранува

Прашајте го јадрото што инсталирало, а не што ветува конфигурациската датотека. На Linux порта, ip route get 10.20.30.40 извршува исто пребарување како патеката за препраќање, вклучително и табелите со политики, додека ip route show 10.20.30.0/24 го покажува самиот запис. ip monitor route пренесува секоја промена во моментот на настанување, што е најбрзиот начин да гледате ознака како доаѓа и си оди.

На рутер со FRR или BIRD, интересна не е табелата за препраќање. show ip bgp 10.20.30.0/24 го враќа избраната патека и нејзиното време на работа; време на работа што се ресетира на секои неколку минути е треперење што можете да го именувате, не јамка. show ip bgp summary ја покажува состојбата на соседите и бројот на префиксни ознаки, така што сосед што постојано паѓа ја симнува вината од патеката за препраќање.

Запишете го одговорот пред да промените нешто. Стабилност десет минути додека пинговите пропаѓаа, и исчезнување четири пати во десет минути водат до различни следни чекори. Вториот случај ја прави секоја теорија за статична рута неважна.

Втора проверка: дали следниот скок покажува назад во тунелот на пристигнување

Јамката бара две порти да се согласат. На локацијата што го прима пакетот, погледнете ја рутата што пакетот ќе ја користи за да излезе: ip route get 10.20.30.40 from 10.10.5.20 со вистинската изворна адреса, бидејќи правило за политика може да одговори поинаку од главната табела. Потоа повторете го пребарувањето на локацијата што го испратила. Ако секоја страна ја избира другата како следен скок за истата префиксна ознака, јамката е докажана и никакво фаќање нема да додаде ништо.

Причината е скоро секогаш објава што не требало да го премине тунелот. Стандардната рута прераспределена во тунелот, агрегатот што ја покрива сопствената подмрежа на далечната локација, или статична рута кон партнерот за секој случај — сите создаваат ист взаемен следен скок. Тунелот може да биде целосно воспоставен, а сепак да носи сообраќај во круг; белешките за препраќање на strongSwan го опишуваат рутирачкиот дел од тоа барање.

WireGuard заслужува своја белешка, бидејќи нема објава што би се обвинила. wg show ги наведува AllowedIPs за секој партнер, и јадрото прифаќа одредиште за партнер само ако паѓа во тој опсег. Јамка таму е опсег на AllowedIPs што се преклопува или статична рута што покажува назад преку интерфејсот, така што поправката живее само на тие две места.

Трета проверка: читајте го бројот на скокови, не ѕвездичките

traceroute -n -I 10.20.30.40 и mtr -n -r -c 20 10.20.30.40 и двете ја покажуваат патеката, и режимот ICMP често преживува филтрирање што ги јаде UDP сондите. Јамката изгледа како кратка последователност што се повторува од истите две адреси на порти, при што TTL расте секој пат. Падот изгледа како ѕвездички по последната порта што одговорила, и еден тивок скок не е доказ за ништо.

Кога патеката е двосмислена, читајте го TTL на жицата. tcpdump -ni any -vv icmp на двете порти го покажува TTL на секој пакет и изворната адреса на секој одговор за истекување на време. Ако пакетот стигне до далечната локација со понизок TTL од бројот на скокови што патеката може да ги содржи, нешто додава скокови што traceroute не ви ги покажува, и тоа се случува кога огнениот ѕид на една локација одговара на сондите во името на друга.

Поправете го сопственикот на префиксната ознака, потоа проверете ги двата правци

Одлучете која локација го создава одредиштето и кои транзитни патеки се дозволени, потоа сменете ја објавата или статичната рута кај тој сопственик. Поправањето на локацијата што прима е примамливо и обично погрешно: ја крие јамката за една префиксна ознака и ја остава лошата објава на место за следната. Ознаките за рути, дистрибуциските листи и правилата split-horizon постојат за да го запрат тоа кај изворот, и тие се поевтини од филтер што одговара на една префиксна ознака.

По промената, проверете ги одделно патот напред и патот назад, бидејќи јамката може да биде заменета со црна дупка без никакво видливо подобрување на симптомот. Извршете ip route get од двата краја, испратете сообраќај од домаќин што не е портата, и оставете ip monitor route да работи најмалку еден тајмер за задржување, за да не се смета треперењето за поправка.

Пред да промените нешто, потврдете ги овие пет точки: префиксната ознака е стабилна или се бранува, следниот скок на двата краја покажува на тунел, бројот на скокови се повторува или не, една локација ја поседува префиксната ознака, и имате административна патека што ја преживува промената. Ако која било од петте е непозната, другите четири се претпоставки.

Поврзани статии