This shows you the differences between two versions of the page.
rl:labs:12:contents:02 [2014/01/09 16:47] razvan.deaconescu [02. [15p] Configurare server de PPPoE] |
rl:labs:12:contents:02 [2024/01/06 19:23] (current) vlad_iulius.nastase [02. [20p] Configurare eBGP] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 02. [15p] Configurare server de PPPoE ==== | + | ====== 02. [20p] Configurare eBGP ====== |
- | Pentru a putea autentifica stațiile ''red'', ''green'' și ''blue'' vom folosi stația ''host'' pe post de server de autentificare. Pentru acest lucru vom instala un server de PPPoE:<code bash> | + | Vom configura eBGP pe router-ul LOND. Vom exporta către IXP rețeaua noastră (''%%X.0.0.0/8%%'') și vom importa tot ce primim de la IXP. IXP-ul este configurat astfel încât să exporte toate rutele primite de la AS-urile vecine. Pentru conectarea la IXP vom folosi rețeaua ''%%180.22.0.0/24%%''. |
- | root@host:~# apt-get update | + | |
- | root@host:~# apt-get install pppoe | + | Pentru a activa și configura procesul de BGP al router-ului vom folosi comanda de mai jos: |
+ | <code> | ||
+ | LOND_router# configure terminal | ||
+ | LOND_router(config)# router bgp <X> | ||
+ | LOND_router(config-router)# | ||
</code> | </code> | ||
+ | unde ''%%<X>%%'' este numărul grupei/AS-ului. Observăm schimbarea prompt-ului, sugerând modul de configurare actual. | ||
- | <note important> | + | În general, avem opțiunea să configurăm un ''%%router-id%%''. Acest lucru poate influența criteriile de alegere a rutei în BGP. Pentru moment, nu e neapărat necesar, dar îl vom seta ca fiind IP-ul către IXP. Pe interfața ''%%ixp_22%%'' (către IXP) a router-ului ''%%LOND%%'' este deja configurată o adresă IP. Pentru a afla adresele IP de pe interfețe putem folosi comanda de mai jos: |
- | Încărcați modulul de kernel ''pppoe'' pe stația ''host'':<code bash> | + | |
- | root@host:~# modprobe pppoe | + | <code> |
+ | LOND_router# show interface brief | ||
+ | Interface Status VRF Addresses | ||
+ | --------- ------ --- --------- | ||
+ | dns_<X> up default 198.0.0.<X>/24 | ||
+ | ixp_22 up default 180.22.0.<X>/24 | ||
+ | lo up default <X>.151.0.1/24 | ||
+ | port_BERL up default <X>.0.2.2/24 | ||
+ | port_PARI up default <X>.0.1.1/24 | ||
+ | ssh up default 158.<X>.10.1/16 | ||
+ | |||
+ | LOND_router# | ||
+ | </code> | ||
+ | <note tip> | ||
+ | Pentru a folosi comenzi de tipul ''%%show%%'' fără a părăsi modul de configurare actual, acestea pot fi prefixate cu ''%%do%%''. | ||
+ | <code> | ||
+ | LOND_router(config-router)# do show interface brief | ||
+ | Interface Status VRF Addresses | ||
+ | --------- ------ --- --------- | ||
+ | dns_<X> up default 198.0.0.<X>/24 | ||
+ | ixp_22 up default 180.22.0.<X>/24 | ||
+ | lo up default <X>.151.0.1/24 | ||
+ | port_BERL up default <X>.0.2.2/24 | ||
+ | port_PARI up default <X>.0.1.1/24 | ||
+ | ssh up default 158.<X>.10.1/16 | ||
+ | |||
+ | LOND_router(config-router)# | ||
</code> | </code> | ||
- | În general, acest pas nu este necesar pentru că este realizat automat. În situația noastră însă, containerele nu pot încărca automat modulul pentru că nu au permisiuni de alterare a nucleului. De aceea încărcăm modulul de kernel în sistemul fizic și va fi ulterior prezent și în containere. | ||
</note> | </note> | ||
- | Configurarea serverului de PPPoE presupune, minimal, doi pași: | + | Pentru a seta ''%%router-id%%''-ul, vom folosi comanda ''%%bgp router-id A.B.C.D%%'', astfel: |
- | - configurarea credențialelor pentru fiecare client PPPoE (username și parolă) | + | <code> |
- | - configurarea spațiului de adrese IP disponibile clienților PPPoE | + | LOND_router(config-router)# bgp router-id 180.22.0.<X> |
- | Un client PPPoE este o stație ce solicită o adresă IP pentru conectare. | + | LOND_router(config-router)# |
+ | </code> | ||
- | În cazul PPP(oE) există două protocoale de autentificare: CHAP (//Challenge-Handshake Authentication Protocol// și PAP (//Password Authentication Protocol//). Întrucât CHAP este considerat mai sigur, vom folosi CHAP. | + | În continuare, va trebui să configurăm vecinul la care ne conectăm (IXP-ul). **Urmăriți [[https://docs.frrouting.org/en/latest/bgp.html#clicmd-neighbor-PEER-remote-as-ASN|documentația comenzii]] și configurați IXP-ul ca peer**. |
+ | <note tip> | ||
+ | **Hint** | ||
- | Configurarea credențialelor CHAP pentru clienții PPPoE este realizată în fișierul ''/etc/ppp/chap-secrets''. Vom configura parole și nume de utilizator simple, cu uz didactic, conținând chiar numele stațiilor. Într-un scenariu real, parolele vor fi complexe pentru a preveni ghicirea lor. Edităm fișierul ''/etc/ppp/chap-secrets'' cu parolele pentru conturile celor trei stații de tip container; acesta va avea în final forma de mai jos:<code bash> | + | IXP-ul este în AS-ul 22 și are adresa IP ''%%180.22.0.22%%''. |
- | root@host:~# cat /etc/ppp/chap-secrets | + | </note> |
- | # Secrets for authentication using CHAP | + | |
- | # client server secret IP addresses | + | În final, va trebui să configurăm rețeaua pe care vrem să o exportăm. **Urmăriți [[https://docs.frrouting.org/en/latest/bgp.html#clicmd-network-A.B.C.D-M|documentația comenzii]] pentru a exporta rețeaua ''%%<X>.0.0.0/8%%''**. |
- | red * red * | + | |
- | green * green * | + | Putem verifica starea procesului de BGP astfel: |
- | blue * blue * | + | <code> |
+ | LOND_router(config-router)# do show bgp summary | ||
+ | |||
+ | IPv4 Unicast Summary: | ||
+ | BGP router identifier 180.22.0.1, local AS number 1 vrf-id 0 | ||
+ | BGP table version 1 | ||
+ | RIB entries 1, using 192 bytes of memory | ||
+ | Peers 1, using 14 KiB of memory | ||
+ | |||
+ | Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt | ||
+ | 180.22.0.22 4 22 6 5 0 0 0 00:02:51 (Policy) (Policy) | ||
+ | |||
+ | Total number of neighbors 1 | ||
+ | LOND_router(config-router)# | ||
</code> | </code> | ||
+ | <note important> | ||
+ | Putem observa în dreptul coloanelor ''%%State/PfxRcd%%'' și ''%%PxfSnt%%'' textul ''%%(Policy)%%''. Acest lucru înseamnă că nu exportăm și nu importăm rute datorită lipsei filtrelor. **Urmăriți [[https://docs.frrouting.org/en/latest/bgp.html#clicmd-bgp-ebgp-requires-policy|documentația]] pentru a rezolva problema**. | ||
+ | |||
+ | **Hint** | ||
- | Cele patru coloane din cadrul fișierului ''/etc/ppp/chap-secrets'' reprezintă: | + | Pentru a anula efectul unei comenzi o putem prefixa cu ''%%no %%''. |
- | * prima coloană (''client'') este username-ul clientului (''red'', ''green'', ''blue''); | + | |
- | * a doua coloană (''server'') se referă la serverul PPP ce va fi folosi autentificarea (în cazul nostru am folosit ''*'', adică orice server, implicit și cel de PPPoE); | + | |
- | * a treia coloană (''secret'') este parola (''red'', ''green'', ''blue''); | + | |
- | * a patra coloană (''IP addresses'') se referă la adresele IP ce pot folosi aceste credențiale și este folosită în general în conexiuni VPN peste Internet (am folosit ''*'' întrucât în cazul PPPoE nu avem adresă IP sursă; este folosit direct protocolul Ethernet). | + | |
- | Pentru fiecare conexiune PPPoE dorim să alocăm automat adresele IP clienților. Serverul de PPPoE poate face acest lucru implicit fără a mai fi nevoie instalarea unui server de DHCP. Trebuie să definim spațiul de adrese IP în fișierul ''/etc/ppp/ipaddress_pool'' la fel ca mai jos:<code bash> | + | Pentru a reporni procesul de BGP putem folosi următoarea comandă: |
- | root@host:~# cat /etc/ppp/ipaddress_pool | + | <code> |
- | 192.168.0.2-5 | + | LOND_router# clear bgp * |
+ | LOND_router# | ||
</code> | </code> | ||
- | Modul în care definim spațiul de adrese IP este: prima adresă IP alocabilă urmată de caracterul ''-'' și limita superioară a ultimului octet. | + | </note> |
+ | |||
+ | Verificați iar starea procesului BGP. | ||
+ | <code> | ||
+ | LOND_router# show bgp summary | ||
+ | |||
+ | IPv4 Unicast Summary: | ||
+ | BGP router identifier 180.22.0.1, local AS number 1 vrf-id 0 | ||
+ | BGP table version 2 | ||
+ | RIB entries 3, using 576 bytes of memory | ||
+ | Peers 1, using 14 KiB of memory | ||
+ | |||
+ | Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt | ||
+ | 180.22.0.22 4 22 20 23 0 0 0 00:01:58 1 2 | ||
- | După configurarea credențialelor de autentificare și a spațiului de adrese, vom putea porni serverul de PPPoE și vom verifica pornirea sa:<code bash> | + | Total number of neighbors 1 |
- | root@host:~# pppoe-server -C isp -L 192.168.0.1 -p /etc/ppp/ipaddress_pool -I br0 -O /etc/ppp/options | + | LOND_router# |
- | root@host:~# ps -ef | grep pppoe-server | + | </code> |
- | root 10706 1 0 Dec29 ? 00:00:00 pppoe-server -C isp -L 192.168.0.1 -p /etc/ppp/ipaddress_pool -I br0 -O /etc/ppp/options | + | Verificați conectivitatea de pe router-ul ''%%LOND%%'' către un IP din AS 21 (este preconfigurat), sau către unul din IP-urile de pe router-ul ''%%LOND%%'' din AS-urile colegilor. |
+ | <code> | ||
+ | LOND_router# ping 21.0.2.2 | ||
+ | PING 21.0.2.2 (21.0.2.2) 56(84) bytes of data. | ||
+ | 64 bytes from 21.0.2.2: icmp_seq=1 ttl=64 time=10.3 ms | ||
+ | 64 bytes from 21.0.2.2: icmp_seq=2 ttl=64 time=4.14 ms | ||
+ | 64 bytes from 21.0.2.2: icmp_seq=3 ttl=64 time=4.13 ms | ||
+ | ^C | ||
+ | --- 21.0.2.2 ping statistics --- | ||
+ | 3 packets transmitted, 3 received, 0% packet loss, time 2003ms | ||
+ | rtt min/avg/max/mdev = 4.132/6.202/10.332/2.920 ms | ||
+ | LOND_router# | ||
</code> | </code> | ||
- | Semnificația parametrilor este după cum urmează: | ||
- | * ''-C isp'' - numele serverului PPPoE; | ||
- | * ''-L 192.168.0.1'' - adresa IP a serverului de PPPoE (cu aceasta adresă vor comunica stațiile de tip client); | ||
- | * ''-p /etc/ppp/ipaddress_pool'' - fișierul în care este specificat spațiul de adrese IP ce vor fi furnizate clienților; | ||
- | * ''-I br0'' - interfața pe care ascultă (în acest caz este interfața de tip bridge ''br0'', interfață la care sunt conectate toate containerele); | ||
- | * ''-O /etc/ppp/options'' - opțiunile serverului PPPoE; le vom folosi pe cele implicite. | ||
- | <note important> | + | Afișați tabela de rutare și observați noua intrare obținută prin BGP. |
- | Dacă, pe parcursul laboratorului, aveți probleme la configurarea PPPoE, este posibil să fie nevoie să reporniți serverul:<code bash> | + | <code> |
- | root@host:~# pkill -f pppoe-server | + | LOND_router# show ip route |
- | root@host:~# pppoe-server -C isp -L 192.168.0.1 -p /etc/ppp/ipaddress_pool -I br0 -O /etc/ppp/options | + | Codes: K - kernel route, C - connected, S - static, R - RIP, |
+ | O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, | ||
+ | T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, | ||
+ | F - PBR, f - OpenFabric, | ||
+ | > - selected route, * - FIB route, q - queued, r - rejected, b - backup | ||
+ | |||
+ | <...> | ||
+ | B>* 21.0.0.0/8 [20/0] via 180.22.0.21, ixp_22, weight 1, 00:05:57 | ||
+ | <...> | ||
+ | LOND_router# | ||
</code> | </code> | ||
- | </note> | + | |
+ | <hidden> | ||
+ | Pentru AS 2 | ||
+ | <code> | ||
+ | root@g2-proxy ~> ./goto.sh LOND router | ||
+ | Warning: Permanently added '158.2.10.1' (ECDSA) to the list of known hosts. | ||
+ | |||
+ | Hello, this is FRRouting (version 7.5.1). | ||
+ | Copyright 1996-2005 Kunihiro Ishiguro, et al. | ||
+ | |||
+ | LOND_router# configure terminal | ||
+ | LOND_router(config)# router bgp 2 | ||
+ | LOND_router(config-router)# bgp router-id 180.22.0.2 | ||
+ | LOND_router(config-router)# no bgp ebgp-requires-policy | ||
+ | LOND_router(config-router)# neighbor 180.22.0.22 remote-as 22 | ||
+ | LOND_router(config-router)# address-family ipv4 unicast | ||
+ | LOND_router(config-router-af)# network 2.0.0.0/8 | ||
+ | LOND_router(config-router-af)# neighbor 180.22.0.22 activate | ||
+ | LOND_router(config-router-af)# exit-address-family | ||
+ | LOND_router(config-router)# exit | ||
+ | LOND_router(config)# exit | ||
+ | LOND_router# show bgp sum | ||
+ | |||
+ | IPv4 Unicast Summary: | ||
+ | BGP router identifier 180.22.0.2, local AS number 2 vrf-id 0 | ||
+ | BGP table version 2 | ||
+ | RIB entries 3, using 576 bytes of memory | ||
+ | Peers 1, using 14 KiB of memory | ||
+ | |||
+ | Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt | ||
+ | 180.22.0.22 4 22 5 5 0 0 0 00:00:33 2 2 | ||
+ | |||
+ | Total number of neighbors 1 | ||
+ | LOND_router# | ||
+ | </code> | ||
+ | Comanda ''%%neighbor 180.22.0.2 activate%%'' e opțională by default dacă folosim ''%%address-family ipv4 unicast%%''. | ||
+ | |||
+ | **În textul laboratorului trebuie să dea ''%%no bgp ebgp-requires-policy%%'' după ce s-a stabilit conexiunea. După comanda asta trebuie restabilită conexiunea cu ''%%clear bgp *%%'' în afara modului de config.** | ||
+ | |||
+ | </hidden> |