Зошто BGP преку VPN не ја контролира вашата патека на долниот слој
BGP преку VPN разменува достапност и применува маршрутна политика, но долниот слој сè уште ја избира надворешната патека. Што всушност контролира сесијата.
Две локации воспоставуваат BGP преку IPsec тунел, ги учат префиксите една на друга, и дијаграмот се преименува во контрола на патеката. Токму таа етикета е почетокот на забуната. Сесијата навистина разменува достапност и навистина применува политика, но нема збор за тоа кој провајдер, кабел или рутер ги носи шифрираните пакети. Видов тим како го преградува работниот тунел затоа што очекуваше промената на BGP рутата да го премести сообраќајот на друга оптичка патека врз која сесијата никогаш не можеше да влијае.
Што луѓето претпоставуваат дека купува сесијата
Поголемиот дел од очекувањето доаѓа од тоа како изгледа промената на рутата во лабораторија. Ја објавувате префиксот преку тунелот, далечната страна го инсталира, и сообраќајот се движи. Истата низа се случува на рутер што навистина има лостови за инженерство на сообраќај, па двете се мешаат. Во лабораторија двете локации обично делат еден пристапен линк, и токму затоа разликата никогаш не се покажува таму.
BGP е протокол за достапност. Му кажува на партнерот дека можете да доставите пакети за префикс и ѝ дозволува на секоја страна да ги рангира понудите што ги добива. Тоа е навистина корисно преку тунел: префиксите се појавуваат и исчезнуваат додека локациите доаѓаат и си одат, и можете да одбиете опсег без да пишувате статична рута на секој рабен уред. Она што не го прави е да ги стави рутерите на провајдерот под ваша контрола.
Долниот слој ја носи надворешната заглавје. Крајната точка на вашиот тунел испраќа шифрирани пакети до адреса на партнер, и мрежата меѓу тие две адреси ги препраќа со рутите што ги инсталирале нејзините оператори. Ништо во BGP сесијата не ја менува таа одлука, освен ако истиот провајдер не понуди поддржана услуга што го прави тоа.
Што всушност носи сесијата
BGP говорителот отвора TCP врска до портата 179 на својот партнер, користејќи ги форматите на пораки и атрибутите на патеката дефинирани во RFC 4271. Кога адресата на партнерот е внатре во тунелот, тунелот мора да биде кренат и таа адреса достапна пред сесијата воопшто да започне. Завршена IKE размена не е BGP сосед. IPsec имплементациите базирани на рути пропуштаат сообраќај само кога постои соодветна тунелска рута, а таа базирана на политика бара адресата на партнерот во заштитениот селектор. Ова обратно да се направи го создава класичниот случај кога тунелот е зелен, а сесијата стои неактивна.
Откако сесијата е крената, политиката одлучува што ја преминува. Листите со префикси, AS-пат филтрите, горната граница на максимални префикси и експлицитната одлука за стандардните рути се минимумот, и тие важат во двете насоки. Партнер што прифаќа сето што ќе добие може да ви даде стандардна рута што тивко го заменува локалниот интернет пристап. Двете насоки бараат одделни листи, зашто тоа што го прифаќате од партнер и тоа што му го објавувате се различни одлуки.
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
Следно каснува MTU. Инкапсулацијата ја намалува употребливата полезен товар, па големо ажурирање може да запре сесија што изгледа совршено воспоставена: партнерот останува кренат, префиксите никогаш не пристигнуваат, и ништо очигледно не паѓа во дневникот. Ограничете го TCP MSS на тунелскиот интерфејс, или поставете тунелски MTU со простор за дополнителниот товар, пред да ги обвините филтрите.
Каде уште одат надворешните пакети
Шифрираните пакети од една локација до друга излегуваат низ тоа што локалниот рутер го избира за јавната адреса на партнерот. Ако двете локации купуваат транзит од истиот провајдер, ја преминуваат истата метро-инсталација или едната страна е зад NAT од операторско ниво, тунелот преживува дефект на провајдерот само случајно. Броењето икони на тунели во алатка за надзор не ви кажува ништо за тоа.
Изборот на рута и инсталацијата на препраќање се исто така одделни настани. Префиксот може да стои во BGP табелата како најдобар и сепак да недостасува во табелата за препраќање, зашто следниот скок е нерешлив или победува поспецифична рута. Кога некој известува дека BGP го научил префиксот, но сообраќајот не тече, корисното прашање е дали е инсталиран и на кој следен скок покажува.
Искрениот одговор за преглед на дизајн е листа на заеднички зависности: пристапно коло, горен провајдер, инсталација и секој уред што чува состојба на повратната патека. Сесија преку тунелот не може да отстрани зависност над која не седи.
Три одлуки што вреди да се одделат
Кога дизајнот ги меша овие, секој разговор за дефект оди во кругови. Прво одделете ги на хартија, потоа секоја поврзете ја со уредот што навистина ја спроведува.
| 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 |
Секој ред има различен сопственик. Првиот е преговор, вториот е конфигурација на вашите уреди, третиот е претежно туѓа мрежа. Барањето за промена што го именува редот што го допира е многу полесно да се одобри отколку она што вели BGP проблем.
Режими на дефект за кои вреди да се планира
Прифаќањето на збирната рута на партнер е најчестата самопредизвикана рана. Некој објавува краток агрегат за да ја поедностави размената, далечната страна го прифаќа, и сообраќајот за опсези што не се зад тунелот ја следи тунелот и умира. Филтрирајте на точно очекуваните префикси, или користете листа со префикси со точните граници, и никогаш не прифаќајте гол агрегат зашто тоа ја прави сесијата да изгледа уредна.
Времето на повлекување е второто. Откривањето зависи од таймерите за задржување, од BFD ако сте го вклучиле, од откривањето мртов партнер на тунелот и од тоа колку брзо далечната страна престанува да објавува. Постојните сесии се одделен проблем: новата рута може да обнови нови врски, додека воспоставените TCP сесии продолжуваат да користат застарени адреси, а stateful огнени ѕидови или NAT на патеката може да држат записи што веќе не се совпаѓаат. Ставете го закрепнувањето на апликацијата во критериумите за прифаќање наместо да претпоставувате дека промената на рутата уредува сето.
Третото е асиметријата на повратната патека. Сообраќајот може да пристигне преку тунелот и да се врати преку линк на провајдер што никогаш не бил наменет да го носи, што се покажува како еднонасочен звук, неуспешни ракувања или огнен ѕид што ги фрла одговорите. Проверете ги двете насоки одделно.
Што да се напише во договорот и како да се провери
Побарајте ги дозволените префикси писмено: кој е овластен да создава секој опсег, дали е дозволена стандардна рута и кои семејства на адреси ги поддржува тунелската услуга. RFC 8212 ја направи експлицитната политика за увоз и извоз очекување за eBGP во имплементациите што ја следат, затоа партнерот што уште се потпира на имплицитно прифаќање на сето вреди да се праша.
Потоа проверете од уредот, а не од дијаграмот. Корисни команди на рутери слични на FRR:
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
Додадете две набљудувања што рутерската табела не може да ви ги даде. Снимете на надворешниот интерфејс за да потврдите на која адреса инкапсулираните пакети навистина целат, на пример tcpdump -ni eth0 udp port 51820 за WireGuard тунел, или ESP филтер за IPsec. Потоа трасирајте кон јавната адреса на партнерот и споредете ги скоковите со трага внатре во тунелот; ако двете ја следат истата провајдерска верига, вашата резерва живее во маршрутната политика, а не во мрежата.
На крајот, намерно тестирајте повлекување. Спуштете го тунелот во сервисен прозорец, забележете колку долго префиксот останува инсталиран, што се случува со постојните сесии и дали далечната страна паѓа на рута што навистина би ја прифатиле. Таа вежба кажува повеќе за дизајнот отколку било кој дијаграм.
Рутата не е овластување. Префиксите за кои се договарате да ги разменувате не кажуваат ништо за тоа кои корисници можат да стигнат до која услуга зад тунелот, затоа чувајте ги автентикацијата, дозволените услуги и огнените ѕидови на домаќините точно таму каде што беа. Достапниот партнер исто така не е дозвола за неограничен транзит или за создавање произволни адреси, и таквиот вид овластување припаѓа на договорот како комерцијално прашање, а не на линија од BGP политиката.
- Именувајте ги префиксите што секоја страна може да ги создава и оние што никогаш не смее да ги прифати.
- Ограничете го MSS на тунелот и потврдете дека големите ажурирања навистина пристигнуваат.
- Наведете ги заедничките зависности на долниот слој, а не бројот на тунели.
- Измерете вистинско повлекување и забележете што прави апликацијата.