Skip to main content

13.3 Konfigurácia PPPoE

Protokol PPPoE

PPPoE (Point to Point Protocol over Ethernet) pracuje na 2. vrstve sieťového modelu (L2) a umožňuje pripojiť klienta k serveru bez potreby L3 siete (IP protokolu).

Klient po úspešnej autentifikácii obdrží beztriednu IP adresu (s maskou /32, keďže ide o spojenie typu point-to-point) - či už dynamickú z balíka adries alebo konkrétnu statickú - a tým sa pripojí k serveru. Server je označovaný aj ako koncentrátor prístupu (AC = Access Concentrator) a obvykle je to smerovač ISP, teda brána do internetu. Klientom je obvykle smerovač klienta.

Ďalšia komunikácia prebieha vždy v režime point-to-point cez server - pakety sú zapuzdrené do protokolu PPPoE. Týmto sú jednotliví klienti nielen rozlíšiteľní, ale aj vzájomne oddelení - a to aj v prípade, že sú na tej istej L2 sieti. Znamená to, že sa navzájom „nevidia“ ako L2 susedia. Či budú môcť spolu komunikovať cez L3, záleží na nastavení firewallu PPPoE servera - štandardne môžu.

Proces pripájania klienta

Samotný proces pripájania klienta má dve fázy:

  1. Hľadanie služby (PAD - PPPoE Active Discovery):
    • Klient zašle inicializačný broadcast rámec PADI (I = Initialization), pričom môže uviesť aj požadovaný názov služby.
    • Server, ktorý požadovanú službu poskytuje, zareaguje zaslaním ponuky formou unicast rámca PADO (O = Offer).
    • Klient odpovie serveru (prvému, ktorý poslal ponuku) zaslaním žiadosti o pripojenie PADR (R = Request).
    • Server umožní spojenie zaslaním vygenerovaného identifikátora session v PADS (S = Session).
  2. Vytvorenie spojenia (session): Prebehne autentifikácia (prenos hesla môže byť zabezpečený cez CHAP) a v prípade úspechu je klientovi priradená IP adresa.

Pripájanie PPPoE klienta vo Windows

Hoci nie je obvyklé pripájať cez PPPoE priamo koncové zariadenie, je to možné: stačí v sieťových rozhraniach pridať nové „Telefonické pripojenie“ a v ďalšom kroku zvoliť „Širokopásmové pripojenie (PPPoE)“.

Konfigurácia PPPoE klienta v MikroTik RouterOS

Konfigurácia PPPoE sa vykonáva cez WinBox ponuku PPP (Point to Point Protocol).

Zistenie dostupných PPPoE služieb

Cez ponuku PPP → Interface môžeme najskôr zistiť, či je vôbec dostupná nejaká služba PPPoE - cez tlačidlo PPPoE Scan, musíme zvoliť správne rozhranie, ku ktorému je pripojený PPPoE modem / most (typicky smerovač od ISP):

pppoe-scan.webp

Ak sme žiadne PPPoE služby nenašli, nemá zmysel pokračovať a treba tento problém vyriešiť.

Vytvorenie PPPoE klienta

Cez ponuku PPP → Interface pridáme nové rozhranie PPPoE Client a vhodne ho pomenujeme, napríklad „pppoe-telekom“. Zvolíme tiež rozhrania, na ktorom máme dostupný PPPoE server:

pppoe-klient-general.webp

Na záložke Dial Out je potrebné vyplniť údaje od ISP - typicky meno a heslo, prípadne aj názov služby. Zvážime, či si želáme prijať aj DNS server (v opačnom prípade si musíme nastaviť vlastný):

pppoe-klient-dialout.webp

Bezpečnostné upozornenie: Pokiaľ nevieme, akú autentifikáciu podporuje server, je možné ponechať povolené všetky možnosti (mschap2, mschap1, chappap). No z bezpečnostného hľadiska je to problém - útočník by si mohol zriadiť falošný server, na ktorom povolí len základnú autentifikáciu PAP bez akéhokoľvek zabezpečenia. Náš klient by sa ochotne prispôsobil a poslal mu heslo úplne bez ochrany - ako čistý text. Toto sa nazýva „downgrade útok“. Pokiaľ vieme, že server podporuje lepšie zabezpečenie, mali by sme nechať povolené len to. Detaily spomenieme nižšie, pri konfigurácii PPPoE servera.

Stav PPPoE klienta

