Router OpenBGPD BGP¶
Introduzione¶
Il Border Gateway Protocol (BGP) è il protocollo di routing che tiene insieme Internet. È il modo in cui è possibile visualizzare questo documento indipendentemente dal provider di servizi Internet.
OpenBGPD è l'implementazione BGP multipiattaforma di OpenBSD. L'autore lo utilizza personalmente sulla propria rete.
Prerequisiti¶
- Un server, una macchina virtuale o una rete di laboratorio con connettività BGP
 - Un numero AS dal Regional Internet Registry
 - Un blocco IPv4 o IPv6 di proprietà o noleggiato
 - Conoscenze nell'amministrazione di rete
 
Installarezione dei package¶
Poiché OpenBGPD non è presente nei repository predefiniti, installare prima il repository EPEL (Extra Packages for Enterprise Linux):
dnf install -y epel-release
Successivamente, installare OpenBGPD:
dnf install -y openbgpd
Configurazione di OpenBGPD¶
Iniziamo con una nuova configurazione di OpenBGPD:
rm /etc/bgpd.conf
touch /etc/bgpd.conf
chmod 0600 /etc/bgpd.conf
Quindi, aggiungere quanto segue a /etc/bgpd.conf:
AS YOUR_ASN
router-id YOUR_IPV4
listen on 127.0.0.1
listen on YOUR_IPV4
listen on ::1
listen on YOUR_IPV6
log updates
network IPV4_TO_ADVERTISE/MASK
network IPV6_TO_ADVERTISE/MASK
allow to ebgp prefix { IPV4_TO_ADVERTISE/MASK IPV6_TO_ADVERTISE/MASK }
neighbor PEER_IPV4 {
    remote-as               PEER_ASN
    announce IPv4           unicast
    announce IPv6           none
    local-address           YOUR_IPV4
}
neighbor PEER_IPV6 {
    remote-as               PEER_ASN
    announce IPv4           none
    announce IPv6           unicast
    local-address           YOUR_IPV6
}
Sostituire i seguenti parametri:
- YOUR_ASN con il vostro numero AS.
 - YOUR_IPV4 con l'indirizzo IPv4 del vostro server.
 - YOUR_IPV6 con l'indirizzo IPv6 del vostro server.
 - PEER_ASN con il numero AS del vostro ISP a monte.
 - PEER_IPV4 con l'indirizzo IPv4 del vostro ISP
 - PEER_IPV6 con l'indirizzo IPv6 del vostro ISP upstream.
 
Le righe precedenti significano quanto segue:
- La riga 
AScontiene il numero AS del BGP. - La riga 
router-idcontiene l'ID del router BGP. Si tratta di un indirizzo IPv4, ma può essere un indirizzo fittizio non instradabile (ad esempio 169.254.x.x) se si utilizza un BGP solo IPv6. - La riga 
listen onindica quali interfacce ascoltare. Dovremmo ascoltare tutte le interfacce che parlano di BGP. - Le righe 
networkaggiungono le reti che vogliamo pubblicizzare. - La riga 
allow to ebgp prefixaggiunge la conformità RFC8212 per la sicurezza del routing. Alcune società di hosting, come BuyVM, lo richiedono. - I blocchi 
neighborspecificano ogni peer IPv4 e IPv6. - La riga 
remote-asspecifica il numero AS dell'upstream. - La riga 
announce IPv4specifica se annunciare le rotte IPv4unicastonone. Dovrebbe esserenonesu un upstream IPv6. - La riga 
announce IPv6specifica se annunciare le rotte IPv6unicastonone. Dovrebbe esserenonesu un upstream IPv4. - La riga 
local-addressè l'indirizzo IPv4 o IPv6 dell'upstream. 
Alcuni upstream possono utilizzare una password MD5 o BGP multihop. In questo caso, i blocchi `neighbor' avranno l'aspetto seguente:
neighbor PEER_IPV4 {
    remote-as               PEER_ASN
    announce IPv4           unicast
    announce IPv6           none
    local-address           YOUR_IPV4
    multihop                2
    local-address           203.0.113.123
}
neighbor PEER_IPV6 {
    remote-as               PEER_ASN
    announce IPv4           none
    announce IPv6           unicast
    local-address           YOUR_IPV6
    multihop                2
    local-address           2001:DB8:1000::1
}
È necessario abilitare l'inoltro IP impostando i valori di sysctl:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Ora è necessario abilitare OpenBGPD e l'inoltro:
sysctl -p /etc/sysctl.conf
systemctl enable --now bgpd
Controllo dello stato di BGP¶
Una volta abilitato OpenBGPD, è possibile vedere lo stato di BGP:
bgpctl show
Verrà visualizzato il risultato:
Neighbor                   AS    MsgRcvd    MsgSent  OutQ Up/Down  State/PrfRcvd
BGP_PEER             PEER_ASN       164         68     0 00:32:04      0
È anche possibile vedere le rotte pubblicizzate da BGP:
bgpctl show rib
Se funziona correttamente, si dovrebbe vedere la tabella di routing BGP:
flags: * = Valid, > = Selected, I = via IBGP, A = Announced,
       S = Stale, E = Error
origin validation state: N = not-found, V = valid, ! = invalid
aspa validation state: ? = unknown, V = valid, ! = invalid
origin: i = IGP, e = EGP, ? = Incomplete
flags  vs destination          gateway          lpref   med aspath origin
AI*>  N-? YOUR_IPV4/24         0.0.0.0           100     0 i
AI*>  N-? YOUR_IPV6::/48       ::                100     0 i
Conclusione¶
Anche se inizialmente il BGP può sembrare scoraggiante, una volta acquisita la padronanza, è possibile ottenere una parte della tabella di routing di Internet. La semplicità di OpenBGPD rende ancora più facile avere un router software o un server anycast. Divertitevi!
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova