La funzione BGP di Vultr ti consente di portare il tuo spazio IP personale e utilizzarlo in una qualsiasi delle nostre sedi.
Iniziare
Per utilizzare BGP, devi:
- Un'istanza del server Vultr distribuito.
- Il tuo spazio IP (v4 o v6). Se hai il tuo ASN, puoi usarlo o possiamo assegnarne uno privato.
Se stai pubblicizzando un prefisso IPv4, l'istanza del server deve avere un indirizzo IPv4 assegnato automaticamente da Vultr. Se stai pubblicizzando un prefisso IPv6, l'istanza del server deve avere indirizzi IPv4 e IPv6 assegnati automaticamente da Vultr.
Si prega di compilare il modulo di configurazione BGP per iniziare. Assicurati di verificare la proprietà del tuo ASN e subnet (s) per evitare ritardi.
Una volta che questo è stato configurato sul tuo account, puoi procedere con la configurazione di BGP.
Impostazione BGP
Nota: se stai per configurare un'istanza che è stata distribuita prima che BGP fosse configurato sul tuo account, dovrai riavviarlo tramite il pannello di controllo. BGP non funzionerà su nessuna istanza esistente fino a quando non saranno stati riavviati (il riavvio tramite SSH non è sufficiente).
Si consiglia di utilizzare BIRD come demone BGP (ma è possibile utilizzare qualsiasi demone BGP desiderato). La maggior parte dei sistemi operativi ha un pacchetto disponibile per questo.
I nostri esempi assumeranno quanto segue:
- ASN: 64512
- IP dell'istanza :: 203.0.113.123
- Blocco IPv4: 198.51.100.0/24
- Password BGP: hunter2
Per confermare la connettività, impostiamo una sessione BGP senza annunciare alcun IP. Crea un /etc/bird.conffile con il seguente testo. Nota che su alcuni sistemi, come Ubuntu 16.04, questo sarà /etc/bird/bird.conf.
router id 203.0.113.123;
protocol bgp vultr
{
local as 64512;
source address 203.0.113.123;
import none;
export all;
graceful restart on;
multihop 2;
neighbor 169.254.169.254 as 64515;
password "hunter2";
}
Riavvia l'uccello e controlla lo stato della sessione:
[root@vultr ~]# birdc show proto all vultr
BIRD 1.4.5 ready.
name proto table state since info
vultr BGP master up 14:11:36 Established
Preference: 100
Input filter: REJECT
Output filter: (unnamed)
Routes: 0 imported, 581634 filtered, 1 exported, 0 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 581674 0 581674 0 0
Import withdraws: 2 0 --- 581675 0
Export updates: 1 0 0 --- 1
Export withdraws: 0 --- --- --- 0
BGP state: Established
Neighbor address: 169.254.169.254
Neighbor AS: 64515
Neighbor ID: 169.254.169.254
Neighbor caps: refresh restart-able AS4
Session: external multihop AS4
Source address: 203.0.113.123
Hold timer: 208/240
Keepalive timer: 57/80
Uno stato BGP di "Stabilito" significa che tutto funziona correttamente. Se non vedi uno stato di Stabilito, ecco alcune cose da provare:
- Hai riavviato tramite il pannello di controllo da quando il supporto ha impostato BGP sul tuo account?
- La porta BGP (TCP 179) è consentita attraverso il firewall?
- La tua password BGP è corretta? (Questo può essere verificato nel tuo pannello di controllo, ogni abbonamento ha una scheda BGP che elenca i dettagli)
- Stai utilizzando l'IP principale della tua istanza? (Non è possibile utilizzare altro che l'IP principale di un'istanza con BGP)
Note di FreeBSD
La configurazione predefinita di FreeBSD non funzionerà con BGP. Per poter effettivamente utilizzare BGP su FreeBSD, dovrai fare alcune cose:
1) Ricompila il kernel con queste opzioni aggiuntive abilitate:
device crypto
options IPSEC
options TCP_SIGNATURE
2) Configurare la scheda di rete con un IP statico.
3) Aggiorna ipsec.conf con la password BGP:
add 203.0.113.123 169.254.169.254 tcp 0x1000 -A tcp-md5 "hunter2";
add 169.254.169.254 203.0.113.123 tcp 0x1000 -A tcp-md5 "hunter2";
Percorsi di annuncio
Una volta che hai una sessione BGP funzionante, il passo successivo è iniziare a annunciare alcuni percorsi. Affinché lo spazio degli indirizzi sia visibile su Internet, è necessario annunciare almeno un / 24 (o / 48 per IPv6).
Il modo più semplice per iniziare è aggiungere un percorso statico alla tua configurazione BIRD, come ad esempio:
protocol static
{
route 198.51.100.0/24 via 203.0.113.123;
}
protocol device
{
scan time 5;
}
Il blocco "protocollo dispositivo" consente a BIRD di raccogliere informazioni sugli adattatori di rete collegati all'istanza. Senza di essa, i percorsi statici non verranno visualizzati.
Ricarica BIRD, quindi verifica che il percorso funzioni correttamente:
[root@vultr ~]# birdc show route
BIRD 1.4.5 ready.
198.51.100.0/24 via 203.0.113.123 on eth0 [static1 14:22:12] * (200)
A questo punto, il traffico per la tua sottorete dovrebbe ora fluire verso la tua istanza. Non sarai in grado di eseguire il ping di alcun IP fino a quando non sono configurati nel tuo sistema operativo. Un modo per verificarlo sarebbe usare tcpdump, 'tcpdump -i eth0 -n net 198.51.100.0/24'.
Configurazione IP
Una configurazione comune che vediamo è l'utilizzo di singoli indirizzi IP in istanze diverse. Ciò è possibile, sebbene ogni istanza debba eseguire il proprio server BGP.
Per fare questo, annunceremo / 32 rotte da singole istanze, oltre alla copertura / 24. Potremmo farlo con route statiche, ma consigliamo invece di utilizzare interfacce fittizie. Useremo 198.51.100.100 come IP che vogliamo instradare.
Configuralo su un'interfaccia:
# ip link add dev dummy1 type dummy
# ip link set dummy1 up
# ip addr add dev dummy1 198.51.100.100/32
Conferma che questo è stato configurato correttamente:
# ip addr show dev dummy1
5: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether ba:23:57:2c:ad:bc brd ff:ff:ff:ff:ff:ff
inet 198.51.100.100/32 scope global dummy1
Nota: consultare la documentazione del proprio sistema operativo per determinare come configurare questa interfaccia per l'avvio.
Ora configureremo BIRD per la ricerca di eventuali interfacce fittizie e annunceremo tutti gli IP che trova su di esse. Aggiungi quanto segue alla tua configurazione BIRD e ricarica BIRD:
protocol direct
{
interface "dummy*";
import all;
}
Verifica che BIRD abbia annunciato il percorso:
[root@vultr ~]# birdc show route
BIRD 1.4.5 ready.
198.51.100.0/24 via 203.0.113.123 on eth0 [static1 14:22:12] * (200)
198.51.100.100/32 dev dummy1 [direct1 14:36:56] * (240)
Puoi ripetere questo processo su altre istanze con altri IP. Quello che succede è che i nostri router useranno il percorso più specifico che hanno per un determinato indirizzo IP. Quando c'è un / 24 e / 32, il / 32 è il percorso più specifico, quindi qualsiasi traffico per quell'IP seguirà quel percorso.
Puoi avere più istanze che annunciano lo stesso / 32. Questo ti darebbe alta disponibilità (se una qualsiasi istanza fallisse, i suoi percorsi scomparirebbero e il traffico verrebbe eseguito il failover sull'altra istanza).
Le nostre sedi non sono collegate, pertanto è necessario assicurarsi di annunciare un / 24 (o IPv6 / 48) da ciascuna posizione in cui si desidera utilizzare gli IP. Non è possibile utilizzare uno / 24 per assegnare IP per più posizioni a meno che non si stia tentando di configurare una rete anycast.
Alcune delle nostre sedi supportano ECMP, nel qual caso il traffico verrà distribuito casualmente tra un massimo di 8 istanze che annunciano lo stesso IP. Le posizioni che attualmente supportano ECMP sono:
- New Jersey
- Chicago
- Dallas
- Atlanta
- Tokyo
- Singapore
- Los Angeles
- Miami
- Silicon Valley
- Parigi
- Londra
Documenti correlati
Appunti
Per BIRD 1.5 e versioni successive, potrebbe essere necessario modificare la routesintassi delle linee da:
route 198.51.100.0/24 via 203.0.113.123;
per:
route 198.51.100.0/24 via "203.0.113.123";
** Risoluzione dei problemi **
I nostri sistemi richiedono l'autenticazione TCP MD5 per stabilire la connessione. Ciò significa che non è possibile testare la connettività utilizzando qualcosa come telnet. In genere consigliamo di guardare il traffico con tcpdump per risolvere i problemi di connettività.