Stav spojenia môžeme zobraziť na záložke Status, kde sa dozvieme svoju IP adresu a IP adresu PPPoE servera (AC) - ide o PPP spojenie, takže adresy nepoužívajú sieťové masky a môžu byť úplne odlišné. Nájdeme tam tiež identifikáciu PPPoE servera (AC), ktorý nás obslúžil:

pppoe-klient-status.webp

Konfiguráciu IP siete (záležitosti ako smerovanie, firewall a NAT) nevykonávame na podkladovom ethernet rozhraní, ale na tomto vytvorenom PPPoE rozhraní!

Konfigurácia PPPoE servera

Aj konfigurácia PPPoE servera sa vykonáva cez WinBox ponuku PPP (Point to Point Protocol).

Vytvorenie PPP profilu servera

pppoe-server-profile.webpPri konfigurácii akéhokoľvek PPP servera je potrebné najskôr vytvoriť PPP profil cez ponuku PPP → Profiles. Vhodne ho pomenujeme (napríklad „pppoe-server“) a nastavíme potrebné údaje:

  • Local Address: Tu uvedieme IP adresu nášho PPPoE servera. Je beztriedna (neuvádzame masku, či prefix siete) a bude sa používať na každom vytvorenom PPPoE rozhraní. V podstate je jedno, akú adresu tu použijeme, no nesmie byť v kolízii s adresným priestorom akéhokoľvek iného sieťového rozhrania a veľmi vhodné je využiť rozsah CGNAT (100.64.0.0/10).
  • Remote Address: Tu bude adresa klienta. Väčšinou máme viacerých klientov, takže sem patrí vytvorený balík adries (pool), z ktorých bude klientom prideľovaná adresa dynamicky. Tiež je vhodné použiť rozsah CGNAT.
  • DNS Server: Patrí sa uviesť nejaký DNS server, obvykle náš vlastný, ktorý môže byť priamo na PPPoE serveri, teda obvykle sem dávame tú istú adresu, ako sme dali do Local Address. Vďaka tomu môžeme našim klientom poskytovať aj lokálne (vnútropodnikové) doménové mená.
  • Niekedy príde vhod aj zaradenie klientov do zoznamu adries (Address List) alebo do zoznamu rozhraní (Interface List),  napríklad pre účel firewall alebo NAT pravidiel, prípadne priamo do niektorého premostenia.

Profil PPP umožňuje nastaviť aj mnoho ďalších parametrov. Lákavo znie napríklad Encryption, no reálny zmysel to pri PPPoE nemá, pretože šifrovanie je veľmi slabé a zbytočné - používa zastarané šifrovanie RC4 v protokole MPPE, ktoré by len zbytočne zvyšovalo záťaž CPU. Podobne je to aj s voľbou Compression - väčšina dnešných prenášaných údajov je už komprimovaná (video, obraz, zvuk, ale i samotná HTTP komunikácia) a navyše aj šifrovaná. Údaje, ktoré sú už komprimované alebo šifrované, nie je možné ďalej znovu komprimovať, takže opäť by šlo len o zbytočnú záťaž pre CPU.

Väčšina parametrov PPP profilu má predvolenú hodnotu „default“ - čo to reálne znamená a je treba ju meniť?

Hodnota „default“ znamená, že sa prevezme nastavenie z nadradeného systémového profilu a ak nie je, nechá sa to na vyjednávanie s druhou stranou. Túto hodnotu v podstate nie je potrebné meniť, no predsa je vhodnejšie na strane servera špecifikovať konkrétnu hodnotu a u klienta nechať default.

Vytvorenie PPPoE servera

Po vytvorení PPPoE profilu je už možné vytvoriť a spustiť samotný server cez záložku PPP → PPPoE Servers. Zaujímať nás budú hlavne tieto parametre:

  • pppoe-server.webpService Name: Môžeme tu uviesť názov služby, pod ktorým sa bude AC identifikovať, prípadne nechať prázdny.
  • Interface: Je nutné uviesť, na ktorom rozhraní bude PPPoE server dostupný. Ide o L2 rozhranie vedúce k zákazníkom.
  • Default Profile: Tu musíme zvoliť pripravený profil PPPoE servera.
  • Accept Empty Service: Štandardne je táto možnosť zapnutá a znamená, že klient nemusí explicitne uvádzať názov služby a náš server mu aj tak ponúkne pripojenie. Vypnutie tejto voľby má zmysel len v prípade, že je dostupných viacero PPPoE serverov s rôznymi názvami služieb a vyžadujeme, aby klient uviedol konkrétne meno.
  • Authentication: Je vhodné obmedziť spôsob autentifikácie klienta na najbezpečnejší variant mschap2. Ani ten však už nie je v dnešnej dobe dostatočne bezpečný, no je to najlepšia voľba.

