Le seguenti 244 parole non sono state trovate nel dizionario di 1275 termini (includendo 1275 LocalSpellingWords) e sono evidenziate qui sotto:
accede   activate   address   Address   aggiungiamo   aggregato   allora   alternativa   altrimenti   altro   annunci   annuncio   anycast   Architecture   architettura   arrivano   assegnare   Assegnarsi   assolta   at   attuare   avere   azzerarlo   Bgp   bgp   bgpd   bisogna   blog   bordo   branch   bypass   cartelle   cat   Client   client   collegarsi   compilandolo   Compile   comunicano   conf   config   configurare   Configurare   Configure   Connect   consolle   contattare   creare   Creare   dall   delegare   dell   description   dev   dietro   direttamente   Document   done   dot   dovremmo   echo   ena   enable   endpoint   enter   entrano   esce   eseguendo   esempio   essi   esterno   etc   exit   fa   facciamo   family   file   filter   Filter   fino   forwarding   forzando   full   funzione   Gestione   gira   github   guida   hop   hostname   hosts   id   Id   inbound   Indirizzi   iniziare   inoltrato   inserendo   inserisca   instradare   interfacce   interno   ip   ipv4   ipv6   lanciare   leggere   line   local   log   logfile   loro   macchina   mano   map   mesh   mettere   mionome   Mode   modo   My   my   myaddress   myenablepassword   myhostname   mymask   mypassword   mysubnet   Name   namex   necessario   neighbor   nell   net   network   next   nostro   Note   olsr   openwrt   partire   passa   password   Path   pdf   peering   permanente   permit   pid   pidfile   piu   plugin   poi   politiche   posto   proc   protocol   provenienti   pubblico   Quagga   quagga   qualche   quest   rc   reboot   reconfiguration   Reflector   reflector   remote   renderla   Reverse   ricevono   richiedendolo   riga   righe   Roma   rotta   rotte   route   Route   router   Router   Routing   routing   rp   run   sbin   scaricandolo   scaricare   scompare   security   self   sessione   set   setup   siano   sito   soft   sorgente   sottoreti   spedire   src   statica   stdout   sull   suoi   switch   sys   Tabella   tabella   tap0   Tinc   tinc   tincd   to   To   tocca   traffico   trasmettono   trasportare   tunnel   ultime   ultimo   up   uploads   usa   usare   Usare   uscita   usr   utente   va   var   Vedi   Verifichiamo   Version0   via   vicino   virtual   volessimo   vpn   vty   wp   zebra  

Nascondi questo messaggio
Italiano English
Modifica History Actions

RouterBgpRouteReflectorClient

Router Bgp Route Reflector Client

Come è possibile leggere nella guida sull'architettura di rete i router BGP che comunicano verso l'esterno sono tra di loro in configurazione full-mesh: essi ricevono e trasmettono da e ai peering le sottoreti. Se dall'interno della rete (che come IGP usa OLSR) volessimo contattare direttamente la rete dei BGP per trasportare un indirizzo pubblico e attuare politiche di routing verso l'esterno dovremmo mettere un router BGP interno (IBGP) che riceve solo gli annunci provenienti da tutti i BGP di bordo e delegare l'annuncio dell'aggregato ad uno di essi. Questa funzione è assolta dal Route Reflector Server che altro non fa che spedire la full-route a tutti i suoi client che a questo punto possono instradare il loro traffico verso il router di bordo più opportuno. Quindi prima di iniziare la configurazione è necessario avere:

  • Un indirizzo pubblico della rete Ninux richiedendolo a contatti(at)ninux(dot)org.
  • Assegnarsi un indirizzo Tabella Rete BGP 10.6.6.0/24 su Gestione Indirizzi

TincVPN setup to enter the BGP virtual network

Installare Tinc versione 1.0.23 scaricandolo dal sito www.tinc-vpn.org e compilandolo.

#cd <directory di tinc scompattato>
#./configure
#make
#make install

Configurare tinc per collegarsi a uno dei router BGP

/usr/local/etc/tinc/tinc.conf

Name = mionome
ConnectTo = namex
Mode = switch

creare la directory /usr/local/etc/tinc/hosts

creare il file namex in /usr/local/etc/tinc/hosts

Address = 10.185.0.1 

creare il file tinc-up in /usr/local/etc/tinc

ip link set dev tap0 up
ip a a dev tap0 10.6.6.X/24 

generare hosts/mionome eseguendo il comando:

