VPN сайттарындагы маршруттоо цикли менен маршрут флаппингин кантип айырмалоо керек
Маршруттоо цикли жана флаппинг маршрут бирдей үзгүлтүктүү жоготууну пайда кылат. Шлюздардагы үч текшерүү эч нерсени өзгөртүүдөн мурун аларды айырмалайт.
Эки сайт, бир туннель жана бир аз убакыт жооп берип, анан үнсүз калган алыскы префикс. Рефлекс аны маршруттоо цикли деп атоо, жана кээде так ошондой болот. Бирок цикл жана флаппинг маршрут бирдей нааразылык жаратат жана карама-каршы оңдоону талап кылат: бири эч качан бүтпөгөн жөнөтүү чечими, экинчиси таблицадан тынымсыз чыгып кеткен префикс. Үч байкоо аларды ажыратат, жана үчөөнү тең чыпкага тийүүдөн же туннелди кайра иштетүүдөн мурун шлюздун буйрук сабынан чогулта аласыз.
Цикл секирүү боюнча чечилет. A сайты багыт үчүн Bни кийинки секирүү катары тандайт, B ошол эле багыт үчүн Aны тандайт, жана пакет эки айлануудан кийин TTLде бүтөт. Флаппингди болсо маршруттоо протоколу чечет: префикс кайтарылып алынат, кайра орнотулат же алтернативалуу кийинки секирүү менен алмаштырылат, ошондуктан кээ бир пакеттерде такыр маршрут жок, ал эми башкалары толук жакшы маршрутту ээрчийт.
Маселени чечүүчү үч текшерүү
Биринчи чечим үчүн пакетти кармоонун кереги жок. Сизге эки учтагы префикстин абалы, ар бир тарап тандаган кийинки секирүү жана кайталануучу же кайталбаган секирүү саны керек. Эгер трафик ийгиликсиз болуп жатканда префикс ошол эле кийинки секирүү менен орнотулган бойдон калса, цикл жөнөтүү жолунда жашайт. Эгер префикс жоголуп, кайра келсе, бузулуу жөнөтүүдөн жогору жана оңдоо маршруттоо протоколуна таандык, статикалык маршрутка эмес.
| 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 |
Баштоодон мурун бир эскертүү. Эгер муну циклдеп жаткан туннелдин ичинен окуп жатсаңыз, маршрутту өзгөрткөн учурда сессияңыз өлөт. Оңдоп жаткан префикске көз каранды эмес консолду же башкаруу жолун ачыңыз.
Биринчи текшерүү: префикс туруктуубу же козголуп турабы
Конфигурация файлы эмнени убада кыларын эмес, ядродон эмнени орнотконун сураңыз. 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 жок дегенде бир кармоо таймеринин убагында иштесин.
Бир нерсени өзгөртүүдөн мурун бул беш пунктту ырастаңыз: префикс туруктуубу же козголуп турабы, эки учтагы кийинки секирүү туннелге багытталганбы, секирүүлөрдүн саны кайталанабы, бир сайт префиксти ээлейби, жана өзгөртүүгө туруштук бере турган башкаруу жолуңуз барбы. Эгер бешөөнүн бири белгисиз болсо, калган төртөө божомол.