Wêrom BGP oer in VPN jo ûnderlaachpaad net kontrolearret
BGP oer in VPN útwikselet berikberens en past rûtebelied ta, mar de ûnderlaach kiest noch altyd it bûtenste paad. Wat de sesje echt kontrolearret.
Twa sites peerje BGP oer in IPsec-tunnel, leare elkoars prefiksen, en it diagram wurdt omneamd ta paadkontrôle. Dat label is wêr’t de betizing begjint. De sesje útwikselet wol berikberens en past wol belied ta, mar hy hat gjin sizzen oer hokker provider, kabel of router de fersifere pakketten draacht. Ik haw in team in wurkjende tunnel wer opbouwe sjoen, om’t se ferwachten dat in BGP-rûtferoaring it ferkear nei in oar glêsfezelpaad ferpleatse soe dat de sesje nea beynfloedzje koe.
Wat minsken tinke dat in sesje keapet
It measte fan ’e ferwachting komt fan hoe’t in rûtferoaring yn in laboratoarium derút sjocht. Jo kundigje in prefiks oer de tunnel oan, de fiere kant ynstallearret it, en it ferkear beweecht. Deselde folchoarder bart op in router dy’t wol knoppen foar ferkearsengineering hat, sadat de beide trochinoar helle wurde. Yn it laboratoarium diele beide sites meastentiids ien tagongskeppeling, en dêrom krekt is it ferskil dêr nea te sjen.
BGP is in berikberensprotokol. It fertelt in peer dat jo pakketten foar in prefiks leverje kinne en lit elke kant de oanbiedingen oardelje dy’t er krijt. Dat is echt nuttich oer in tunnel: prefiksen ferskine en ferdwine wylst sites komme en gean, en jo kinne in berik wegerje sûnder op elk râne-apparaat in statyske rûte te skriuwen. Wat it net docht, is de routers fan in provider ûnder jo kontrôle bringe.
De ûnderlaach draacht de bûtenste kop. Jo tunel-einpunt stjoert fersifere pakketten nei in peer-adres, en it netwurk tusken dy twa adressen stjoert se troch mei de rûtes dy’t syn operators ynstallearre hawwe. Neat yn ’e BGP-sesje feroaret dy beslissing, útsein as deselde provider in stipe tsjinst oanbiedt dy’t dat docht.
Wat de sesje echt draacht
De BGP-sprekker iepenet in TCP-ferbining nei poarte 179 op syn peer, mei de berjochtformaten en paadattributen dy’t yn RFC 4271 definiearre binne. As it peer-adres binnen de tunnel leit, moat de tunnel omheech wêze en dat adres berikber wêze foar’t de sesje sels begjinne kin. In foltôge IKE-útwikseling is gjin BGP-buorman. Rûtebasearre IPsec-ymplemintaasjes litte ferkear pas troch as der in bypassende tunelrûte bestiet, en in beliedsbasearre ien hat it peer-adres binnen de beskerme selektor nedich. Dit omdraaie jout de klassike tastân wêryn’t de tunnel grien is en de sesje ledich stiet.
Ienris de sesje omheech is, beslút belied wat him krúst. Prefikslêsten, AS-paadfilters, in maksimum prefiksplafond en in eksplisite beslissing oer standertrûtes binne it minimum, en se jilde yn beide rjochtingen. In peer dy’t alles akseptearret wat er krijt, kin jo in standertrûte jaan dy’t lokale ynternettagong stil ferfangt. De twa rjochtingen hawwe aparte lêsten nedich, om’t wat jo fan in peer akseptearje en wat jo him oankundigje ferskate beslissingen binne.
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
Dêrnei byt MTU. De ynkapseling krimpt de brûkbere lading, sadat in grutte fernijing in sesje fêstsette kin dy’t folslein fêstige liket: de peer bliuwt omheech, prefiksen komme nea oan, en neat fanselssprekkends bedarret yn it log. Behein de TCP MSS op ’e tunelinterface, of set in tunel-MTU mei romte foar de overhead, foar’t jo de filters de skuld jouwe.
Wêr’t de bûtenste pakketten noch hinne geane
Fersifere pakketten fan it iene nei it oare site ferlitte fia wat de lokale router foar it iepenbiere adres fan ’e peer kiest. As beide sites transit by deselde provider keapje, deselde metro-foarsjenning kruse, of ien kant efter carrier-grade NAT sit, oerlibbet de tunnel in providerstoring allinnich by tafal. Tunelikoanen telle yn in monitoringsark fertelt jo dêr neat oer.
Rûteseleksje en it ynstallearjen fan trochstjoering binne ek aparte barren. In prefiks kin as de bêste yn ’e BGP-tabel stean en dochs yn ’e trochstjoertabel misse, om’t de folgjende hop net oplosber is of in mear spesifike rûte wint. As immen rapportearret dat BGP it prefiks leard hat mar it ferkear net streamt, is de nuttige fraach oft it ynstallearre is en nei hokker folgjende hop it wiist.
It earlike antwurd foar in ûntwerprevisy is in list fan dielde ôfhinklikheden: tagongssirkwy, upstream-provider, foarsjenning en elk steatich apparaat op ’e weromreis. In sesje oer de tunnel kin in ôfhinklikheid net fuorthelje dêr’t er net boppe sit.
Trije beslissingen dy’t it wurdich binne om te skieden
As in ûntwerp dizze trochinoar hellet, giet elk steuringsoerlis yn rûnten. Skied se earst op papier, en ferbyldzje dan elk oan it apparaat dat it echt hanthavent.
| 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 |
Elke rige hat in oare eigner. De earste is in ûnderhanneling, de twadde is konfiguraasje op jo apparaten, de tredde is meastentiids it netwurk fan in oar. In wizigingsfersyk dat de rige neamt dy’t it rekket, is folle makliker goed te keuren as ien dat BGP-probleem seit.
Steuringstastannen dy’t it wurdich binne om foar te plannen
It summary-rûte fan in peer akseptearje is de meast foarkommende sels tabrochte wûne. Immen kundiget in koart aggregaat oan om ’e útwikseling te ferienfâldigjen, de fiere kant akseptearret it, en ferkear foar berikken dy’t net efter de tunnel lizze folget de tunnel en stjert. Filterje op ’e krekt ferwachte prefiksen, of brûk in prefikslêst mei de juste grinzen, en akseptearje nea in keale aggregaat om’t it de sesje skoan liket.
De tiid fan weromlûken is de twadde. Deteksje hinget ôf fan hold-timers, BFD as jo dat ynskeakele hawwe, dead-peer-deteksje fan ’e tunnel en hoe fluch de fiere kant ophâldt mei oankundigjen. Besteande sesjes binne in apart probleem: in nije rûte kin nije ferbinings werstelle wylst fêstige TCP-sesjes ferâldere adressen bliuwe brûken, en steatige firewalls of NAT op it paad kinne ynskriuwingen hâlde dy’t net mear passe. Set applikaasje-herstel yn ’e akseptkritearia ynstee fan oan te nimmen dat in rûtferoaring alles regelet.
De tredde is asymmetry fan it werompaad. Ferkear kin oer de tunnel oankomme en weromkeare oer in providerkeppeling dy’t nea bedoeld wie om it te dragen, wat him sjen lit as ienrjochtingsaudio, mislearre hânskoddingen of in firewall dy’t antwurden falle lit. Kontrolearje beide rjochtingen apart.
Wat yn it kontrakt te skriuwen, en hoe’t it te ferifiearjen
Freegje de tastiene prefiksen skriftlik: wa’t foech hat om elk berik te originen, oft in standertrûte tastien is en hokker adresfamyljes de tuneltsjinst stipet. RFC 8212 makke eksplisyt ymport- en eksportbelied de ferwachting foar eBGP yn ymplemintaasjes dy’t it folgje, dus in peer dy’t noch op ymplisyt akseptearje-alles-gedrach fertrout, is it freegjen wurdich.
Ferifiearje dan fan it apparaat ôf ynstee fan it diagram. Nuttige opdrachten op FRR-tige routers:
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
Foegje twa waarnimmings ta dy’t de rûte-tabel jo net jaan kin. Fange op ’e bûtenste interface om te befêstigjen hokker adres de ynkapsle pakketten echt rjochtsje, bygelyks tcpdump -ni eth0 udp port 51820 foar in WireGuard-tunnel, of in ESP-filter foar IPsec. Folgje dan nei it iepenbiere adres fan ’e peer en ferlykje de hops mei in spoar binnen de tunnel; as beide deselde providerkeatling folgje, libbet jo oerstallichheid yn rûtebelied ynstee fan yn it netwurk.
Test op ’t lêst mei opset in weromlûken. Bring de tunnel del yn in ûnderhâldsfinsters, skriuw op hoe lang’t it prefiks ynstallearre bliuwt, wat der mei besteande sesjes bart en oft de fiere kant weromfalt op in rûte dy’t jo echt akseptearje soene. Dy oefening seit mear oer it ûntwerp as hokker diagram ek.
In rûte is gjin autorisaasje. De prefiksen dy’t jo ôfsprekke te útwikseljen sizze neat oer hokker brûkers hokker tsjinst efter de tunnel berikke meie, dus hâld autentikaasje, tastiene tsjinsten en host-firewalls krekt dêr’t se wiene. In berikbere peer is ek gjin tastimming foar ûnbeheind transit of foar it originen fan willekeurige adressen, en dat soarte foech heart yn it kontrakt as kommersjele fraach, net yn in BGP-beliedsregel.
- Neam de prefiksen dy’t elke kant originen meie, en dy’t er nea akseptearje mei.
- Behein MSS op ’e tunnel en befêstigje dat grutte fernijingen echt oankomme.
- List de dielde ûnderlaach-ôfhinklikheden op, net it tal tunnels.
- Mjit in echt weromlûken en skriuw op wat de applikaasje docht.