SecureNET Systems
    Sari la conținutul principal

    Issue No. 31 · APRIL 30, 2026 · NETWORKING

    Configurare BGP pe MikroTik RouterOS 7 - Ghid Pas cu Pas

    Tutorial tehnic complet pentru configurare BGP pe MikroTik RouterOS 7: comenzi reale, exemple de configuratie, eBGP/iBGP, route filtering si troubleshooting.

    By Mihai Gavrilas · 16 min read
    Back · Editorial
    ~16 min remaining
    Configurare BGP pe MikroTik RouterOS 7 - Ghid Pas cu Pas - ilustrație articol categoria Networking

    BGP (Border Gateway Protocol) este protocolul care face Internetul sa functioneze. In 2026, configurarea BGP pe MikroTik RouterOS 7 este accesibila oricarui administrator de retea care intelege concepte de routing IP, dar sintaxa s-a schimbat fundamental fata de RouterOS 6.x. Articolul de fata acopera configurarea completa BGP pe RouterOS 7.16+, cu exemple reale din deployment-uri SecureNET Systems si troubleshooting al erorilor frecvente.

    Prerequisite

    Inainte de a configura BGP, asigura-te ca:

    1. Routerul are RouterOS 7.13 sau mai nou (recomandam 7.16.x stable din aprilie 2026)

    2. Ai un AS Number alocat de RIPE NCC (sau privat, in range 64512-65535)

    3. Cunosti AS-ul peer-ului si IP-ul interfetei BGP

    4. Ai prefixe IPv4 sau IPv6 alocate care vor fi anuntate

    5. Routerul are interfata loopback configurata (recomandare strong) pentru BGP router-id

    Pentru un IMM cu un singur ISP, BGP nu e necesar. Pentru multi-homing cu doi ISP-uri sau pentru anuntarea unui prefix /24 propriu, BGP devine obligatoriu.

    Conceptele de baza

    Tipuri de sesiuni BGP

    eBGP (External BGP): sesiune intre doua AS-uri diferite. TTL implicit 1, deci routerele trebuie sa fie direct conectate (sau configurat multihop explicit).

    iBGP (Internal BGP): sesiune intre routere in acelasi AS. Toate routerele iBGP trebuie sa fie full mesh (sau folosit route reflector / confederation).

    Atribute BGP esentiale

    • AS_PATH: lista de AS-uri parcurse, folosita pentru loop prevention si selectie cale
    • LOCAL_PREF: preferinta locala (mai mare = preferat), valabil doar in iBGP
    • MED (Multi-Exit Discriminator): hint pentru AS-ul vecin, valoare mai mica = preferat
    • COMMUNITY: tag-uri 32-bit folosite pentru politici (export/import filtering)
    • NEXT_HOP: adresa IP catre care se trimit pachetele

    Selectia BGP best path (simplificat)

    1. Highest LOCAL_PREF (numai iBGP)

    2. Shortest AS_PATH

    3. Lowest origin (IGP < EGP < incomplete)

    4. Lowest MED (intre rute din acelasi AS vecin)

    5. eBGP > iBGP

    6. Lowest IGP metric catre next-hop

    7. Lowest router-id (tiebreaker final)

    Configurare eBGP cu un ISP - exemplu real

    Scenariu: AS65501 (clientul nostru) cu prefix 192.0.2.0/24 alocat RIPE, peering eBGP cu AS9999 (ISP), interfata WAN ether1 cu IP 203.0.113.2/30 (peer 203.0.113.1).

    Pasul 1: Configurare loopback si router-id

    Loopback este o interfata virtuala stabila, folosita ca router-id pentru BGP. Avantajul: daca o interfata fizica cade, sesiunea BGP nu se reseteaza.

    `/interface bridge add name=loopback

    /ip address add address=10.255.255.1/32 interface=loopback

    /routing/id add id=10.255.255.1 select-from=none`

    Pasul 2: Adaugare prefix care va fi anuntat

    `/ip address add address=192.0.2.1/24 interface=bridge-lan

    /ip route add dst-address=192.0.2.0/24 blackhole comment="BGP_NETWORK_ANUNTAT"`

    Comentariu important: ruta blackhole asigura ca prefix-ul este in tabela de rutare chiar daca nu este activ pe nicio interfata, ceea ce permite anuntarea lui prin BGP.

    Pasul 3: Configurare BGP connection

    `/routing/bgp/connection add \

    name=peer-isp-1 \

    remote.address=203.0.113.1 \

    remote.as=9999 \

    local.role=ebgp \

    local.address=203.0.113.2 \

    router-id=10.255.255.1 \

    output.network=bgp-networks \

    output.filter-chain=bgp-out \

    input.filter=bgp-in \

    hold-time=180 \

    keepalive-time=60 \

    disabled=no`

    Pasul 4: Definire networks care vor fi exportate

    In RouterOS 7.x, BGP networks se definesc ca lista de prefixe:

    /routing/bgp/network add network=192.0.2.0/24 synchronize=no

    Pasul 5: Filtre import/export (CRITICAL)

    Fara filtre, BGP poate accepta sau anunta orice. Filtrele protejeaza atat reteaua interna cat si Internetul.

    Filtru export (anuntam DOAR prefixul nostru, nimic altceva):

    `/routing/filter/rule add chain=bgp-out rule="if (dst==192.0.2.0/24) { accept }"

    /routing/filter/rule add chain=bgp-out rule="reject"`

    Filtru import (acceptam orice prefix valid IPv4, dar nu prefixe private/bogon):

    `/routing/filter/rule add chain=bgp-in rule="if (dst in 10.0.0.0/8 || dst in 172.16.0.0/12 || dst in 192.168.0.0/16) { reject }"

    /routing/filter/rule add chain=bgp-in rule="if (dst in 0.0.0.0/8 || dst in 127.0.0.0/8 || dst in 169.254.0.0/16) { reject }"

    /routing/filter/rule add chain=bgp-in rule="if (dst-len > 24) { reject }"

    /routing/filter/rule add chain=bgp-in rule="accept"`

    Pasul 6: Verificare sesiune

    /routing/bgp/session print

    Iesire asteptata cand sesiunea este Established:

    `Flags: E - established

    0 E name="peer-isp-1" remote.address=203.0.113.1 remote.as=9999

    local.address=203.0.113.2 local.as=65501 uptime=4h12m18s

    prefix-count=950824 messages.received=12482`

    Configurare iBGP intre routere interne

    Scenariu: doua routere CCR2004 in acelasi AS65501, conectate prin OSPF in interior, schimba prefixe externe primite de la ISP.

    Router R1 (10.255.255.1):

    `/routing/bgp/connection add \

    name=ibgp-r2 \

    remote.address=10.255.255.2 \

    remote.as=65501 \

    local.role=ibgp \

    local.address=10.255.255.1 \

    router-id=10.255.255.1 \

    hold-time=180 \

    next-hop-choice=force-self`

    Router R2 (10.255.255.2):

    `/routing/bgp/connection add \

    name=ibgp-r1 \

    remote.address=10.255.255.1 \

    remote.as=65501 \

    local.role=ibgp \

    local.address=10.255.255.2 \

    router-id=10.255.255.2 \

    hold-time=180 \

    next-hop-choice=force-self`

    Important: next-hop-choice=force-self face ca ruta sa fie ascunsa pentru OSPF si BGP next-hop sa fie acest router. Fara aceasta optiune, urmatorul router iBGP ar avea next-hop original eBGP, care e in afara AS-ului.

    Multi-homing - failover automat intre doi ISP-uri

    Scenariu real: client cu doi ISP-uri (ISP1 prin ether1, ISP2 prin ether2). Vrem trafic primar prin ISP1, failover automat catre ISP2 daca ISP1 cade.

    `/routing/bgp/connection add name=peer-isp-1 remote.address=203.0.113.1 remote.as=9999 \

    local.role=ebgp local.address=203.0.113.2 input.filter=isp1-in

    /routing/bgp/connection add name=peer-isp-2 remote.address=198.51.100.1 remote.as=8888 \

    local.role=ebgp local.address=198.51.100.2 input.filter=isp2-in`

    Filtru input ISP1 - prefer cu LOCAL_PREF mai mare:

    `/routing/filter/rule add chain=isp1-in rule="set bgp-local-pref 200; accept"

    /routing/filter/rule add chain=isp2-in rule="set bgp-local-pref 100; accept"`

    Pe export, anuntam prefixul nostru pe ambii ISP, dar prepend AS pe ISP2 pentru ca traficul de intrare sa vina prin ISP1:

    `/routing/filter/rule add chain=isp1-out rule="if (dst==192.0.2.0/24) { accept }"

    /routing/filter/rule add chain=isp2-out rule="if (dst==192.0.2.0/24) { set bgp-as-path-prepend 65501,65501,65501; accept }"`

    Cand ISP1 cade, sesiunea BGP cu peer-isp-1 se inchide in 30-180 secunde (in functie de hold-time + BFD), iar rutele primite de la ISP2 devin best path automat. Pentru failover sub-secunda, configureaza BFD:

    /routing/bfd/configuration add interfaces=ether1,ether2 min-rx=300ms min-tx=300ms multiplier=3

    Troubleshooting frecvent

    Sesiune ramane in Idle/Active/OpenSent

    Verifica:

    1. /routing/bgp/session print arata starea exacta

    2. Conectivitate IP catre peer: /ping 203.0.113.1 count=5

    3. TCP port 179 deschis: /tool fetch url=&quot;https://203.0.113.1:179&quot; check-certificate=no

    4. Firewall input nu blocheaza: adauga regula /ip firewall filter add chain=input action=accept protocol=tcp dst-port=179 src-address=203.0.113.1

    5. AS Number corect (verifica de doua ori la peer)

    6. MD5 password (daca e folosit) identic pe ambele capete

    Rute primite dar nu instalate in tabela de rutare

    Verifica:

    1. /routing/route/print where bgp-recv arata rutele primite

    2. /routing/route/print where active arata rutele active

    3. Filter import nu respinge: /routing/filter/rule print where chain=bgp-in

    4. Routing-id duplicat (extreme rar) - schimba pe unul din routere

    Prefix-ul nostru nu apare la peer

    Verifica:

    1. /routing/bgp/network print - prefixul este definit

    2. Ruta exista in tabela locala: /ip route print where dst-address=192.0.2.0/24

    3. Filter export accepta: testeaza cu /routing/filter/rule run-test ...

    Flapping permanent al sesiunii

    Cauze frecvente:

    • MTU mismatch pe legatura (verifica cu ping -s 1472 -M do pe Linux)
    • TCP MSS prea mare (seteaza /ip firewall mangle add chain=forward action=change-mss new-mss=1380 protocol=tcp tcp-flags=syn)
    • Rate-limiting pe ISP catre destinatie (rar, dar posibil)

    Best practices din productie

    1. Foloseste ALWAYS loopback ca router-id - nu IP-ul de pe interfata fizica

    2. Filtre import + export OBLIGATORII pe orice sesiune eBGP

    3. Maximum prefix limit pentru protectie: max-prefix-limit=1000000 pe sesiuni full table

    4. Activeaza BGP graceful restart pentru sesiuni stabile pe termen lung

    5. Foloseste BFD pentru failover sub-secunda intre ISP-uri

    6. Logging dedicat: /system logging add topics=bgp,info action=disk

    7. Backup config inainte de orice schimbare BGP majora: /system backup save name=before-bgp-change

    Comenzi de monitorizare zilnica

    `/routing/bgp/session print where state!=established

    /routing/bgp/peer print stats

    /routing/route/print count-only where bgp

    /log/print where topics~"bgp" interval=1h`

    Pentru retele complexe cu 3+ peers BGP, integrare cu monitorizare externa (Zabbix, LibreNMS, PRTG) este obligatorie. Vezi serviciul nostru de externalizare IT cu monitoring 24x7.

    Concluzie

    Configurarea BGP pe MikroTik RouterOS 7 este accesibila si robusta. Sintaxa noua /routing/bgp/connection este mai consistenta decat in versiunea 6.x si permite politici mai granulare. Pentru implementari de productie cu multi-homing si BGP full table, recomandam hardware CCR2004 minimum (4 GB RAM) sau CCR2116 pentru retele cu peste 2 ISP-uri.

    Securizarea sesiunii BGP cu MD5 si TTL Security

    In productie, sesiunile BGP nu trebuie lasate fara autentificare. Doua mecanisme complementare protejeaza sesiunea:

    MD5 password (RFC 2385) - parola partajata folosita pentru semnarea fiecarui segment TCP. Configurare in RouterOS 7:

    /routing/bgp/connection set [find name=peer-isp-1] tcp-md5-key=&quot;parola-foarte-puternica-32-caractere&quot;

    Aceeasi parola trebuie configurata pe peer. Schimbarea parolei necesita coordonare - resetare simultana sesiune.

    GTSM (Generalized TTL Security Mechanism, RFC 5082) - acceptare doar pachete cu TTL=255 (peer direct conectat). Previne atacuri spoofed BGP din retele indepartate.

    `/routing/bgp/connection set [find name=peer-isp-1] multihop=no

    /ip firewall filter add chain=input protocol=tcp dst-port=179 src-address=203.0.113.1 ttl=equal:255 action=accept

    /ip firewall filter add chain=input protocol=tcp dst-port=179 action=drop`

    RPKI validation pentru rute primite

    Resource Public Key Infrastructure (RPKI) permite verificarea criptografica ca un AS este autorizat sa anunte un anumit prefix. RouterOS 7.13+ suporta nativ RPKI prin RTR protocol catre validatori publici (Cloudflare, RIPE, ARIN).

    Configurare:

    `/routing/rpki add group=cloudflare-rpki address=rpki.cloudflare.com port=8282

    /routing/rpki add group=ripe-rpki address=rpki-validator.ripe.net port=8282`

    Apoi in filter chain pentru import BGP, respinge anunturile cu RPKI status invalid:

    `/routing/filter/rule add chain=bgp-in rule="if (rpki invalid) { reject }"

    /routing/filter/rule add chain=bgp-in rule="if (rpki valid) { set bgp-local-pref 250 }"

    /routing/filter/rule add chain=bgp-in rule="accept"`

    Cu RPKI activ, blochezi automat tentative de prefix hijacking - una din cele mai comune amenintari BGP din 2020 incoace.

    BGP Communities pentru policy granular

    Communities (RFC 1997) sunt tag-uri 32-bit pe care le poti atasa rutelor pentru a comunica intentii intre AS-uri. Folosire frecventa:

    • 65501:100 = ruta primita de la ISP1
    • 65501:200 = ruta primita de la ISP2
    • 65501:666 = ruta de blackhole-uit (RTBH)
    • 65501:999 = ruta confidentiala, no-export

    Setare communities pe import:

    /routing/filter/rule add chain=isp1-in rule=&quot;set bgp-communities 65501:100; accept&quot;

    Selectare rute prin community in alt filter:

    /routing/filter/rule add chain=bgp-out rule=&quot;if (bgp-communities includes 65501:999) { reject }&quot;

    Pentru retele cu 3+ ISP-uri si politici complexe (preferinta orar, customer routes vs peer routes vs transit), communities sunt indispensabile.

    Linkuri utile

    Vrei BGP configurat profesional pe reteaua firmei tale?

    SecureNET Systems implementeaza configurari BGP cu multi-homing, route policies, BFD si monitoring. Solicita consultanta gratuita.

    Distribuie:LinkedInX
    Contact prin WhatsApp