Du ejoj kunligas BGP trans IPsec-tunelo, lernas la prefiksojn de la alia, kaj la diagramo estas renomata al vojkontrolo. Ĝuste tiu etikedo estas kie la konfuzo komenciĝas. La sesio ja interŝanĝas atingeblon kaj ja aplikas politikon, sed ĝi havas neniun vorton pri tio, kiu provizanto, kablo aŭ enkursigilo portas la ĉifritajn pakaĵojn. Mi vidis teamon rekonstrui funkciantan tunelon ĉar ili atendis, ke ŝanĝo de BGP-vojo movus trafikon al alia fibra vojo, kiun la sesio neniam povis influi.

Kion homoj supozas, ke sesio aĉetas

Plejparto de la atendo venas de tio, kiel ŝanĝo de vojo aspektas en laboratorio. Vi anoncas prefikson trans la tunelo, la malproksima flanko instalas ĝin, kaj la trafiko moviĝas. La sama sinsekvo okazas sur enkursigilo, kiu ja havas regilojn por trafika inĝenierado, do la du aferoj konfuziĝas. En laboratorio ambaŭ ejoj kutime dividas unu alirigan ligilon, kaj ĝuste tial la diferenco neniam montriĝas tie.

BGP estas protokolo pri atingeblo. Ĝi diras al kunulo, ke vi povas liveri pakaĵojn por prefikso, kaj lasas al ĉiu flanko ordigi la proponojn, kiujn ĝi ricevas. Tio estas vere utila trans tunelo: prefiksoj aperas kaj malaperas dum ejoj venas kaj foriras, kaj vi povas rifuzi intervalon sen skribi statikan vojon sur ĉiu randa aparato. Kion ĝi ne faras, estas meti la enkursigilojn de provizanto sub vian kontrolon.

La suba tavolo portas la eksteran kaplinion. Via tunela finpunkto sendas ĉifritajn pakaĵojn al kunula adreso, kaj la reto inter tiuj du adresoj plusendas ilin per la vojoj, kiujn instalas ĝiaj operatoroj. Nenio en la BGP-sesio ŝanĝas tiun decidon, krom se la sama provizanto eksponas subtenatan servon, kiu faras tion.

Kion la sesio vere portas

La BGP-parolanto malfermas TCP-ligon al pordo 179 sur sia kunulo, uzante la mesaĝformatojn kaj vojajn atributojn difinitajn en RFC 4271. Kiam la kunula adreso troviĝas ene de la tunelo, la tunelo devas esti supren kaj tiu adreso atingebla antaŭ ol la sesio povas eĉ komenciĝi. Kompletigita IKE-interŝanĝo ne estas BGP-najbaro. IPsec-realigoj bazitaj sur vojoj pasigas trafikon nur post kiam ekzistas kongrua tunela vojo, kaj tiu bazita sur politiko bezonas la kunulan adreson ene de la protektita selektilo. Inversigi tion produktas la klasikan staton, en kiu la tunelo estas verda kaj la sesio sidas senokupa.

Post kiam la sesio estas supren, politiko decidas, kio trapasas ĝin. Prefikso-listoj, AS-vojaj filtriloj, supra limo por maksimumaj prefiksoj kaj eksplicita decido pri implicitaj vojoj estas la minimumo, kaj ili validas en ambaŭ direktoj. Kunulo, kiu akceptas ĉion, kion ĝi ricevas, povas doni al vi implicitan vojon, kiu silente anstataŭigas lokan interretan aliron. La du direktoj bezonas apartajn listojn, ĉar tio, kion vi akceptas de kunulo, kaj tio, kion vi anoncas al ĝi, estas malsamaj decidoj.

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

Poste mordas MTU. La enkapsuligo malgrandigas la uzeblan utilan ŝarĝon, do granda ĝisdatigo povas haltigi sesion, kiu aspektas perfekte establita: la kunulo restas supren, prefiksoj neniam alvenas, kaj nenio evidenta aperas en la protokolo. Limigu la TCP MSS sur la tunela interfaco, aŭ agordu tunelan MTU kun loko por la superkosto, antaŭ ol kulpigi la filtrilojn.

Kien la eksteraj pakaĵoj ankoraŭ iras

Ĉifritaj pakaĵoj de unu ejo al la alia eliras tra tio, kion la loka enkursigilo elektas por la publika adreso de la kunulo. Se ambaŭ ejoj aĉetas transiton de la sama provizanto, transiras la saman metropolan instalaĵon, aŭ unu flanko sidas malantaŭ NAT de portanto-nivelo, la tunelo postvivas provizantan misfunkcion nur hazarde. Nombri tunelajn ikonojn en monitora ilo diras al vi nenion pri tio.

Vojoelekto kaj instalo de plusendado ankaŭ estas apartaj okazaĵoj. Prefikso povas sidi en la BGP-tabelo kiel la plej bona kaj tamen manki en la plusenda tabelo, ĉar la sekva saltado estas nesolvebla aŭ pli specifa vojo venkas. Kiam iu raportas, ke BGP lernis la prefikson sed la trafiko ne fluas, la utila demando estas, ĉu ĝi estas instalita kaj al kiu sekva saltado ĝi montras.

La honesta respondo por dizajna revizio estas listo de komunaj dependoj: aliriga cirkvito, supra provizanto, instalaĵo, kaj ajna stata aparato sur la revena vojo. Sesio trans la tunelo ne povas forigi dependon, super kiu ĝi ne sidas.

