BGP вывучыў прэфікс, але трафік усё яшчэ абыходзіць тунэль
Прэфікс у табліцы BGP — гэта навіна плоскасці кіравання, а не рашэнне аб перасылцы. Праверце атрыманне, выбар, усталёўку і супастаўленне, перш чым вінаваціць тунэль.
Шлюз філіяла паказвае прэфікс воблака ў сваёй табліцы BGP, сесія з правайдарам усталяваная, а запыт карыстальніка да гэтага прэфікса ўсё роўна выходзіць праз няправільны інтэрфейс. Нічога не зламана так, як мяркуе маніторынг, бо «BGP гэта вывучыў» — гэта сцвярджэнне пра плоскасць кіравання. Паміж гэтай табліцай і пакетам ёсць чатыры асобныя пераходы, і паток спыняецца роўна на адным з іх. Прайдзіце брамы па парадку і спыніцеся на першай, якая не спрацавала.
Першая брама: што сусед фактычна даслаў
Пачніце з прэфікса такім, якім ён быў атрыманы, а не абагульненым. Знайдзіце дакладную сетку і маску ў табліцы BGP і запішыце наступны хоп, шлях AS і любыя супольнасці, якія можа супаставіць палітыка імпарту. Зводны маршрут на панэлі можа хаваць той факт, што канкрэтны прэфікс ніколі не прымаўся.
Палітыка імпарту — звычайнае месца, дзе маршрут знікае без памылкі. Спіс прэфіксаў, фільтр супольнасцей або карта ўваходных маршрутаў могуць адкінуць абнаўленне, пакуль сесія застаецца ўзнятай і здаровай, і менавіта таму зялёнае святло суседа так мала даказвае. Адсутнасць радка ў журнале не азначае адсутнасці рашэння. Звычайна гэта значыць, што рашэнне было прынята маўкліва, менавіта як наладжана.
show ip bgp 10.60.20.0/24 show ip bgp neighbors 203.0.113.5 advertised-routes show ip route 10.60.20.0 show ip cef 10.60.20.0
Чытайце вывад у гэтым парадку. Першыя дзве каманды кажуць, ці прыйшла інфармацыя і што сусед сцвярджае, што даслаў; апошнія дзве — ці дасягнула што-небудзь табліц маршрутызацыі і перасылкі. Прэфікс, прысутны ў першай камандзе і адсутны ў трэцяй, — гэта праблема выбару або ўсталёўкі, а не праблема злучэння.
Другая брама: выбар, потым усталёўка
BGP выбірае найлепшы шлях, і выбраны шлях не ўсталёўваецца аўтаматычна. Наступны хоп павінен развязацца, а іншая крыніца маршрутаў можа ўжо валодаць гэтым прэфіксам з лепшай адміністрацыйнай дыстанцыяй. Статычны маршрут, які застаўся ад міграцыі, лёгка пераможа сапраўдны шлях BGP і адправіць трафік у іншае месца.
RFC 4271 раздзяляе тры ідэі: што даслаў сусед, што гэты спікер выбраў найлепшым і што ён будзе абвяшчаць далей. Гэта канцэптуальныя ролі, а не тры фізічныя базы даных, якія пастаўшчык абавязаны паказаць, але менавіта гэтае раздзяленне робіць «гэта ёсць у BGP» няпоўным адказам.
Таксама праверце, які кантэкст маршрутызацыі вы чытаеце. Маршрут, усталяваны ў VRF, да якой не належыць інтэрфейс карыстальніка, нябачны для пакетаў гэтага карыстальніка, і табліца ўвесь час выглядае правільнай.
Трэцяя брама: пошук, які прымяняецца да гэтага патоку
Цяпер перастаньце пытацца пра маршрут і пачніце пытацца пра пакет. Запішыце адрас крыніцы карыстальніка, прызначэнне, пратакол, порт і ўваходны інтэрфейс, бо кожнае з гэтага можа выбраць іншую палітыку. Затым паглядзіце на пошук, які прымяняецца да гэтай камбінацыі, а не на агульную табліцу маршрутызацыі.
ip route get 10.60.20.25 from 10.60.10.40 ip rule show sudo tcpdump -ni tun0 'host 10.60.20.25'
Больш канкрэтны прэфікс — самая частая неспадзяванка тут, а палітычны маршрут — другая. Абодва перавышаюць агрэгат, на які вы глядзелі, і ні адзін не бачны ў зводцы табліцы BGP.
Пінг з самога шлюза не з'яўляецца доказам пра сесію карыстальніка. Іншы адрас крыніцы, іншы шлях палітыкі і часта іншы вынік. Тэстуйце з той самай крыніцай, якую выкарыстоўвае праграма, або прызнайце, што тэст адказвае на іншае пытанне.
Чацвёртая брама: далёкая палова шляху
Калі лакальны пошук сапраўды выбраў тунэль, пакет усё яшчэ павінен быць прыняты палітыкай абароны, дазволены правілам перасылкі і атрымаць адказ ад чагосьці на далёкім баку. Крыпта-ACL, які не ўключае пару адрасоў, скіне трафік, пакуль тунэль паведамляе, што ён узняты, што стварае тайм-аўт, неадрозны ад збою маршрутызацыі.
Зваротны шлях важны не менш за выходны. Бок воблака павінен ведаць, як дасягнуць крыніцы філіяла — праз маршрут або праз трансляцыю, якую вы наўмысна наладзілі. Асіметрычныя зваротныя шляхі часта сустракаюцца ў схемах, якія тэставаліся толькі з аднаго кірунку.
Суаднясіце свежае аўтарызаванае злучэнне з трыма назіраннямі: лакальная палітыка, якая супала, лічыльнікі тунэля, якія зрушыліся, і прыём на далёкім баку, дзе гэта бачна. Калі лічыльнікі не рухаюцца, пакет ніколі не ўваходзіў у тунэль, незалежна ад таго, што кажа табліца маршрутаў. Калі яны рухаюцца, а нічога не прыходзіць, далёкі бок скідае або няправільна маршрутызуе яго. Гэтыя два вынікі вядуць да цалкам розных каманд.
Назвіце пераход, які не спрацаваў
Запішыце вынік як адзін з пяці станаў: не атрыманы, не прыняты палітыкай, не выбраны, не ўсталяваны або не супастаўлены гэтым патокам. Дадайце шосты для выпадку, калі лакальны шлях правільны, а далёкі канец не можа адказаць. Гэтае сказ — і ёсць вынік, і ён значна карыснейшы за здымак экрана ўсталяванага суседа.
Трымайце ў плане прыёмкі і негатыўны тэст: прызначэнне, якое не павінна праходзіць праз тунэль, праверанае пасля змены. Кантрольны спіс, які даказвае толькі ўдалы шлях, не зловіць шырокае правіла палітыкі, якое хтосьці дадасць у наступнае акно абслугоўвання.