This is an old revision of the document!
Având pornit serverul de PPPoE, putem acum să configurăm clienții de PPPoE. Clienții, adică stațiile de tip client, se vor autentifica la serverul de PPPoE pornit anterior și vor primi o adresă IP.
Pentru configurarea unui client, cel mai simplu este să folosim utilitarul pppoeconf
. Acest utilitar prezintă întrebări de configurare utilizatorului și generează informațiile necesare în fișierele de configurare din /etc/ppp/
. Fișierele de configurare ce vor fi alterate sunt:
/etc/ppp/pap-secrets
: configurare pentru autentificare folosind PAP (Password Authentication Protocol)/etc/ppp/chap-secrets
: configurare pentru autentificare folosind CHAP (Challenge-Handshake Authentication Protocol)/etc/ppp/peers/dsl-provider
: configurare pentru conectarea la serverul PPPoE/etc/network/interfaces
: configurare persistentă pentru conexiunea PPPoE
Pentru început vom configura pe stația red
un client PPPoE. Vom rula comanda:
root@red:~# pppoeconf
și vom ține cont de următoarele:
red
(le-am configurat anterior în server)
Pentru a valida configurarea corectă, inspectăm mesajele PPPoE folosind comanda plog
:
root@red:~# plog Dec 19 21:11:23 red pppd[670]: Plugin rp-pppoe.so loaded. Dec 19 21:11:23 red pppd[672]: pppd 2.4.5 started by root, uid 0 Dec 19 21:11:23 red pppd[672]: PPP session is 1 Dec 19 21:11:23 red pppd[672]: Connected to 7e:9e:4a:5a:49:77 via interface eth0 Dec 19 21:11:23 red pppd[672]: Using interface ppp0 Dec 19 21:11:23 red pppd[672]: Connect: ppp0 <--> eth0 Dec 19 21:11:26 red pppd[672]: peer from calling number 7E:9E:4A:5A:49:77 authorized Dec 19 21:11:26 red pppd[672]: local IP address 192.168.0.2 Dec 19 21:11:26 red pppd[672]: remote IP address 192.168.0.1
Din output-ul comenzii plog
observăm că:
eth0
pppp0
ppp0
adresa 192.168.0.2
(local
) pe o legătură punct-la-punct cu interfața de pe server (192.168.0.1
).
Observăm crearea interfeței ppp0
și atașarea adresei 192.168.0.2
:
root@red:~# ip address show dev ppp0 13: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3 link/ppp inet 192.168.0.2 peer 192.168.0.1/32 scope global ppp0
Verificăm conectivitatea la serverul PPPoE folosind comanda ping
:
root@red:~# ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=1.63 ms 64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=0.270 ms ^C
Observăm că pe stația host
a apărut de asemenea o interfață ppp0
, perechea interfeței create pe stația red
:
root@host:~# ip a s 32: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3 link/ppp inet 192.168.0.1 peer 192.168.0.2/32 scope global ppp0
Interfața ppp0
de pe stația host
are adresa 192.168.0.1
, adresa aferentă stației host.
O dată configurată, conexiunea PPPoE poate fi pornită folosind comanda pon dsl-provider
și oprită folosind poff dsl-provider
. Comanda pon dsl-provider
este în general rulată în momentul configurării (adică în momentul folosirii comenzii pppoeconf
); este ultimul ecran de interogare a utilizatorului furnizat de comanda pppoeconf
.
Doar pentru testare, vom opri și vom porni conexiunea PPPoE pe stația red
:
root@red:~# ip address show dev ppp0 13: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3 link/ppp inet 192.168.0.2 peer 192.168.0.1/32 scope global ppp0 root@red:~# poff dsl-provider root@red:~# ip address show dev ppp0 Device "ppp0" does not exist. root@red:~# pon dsl-provider Plugin rp-pppoe.so loaded. root@red:~# ip address show dev ppp0 15: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3 link/ppp inet 192.168.0.3 peer 192.168.0.1/32 scope global ppp0
Observăm că la a doua rulare am obținut altă adresă IP (192.168.0.3
), următoarea din spațiul de adrese expus de serverul de PPPoE. Aceasta se întâmplă pentru că la fiecare conectare la serverul PPPoE se obține următoarea adresă nefolosită. La un număr suficient de mari de rulări ale comenzilor poff dsl-provider
și pon dsl-provider
se poate reajunge la adresa IP 192.168.0.3
.
Ca să vedem cum se realizează conectarea între cele două capete consultăm tabela de rutare:
root@red:~# ip route default dev ppp0 scope link 192.168.0.1 dev ppp0 proto kernel scope link src 192.168.0.3
Observăm că ruta implicită este specificată folosind doar interfața de ieșire (ppp0
). Acest lucru este suficient întrucât este o conexiune punct-la-punct și nu un mediu multi-acces cum este Ethernet. Legătura este punct la punct motiv pentru care nu avem mască aferentă rutei către 192.168.0.1
. Este vorba de o rută punct la punct. Similar arată tabela de rutare și pe stația host
:
root@host:~# ip r s dev ppp0 192.168.0.3 proto kernel scope link src 192.168.0.1
Să urmărim conținutul mesajelor PPPoE. Vom captura cadrele Ethernet
pe stația host
folosind comanda tcpdump
pe interfața br0
:
root@host:~# tcpdump -n -i br0 -e [...]
Opțiunea -e
a comenzii tcpdump
afișează și antetul de nivel 2, adică antetul Ethernet și implicit, antetul PPP.
Pe stația red pornim comanda ping către stația host
:
root@red:~# ping 192.168.0.1 [...]
Acum observăm pe stația host
rezultatul capturii:
[...] 23:29:20.668204 00:16:3e:8e:84:21 (oui Unknown) > 7e:9e:4a:5a:49:77 (oui Unknown), ethertype PPPoE S (0x8864), length 106: PPPoE [ses 0x1] IP (0x0021), length 86: 192.168.0.3 > 192.168.0.1: ICMP echo request, id 732, seq 47, length 64 [...]
În cadrul capturat mai sus observăm următoarele:
eth0
a stației red
: 00:16:3e:8e:84:21
;br0
de pe stația host
: 7e:9e:4a:5a:49:77
;0x8864
– faza de sesiune); în mod obișnuit ar fi fost IP (0x0800
)1);PPPoE
încasulează la rândul său protocolul IP./etc/ethertypes