Aký je rozdiel v autentifikácii PAP a CHAP?

PAP posiela heslo „ako na podnose“ - nie je nijako chránené a každý ho môže vidieť. V prípade CHAP server najskôr pošle klientovi nejakú náhodnú výzvu (challenge) a klient na základe tejto výzvy a svojho hesla vypočíta haš, ktorý pošle serveru. Slabinou je však jednosmerné overovanie - server si overuje klienta, ale klient nevie, či komunikuje s pravým alebo podvrhnutým serverom.

V čom sa líši MS-CHAP od CHAP?

Ide o konkrétne Microsoft implementácie CHAP. Verzia 1 (MS-CHAPv1) neprináša žiadne vylepšenie a z dnešného pohľadu je slabá. Verzia 2 (MS-CHAPv2) však prináša vzájomnú autentifikáciu, teda aj klient si overuje pravosť servera.

Ako si môže klient overiť pravosť servera, keď nepoužívajú certifikáty?

Server vie dokázať svoju pravosť len tak, že preukáže znalosť hesla klienta.

Detailnejšia odpoveď pre expertov:

  1. Server pošle klientovi vygenerovanú výzvu.
  2. Klient si vygeneruje svoju výzvu. Použije výzvu servera, svoju výzvu, svoj login, haš SHA-1, svoje heslo, haš MD4 a šifrovanie DES - výsledok (nazýva sa NT-Response) odošle serveru aj so svojou výzvou.
  3. Keďže server pozná všetky zložky, overí prijatý NT-Response, čím overí klienta.
  4. Server však musí dokázať klientovi, že je pravý, teda že pozná heslo. Nemôže samozrejme použiť rovnaký postup a odoslať rovnaké údaje. Preto uplatní trochu iný postup, pri ktorom použije heslo klienta, dvojitý MD4 haš, NT-Response, haš SHA-1 a pošle klientovi.
  5. Klient vypočíta to isté, porovná s údajom od servera a tým zistí, či je pravý.

Vytvorenie účtov klientov

Hoci nám server už beží, neakceptoval by žiadneho klienta, pretože sme zatiaľ nedefinovali žiadne účty používateľov. Tie vytvárame v ponuke PPP → Secrets, zaujímajú nás predovšetkým tieto parametre:

  • pppoe-ppp-secret.webpName, Password: Samotné meno a heslo používateľského účtu.
  • Service: Tu by sme mali definovať službu, pre ktorú bude tento účet akceptovaný. Pokiaľ by sme ponechali voľbu „any“, s vytvorenými prihlasovacími údajmi by sa klient pripojil aj na akékoľvek iné servery, ktoré (i v budúcnosti) spustíme. Obvykle to nie je to, čo by sme chceli, takže v tomto prípade zvolíme možnosť „pppoe“.
  • Profile: Pozor, tu nezadávame profil servera! Sem patrí špecifický profil používateľa, no zatiaľ sa ním nezaoberajme a nechajme default.
  • Local Address: Keďže sme tento údaj už vyplnili v profile servera, tu nezadávame nič.
  • Remote Address: Aj tento údaj sme už vyplnili v profile servera, tak nezadávame nič. Výnimkou je situácia, keď tento konkrétny klient má dostať nejakú konkrétnu IP adresu - v tom prípade ju tu uvedieme, čí klientovi poskytneme statickú adresu namiesto dynamickej z balíka.
  • Routes: Tu môžeme zadať adresu siete klienta, napríklad „192.168.1.0/24“. Náš server si po pripojení klienta nastaví trasu do jeho siete. Toto má zmysel len v prípade, že klientska sieť je pod našou kontrolou a vieme, aký rozsah adries používa.

Pri konfigurácii PPP účtu sa vyskytujú aj niektoré parametre, ktoré sme definovali v profile servera. Ktoré sa použijú, ak zadefinujeme oboje?

Platí prednosť špecifickejšieho nastavenia, teda pokiaľ v účte konkrétneho používateľa uvedieme niečo iné ako v profile servera, má to prednosť. Ak neuvedieme nič, použije sa nastavenie z profilu servera.