Niyə VPN üzərindən BGP alt qat yolunuza nəzarət etmir
VPN üzərindən BGP əlçatanlığı mübadilə edir və marşrut siyasətini tətbiq edir, lakin alt qat yenə də xarici yolu seçir. Sessiyanın həqiqətən idarə etdiyi şey.
İki sayt IPsec tuneli üzərindən BGP qurur, bir-birinin prefikslərini öyrənir və diaqram yol idarəsi kimi yenidən adlandırılır. Qarışıqlıq məhz bu etiketdən başlayır. Sessiya əlçatanlığı mübadilə edir və siyasət tətbiq edir, amma şifrələnmiş paketləri hansı provayderin, kabelin və ya marşrutlaşdırıcının daşıdığına dair heç bir sözü yoxdur. Bir komandanın işlək tuneli yenidən qurduğunu görmüşəm, çünki onlar BGP marşrut dəyişikliyinin trafiki sessiyanın heç vaxt təsir edə bilmədiyi başqa bir fiber yola keçirəcəyini gözləyirdilər.
İnsanların sessiyanın nə aldığını düşündüyü şey
Gözləntinin çoxu laboratoriyada marşrut dəyişikliyinin necə göründüyündən gəlir. Tunel üzərindən prefiks elan edirsiniz, qarşı tərəf onu quraşdırır və trafik hərəkət edir. Eyni ardıcıllıq həqiqətən trafik mühəndisliyi düymələri olan marşrutlaşdırıcıda da baş verir, buna görə ikisi qarışdırılır. Laboratoriyada hər iki sayt adətən bir giriş xəttini paylaşır və fərqin orada heç vaxt görünməməsinin səbəbi məhz budur.
BGP əlçatanlıq protokoludur. Bir həmkarına prefiks üçün paket çatdıra biləcəyinizi deyir və hər tərəfə aldığı təklifləri sıralamağa imkan verir. Bu, tunel üzərindən həqiqətən faydalıdır: saytlar gəlib getdikcə prefikslər görünür və yox olur və hər kənar cihazda statik marşrut yazmadan bir aralığı rədd edə bilərsiniz. Etmədiyi şey provayderin marşrutlaşdırıcılarını sizin nəzarətinizə verməkdir.
Alt qat xarici başlığı daşıyır. Tunel son nöqtəniz şifrələnmiş paketləri həmkar ünvanına göndərir və bu iki ünvan arasındakı şəbəkə onları operatorlarının quraşdırdığı marşrutlardan istifadə edərək ötürür. BGP sessiyasında heç nə bu qərarı dəyişmir, məgər eyni provayder bunu edən dəstəklənən xidmət təqdim etmirsə.
Sessiyanın həqiqətən daşıdığı şey
BGP danışanı həmkarında 179 portuna TCP bağlantısı açır və RFC 4271-də təyin olunan mesaj formatlarından və yol atributlarından istifadə edir. Həmkar ünvanı tunelin içində olduqda, sessiya başlamazdan əvvəl tunel qalxmalı və həmin ünvan əlçatan olmalıdır. Tamamlanmış IKE mübadiləsi BGP qonşusu deyil. Marşruta əsaslanan IPsec tətbiqləri yalnız uyğun tunel marşrutu mövcud olduqdan sonra trafiki keçirir, siyasətə əsaslanan tətbiq isə həmkar ünvanını qorunan seçicinin içində tələb edir. Bunu tərsinə etmək tunelin yaşıl, sessiyanın isə boş dayandığı klassik vəziyyəti yaradır.
Sessiya qalxdıqdan sonra nəyin onu keçəcəyinə siyasət qərar verir. Prefiks siyahıları, AS-yolu filtrləri, maksimum prefiks həddi və defolt marşrutlar barədə açıq qərar minimumdur və onlar hər iki istiqamətdə tətbiq olunur. Aldığı hər şeyi qəbul edən həmkar sizə yerli internet çıxışını səssizcə əvəz edən defolt marşrut verə bilər. İki istiqamətə ayrı siyahılar lazımdır, çünki həmkardan qəbul etdiyiniz və ona elan etdiyiniz şey fərqli qərarlardır.
router bgp 65010
neighbor 10.255.0.2 remote-as 65020
address-family ipv4 unicast
neighbor 10.255.0.2 prefix-list SITE-B-IN in
neighbor 10.255.0.2 prefix-list SITE-B-OUT out
neighbor 10.255.0.2 maximum-prefix 50
Sonra MTU işə qarışır. Kapsullaşdırma istifadə oluna bilən yükü kiçildir, buna görə böyük bir yeniləmə tamamilə qurulmuş görünən sessiyanı dayandıra bilər: həmkar qalxır, prefikslər heç vaxt gəlmir və jurnalda açıq bir şey görünmür. Filtrləri günahlandırmazdan əvvəl tunel interfeysində TCP MSS-ni məhdudlaşdırın və ya əlavə yük üçün yer qoyan tunel MTU təyin edin.
Xarici paketlər yenə hara gedir
Bir saytdan digərinə şifrələnmiş paketlər yerli marşrutlaşdırıcının həmkarın ictimai ünvanı üçün seçdiyi yoldan çıxır. Əgər hər iki sayt tranziti eyni provayderdən alırsa, eyni metro obyektindən keçirsə və ya bir tərəf operator səviyyəli NAT-ın arxasındadırsa, tunel provayder nasazlığından yalnız təsadüfən sağ çıxır. Monitorinq alətində tunel ikonlarını saymaq bu barədə sizə heç nə demir.
Marşrut seçimi və yönləndirmənin quraşdırılması da ayrı hadisələrdir. Prefiks BGP cədvəlində ən yaxşı kimi otura və yenə də yönləndirmə cədvəlində olmaya bilər, çünki növbəti hop həll olunmazdır və ya daha konkret marşrut qalib gəlir. Kimsə BGP-nin prefiksi öyrəndiyini, lakin trafikin axmadığını bildirdikdə, faydalı sual onun quraşdırılıb-qurulmadığı və hansı növbəti hopa işarə etdiyidir.
Dizayn icmalı üçün dürüst cavab ortaq asılılıqların siyahısıdır: giriş dövrəsi, yuxarı provayder, obyekt və qayıdış yolundakı istənilən vəziyyət saxlayan cihaz. Tunel üzərindən sessiya üstündə oturmadığı asılılığı silə bilməz.
Ayırmağa dəyər üç qərar
Dizayn bunları qarışdırdıqda, hər kəsinti söhbəti dairəvi olur. Əvvəlcə onları kağızda ayırın, sonra hər birini həqiqətən tətbiq edən cihaza bağlayın.
| Decision | Who controls it | Typical failure |
|---|---|---|
| Which prefixes may cross the relationship? | Both sides, through prefix and AS-path policy you configure deliberately | A default route accepted by mistake, or a vague aggregate |
| Which overlay next hop wins? | Local BGP selection plus next-hop resolution on your own routers | Prefix learned, never installed in the forwarding table |
| Where do the encrypted packets travel? | The underlay operators, unless a supported service adds real control | Path diversity that was never there |
Hər sətrin sahibi fərqlidir. Birincisi danışıqdır, ikincisi cihazlarınızdakı konfiqurasiyadır, üçüncüsü əsasən başqasının şəbəkəsidir. Toxunduğu sətri adlandıran dəyişiklik tələbi, BGP problemi deyən tələbdən qat-qat asan təsdiqlənir.
Planlaşdırmağa dəyər nasazlıq rejimləri
Həmkarın xülasə marşrutunu qəbul etmək ən çox rast gəlinən özünə vurulan yaradır. Kimsə mübadiləni sadələşdirmək üçün qısa aqreqat elan edir, qarşı tərəf onu qəbul edir və tunelin arxasında olmayan aralıqlar üçün trafik tunelə düşüb ölür. Dəqiq gözlənilən prefikslər üzrə filtr edin və ya düzgün sərhədləri olan prefiks siyahısı istifadə edin və heç vaxt çılpaq aqreqat qəbul etməyin, çünki o, sessiyanı səliqəli göstərir.
Geri çəkilmə vaxtı ikincidir. Aşkarlama saxlama taymerlərindən, aktivləşdirdiyiniz BFD-dən, tunelin ölü həmkar aşkarlamasından və qarşı tərəfin elanı nə qədər tez dayandırmasından asılıdır. Mövcud sessiyalar ayrı problemdir: yeni marşrut yeni bağlantıları bərpa edə bilər, halbuki qurulmuş TCP sessiyaları köhnəlmiş ünvanlardan istifadə etməyə davam edir, yoldakı vəziyyət saxlayan firewall və ya NAT isə artıq uyğun gəlməyən qeydləri saxlaya bilər. Marşrut dəyişikliyinin hər şeyi həll etdiyini güman etmək əvəzinə tətbiq bərpasını qəbul meyarlarına qoyun.
Üçüncüsü budur: qayıdış yolu asimmetriyası. Trafik tuneldən gələ və heç vaxt onu daşımaq üçün nəzərdə tutulmamış provayder xətti ilə qayıda bilər, bu da birtərəfli səs, uğursuz əl sıxmaları və ya cavabları atan firewall kimi görünür. Hər iki istiqaməti ayrıca yoxlayın.
Müqaviləyə nə yazmalı və bunu necə yoxlamalı
İcazə verilən prefiksləri yazılı şəkildə tələb edin: hər aralığı yaratmaq üçün kimin səlahiyyəti var, defolt marşruta icazə verilirmi və tunel xidmətinin hansı ünvan ailələrini dəstəklədiyini. RFC 8212 onu tətbiq edən implementasiyalarda eBGP üçün açıq idxal və ixrac siyasətini gözləntiyə çevirdi, buna görə hələ də hər şeyi qəbul etmə davranışına arxalanan həmkarı sorğulamağa dəyər.
Sonra diaqramdan deyil, cihazdan yoxlayın. FRR tipli marşrutlaşdırıcılarda faydalı əmrlər:
show bgp summary
show bgp ipv4 unicast 10.10.0.0/16
show bgp ipv4 unicast neighbors 10.255.0.2 advertised-routes
show ip route 10.10.0.0/16
Marşrut cədvəlinin verə bilmədiyi iki müşahidə əlavə edin. Kapsullaşdırılmış paketlərin həqiqətən hansı ünvanı hədəflədiyini təsdiqləmək üçün xarici interfeysdə tutun, məsələn tcpdump -ni eth0 udp port 51820 WireGuard tuneli üçün, ya da IPsec üçün ESP filtri. Sonra həmkarın ictimai ünvanına doğru izləyin və hopları tunelin içindəki izlə müqayisə edin; əgər hər ikisi eyni provayder zəncirini izləyirsə, ehtiyatlılığınız şəbəkədə deyil, marşrut siyasətində yaşayır.
Nəhayət, geri çəkilməni qəsdən sınayın. Texniki xidmət pəncərəsində tuneli aşağı salın, prefiksin nə qədər quraşdırılmış qaldığını, mövcud sessiyalara nə olduğunu və qarşı tərəfin həqiqətən qəbul edəcəyiniz marşruta düşüb-düşmədiyini qeyd edin. Bu məşq dizayn barədə hər hansı diaqramdan daha çox şey deyir.
Marşrut icazə deyil. Mübadilə etməyə razılaşdığınız prefikslər hansı istifadəçilərin tunelin arxasındakı hansı xidmətə çata biləcəyi barədə heç nə demir, buna görə autentifikasiyanı, icazə verilən xidmətləri və host firewall-ları tam olduqları yerdə saxlayın. Əlçatan həmkar həm də limitsiz tranzit və ya ixtiyari ünvanlar yaratmaq üçün icazə deyil və bu cür səlahiyyət BGP siyasət sətrində deyil, müqavilədə kommersiya məsələsi kimi yer almalıdır.
- Hər tərəfin yarada biləcəyi prefiksləri və heç vaxt qəbul etməməli olduqlarını adlandırın.
- Tuneldə MSS-i məhdudlaşdırın və böyük yeniləmələrin həqiqətən gəldiyini təsdiqləyin.
- Ortaq alt qat asılılıqlarını sadalayın, tunel sayını yox.
- Real geri çəkilməni vaxtla ölçün və tətbiqin nə etdiyini qeyd edin.