#tincd -K

A questo punto facciamo partire la sessione Tinc

/usr/local/sbin/tincd --bypass-security --pidfile=/var/run/tinc.pid --logfile=/var/log/tinc.log

Vedi BIRD#BGP route reflector client per usare BIRD al posto di Quagga.

Compile quagga

scaricare quagga dal github di ninux branch openwrt.0.99.21

eseguire

# bootstrap.sh
# ./configure --localstatedir=/var/run/quagga
# make
# make install

Creare l'utente quagga e le cartelle log

#adduser --no-create-home --disabled-login --disabled-password quagga
#mkdir /var/log/quagga
#chown quagga:quagga /var/log/quagga
#mkdir /var/run/quagga
#chown quagga:quagga /var/run/quagga

Attenzione: la directory /var/run/quagga scompare al reboot quindi è necessario mettere le ultime due righe in rc.local

Configure quagga

/etc/quagga/zebra.conf

hostname myhostname
password mypassword
enable password myenablepassword
ip forwarding
ipv6 forwarding
log file /var/log/quagga/zebra.log

/etc/quagga/bgpd.conf

hostname myhostname
password password mypassword
enable myenablepassword
log stdout
line vty

router bgp 197835
 bgp router-id 10.6.6.X_myID
 network mysubnet/mymask
 neighbor 10.6.6.1 remote-as 197835
 neighbor 10.6.6.1 description RouteReflector
 neighbor 10.6.6.1 next-hop-self
 neighbor 10.6.6.1 soft-reconfiguration inbound


 address-family ipv6
 network myaddress/mymask
 neighbor 10.6.6.1 activate
 neighbor 10.6.6.1 next-hop-self
 neighbor 10.6.6.1 soft-reconfiguration inbound
 exit-address-family

line vty

Per lanciare il tutto lanciare a mano prima zebra e poi bgpd

zebra -d -f /etc/quagga/zebra.conf -i /var/run/quagga/zebra.pid
bgpd -d -f /etc/quagga/bgpd.conf -i /var/run/quagga/bgpd.pid

Configurare il peering con il nostro client sul Router Reflector da consolle:

> ena
# configure t
(config)# router bgp 197835
(config)# neighbor 10.6.6.X_MyId  remote-as 197835
(config)# neighbor 10.6.6.X_MyId description mionome
(config)# neighbor 10.6.6.X_MyId next-hop-self
(config)# neighbor 10.6.6.X_MyId soft-reconfiguration inbound
(config)# neighbor 10.6.6.X_MyId route-map IBGP in
(config)# neighbor 10.6.6.X_MyId route-reflector-client

Se la macchina che avrà l'ip pubblico è quella su cui gira il server BGP allora occorre assegnare l'ip pubblico ad una delle interfacce (per esempio quella del tunnel):

# ip a a <your public ip> dev bgp_niniux

facciamo in modo che zebra inserisca le rotte nella tabella di routing forzando come ip sorgente quello pubblico, in zebra.conf aggiungiamo:

route-map PUBLIC_NINUX permit 10
set src <IP PUBBLICO>
ip protocol bgp route-map PUBLIC_NINUX

Verifichiamo tutti gli rp_filter siano a 0.

# for i in ./*/rp_filter; do
> cat $i
> done

Se c'è qualche 1 allora nell'rc.local tocca azzerarlo inserendo la riga.

echo 0 > /proc/sys/net/ipv4/conf/<NOME DELL'INTERFACCIA>/rp_filter

Se la macchina che fa da BGP accede a gli annunci OLSR allora bisogna configurare il plugin olsr per quagga, altrimenti se il BGP è dietro un router OLSR, su quest'ultimo aggiungiamo la rotta statica (in rc.local per renderla permanente al reboot):

ip r a t 110 <IP_PUBBLICO>/32 via <IP LAN DEL BGP>

Note

Usare un router iBGP e' un'alternativa ad usare i tunnel GRE anycast per il traffico in uscita:

In caso di tunnel GRE anycast:

  • i pacchetti arrivano fino all'endpoint GRE piu' vicino
  • entrano nella VPN iBGP
  • se il router BGP di uscita e' quello vicino all'endpoint, il traffico esce
  • altrimenti il traffico viene inoltrato tramite la VPN iBGP al router BGP di uscita

In caso di router iBGP:

  • il traffico passa nella VPN iBGP e va direttamente al router BGP di uscita