Tri decidoj indaj je apartigo

Kiam dizajno miksas ĉi tion, ĉiu konversacio pri paneo iras en cirklojn. Unue apartigu ilin sur papero, poste mapu ĉiun al la aparato, kiu efektive plenumas ĝin.

DecisionWho controls itTypical failure
Which prefixes may cross the relationship?Both sides, through prefix and AS-path policy you configure deliberatelyA default route accepted by mistake, or a vague aggregate
Which overlay next hop wins?Local BGP selection plus next-hop resolution on your own routersPrefix learned, never installed in the forwarding table
Where do the encrypted packets travel?The underlay operators, unless a supported service adds real controlPath diversity that was never there

Ĉiu vico havas alian posedanton. La unua estas intertraktado, la dua estas agordo sur viaj aparatoj, la tria estas plejparte la reto de iu alia. Ŝanĝpeto, kiu nomas la vicon, kiun ĝi tuŝas, estas multe pli facile aprobebla ol tiu, kiu diras BGP-problemo.

Misfunkciaj reĝimoj indaj je planado

Akcepti la resuman vojon de kunulo estas la plej ofta memfarita vundo. Iu anoncas mallongan agregaton por simpligi la interŝanĝon, la malproksima flanko akceptas ĝin, kaj trafiko por intervaloj, kiuj ne estas malantaŭ la tunelo, sekvas la tunelon kaj mortas. Filtru laŭ la precize atenditaj prefiksoj, aŭ uzu prefikso-liston kun la ĝustaj limoj, kaj neniam akceptu nudan agregaton ĉar ĝi igas la sesion aspekti ordema.

La tempo de retiriĝo estas la dua. Detekto dependas de tenaj tempigiloj, BFD se vi ŝaltis ĝin, detekto de mortinta kunulo de la tunelo, kaj kiom rapide la malproksima flanko ĉesas anonci. Ekzistantaj sesioj estas aparta problemo: nova vojo povas restarigi novajn konektojn dum establitaj TCP-sesioj daŭre uzas kadukiĝintajn adresojn, kaj stataj fajroŝirmiloj aŭ NAT sur la vojo povas teni erojn, kiuj ne plu kongruas. Metu aplikaĵan reakiron en la akceptajn kriteriojn anstataŭ supozi, ke voja ŝanĝo solvas ĉion.

La tria estas malasimetrio de la revena vojo. Trafiko povas alveni trans la tunelo kaj reveni trans provizanta ligilo, kiu neniam estis destinita porti ĝin, kio montriĝas kiel unudirekta sono, malsukcesintaj manpremoj aŭ fajroŝirmilo, kiu faligas respondojn. Kontrolu ambaŭ direktojn aparte.

Kion skribi en la kontrakton, kaj kiel kontroli ĝin

Petu la permesitajn prefiksojn skribe: kiu rajtas originigi ĉiun intervalon, ĉu implicita vojo estas permesita, kaj kiujn adresajn familiojn la tunela servo subtenas. RFC 8212 igis eksplicitan importan kaj eksportan politikon la atendo por eBGP en realigoj, kiuj ĝin sekvas, do kunulo, kiu ankoraŭ apogas sin sur implicita akcepti-ĉion-konduto, indas demandon.

Poste kontrolu de la aparato anstataŭ de la diagramo. Utilaj komandoj sur FRR-similaj enkursigiloj:

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

Aldonu du observojn, kiujn la enkursiga tabelo ne povas doni al vi. Kaptu sur la ekstera interfaco por konfirmi, kiun adreson la enkapsuligitaj pakaĵoj efektive celas, ekzemple tcpdump -ni eth0 udp port 51820 por WireGuard-tunelo, aŭ ESP-filtrilon por IPsec. Poste spuru al la publika adreso de la kunulo kaj komparu la saltojn kun spuro ene de la tunelo; se ambaŭ sekvas la saman provizantan ĉenon, via redundo vivas en vojpolitiko kaj ne en la reto.

Fine, testu retiriĝon intence. Mallevu la tunelon dum bontenada fenestro, notu kiom longe la prefikso restas instalita, kio okazas al ekzistantaj sesioj, kaj ĉu la malproksima flanko falas al vojo, kiun vi vere akceptus. Tiu ekzerco diras pli pri la dizajno ol ajna diagramo.

Vojo ne estas rajtigo. La prefiksoj, kiujn vi interkonsentas interŝanĝi, diras nenion pri tio, kiuj uzantoj rajtas atingi kiun servon malantaŭ la tunelo, do tenu aŭtentikigon, permesitajn servojn kaj gastigantajn fajroŝirmilojn ĝuste tie, kie ili estis. Atingebla kunulo ankaŭ ne estas permeso por senlima transito aŭ por originigi arbitrajn adresojn, kaj tia speco de aŭtoritato apartenas al la kontrakto kiel komerca demando, ne al linio de BGP-politiko.

  • Nomu la prefiksojn, kiujn ĉiu flanko rajtas originigi, kaj tiujn, kiujn ĝi neniam rajtas akcepti.
  • Limigu MSS sur la tunelo kaj konfirmu, ke grandaj ĝisdatigoj efektive alvenas.
  • Listigu la komunajn dependojn de la suba tavolo, ne la nombron de tuneloj.
  • Tempu veran retiriĝon kaj notu, kion faras la aplikaĵo.

Rilataj artikoloj