RCO2-lab-pppoe

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Objetivo

Criar uma infraestrutura de acesso baseada em ADSL e PPPoE

Introdução

PPPoE (PPP over Ethernet) é um protocolo criado para encapsular quadros PPP dentro de quadros Ethernet. Seu uso mais comum ocorre em redes de acesso aDSL, em que se cria uma infraestrutura como mostrado na ilustração abaixo.

Pppoe architecture.gif


Em enlaces PPPoE há dois tipos de equipamentos:

  • Host: o computador ou equipamento que inicia o enlace.
  • Concentrador (AC): o equipamento que recebe pedidos de estabelecimento de enlace

Com PPPoE podem-se criar redes de acesso baseada em tecnologia de rede local Ethernet, porém com autenticação, controle de uso de banda e contabilização de equipamentos de usuários. Essa foi uma motivação para a criação desse protocolo para uso por ISP (Internet Service Providers, ou Provedores de Acesso Internet).

Roteiro

Hoje será criada uma infraestrutura inspirada em uma rede de acesso ADSL. Ela é composta de um AC (concentrador de acesso), um roteador ADSL, e uma rede local com computadores do assinante do serviço, como mostrado na ilustração abaixo:

Lab-pppoe-novo.png


O roteador ADSL deve operar também como tradutor NAT. Assim os computadores nas redes de acesso poderão acessar a Internet, mas ficarão mascarados pelo roteador ADSL. Note que devido ao uso do NAT os computadores poderão acessar a rede externa, mas o contrário não será possível.


Para criar o enlace PPPoE serão usados os softwares pppd e pppoe dentro do Netkit.

global[compact]=True
global[mem]=24

pc1[type]=generic
pc2[type]=generic
rotadsl[type]=gateway
ac[type]=pppoe
internet[type]=generic

ac[pppoe]=rco2:interface=eth1:users=(usuario1,senha1):range=172.18.1.1,172.18.1.10:ip=172.18.1.20

ac[eth1]=linkadsl
ac[eth0]=externo:ip=192.168.1.1/24
ac[default_gateway]=192.168.1.254
ac[nat]=eth0

internet[eth0]=externo:ip=192.168.1.254/24
internet[route]=10.0.0.0/24:gareway=192.168.1.1

rotadsl[eth0]=linkadsl:mode=pppoe:pppoe_user=usuario1:pppoe_password=senha1:pppoe_ac=rco2
rotadsl[eth1]=lan:ip=10.0.0.254/24
rotadsl[nat]=ppp0

pc1[eth0]=lan:ip=10.0.0.1/24
pc1[default_gateway]=10.0.0.254
pc2[eth0]=lan:ip=10.0.0.2/24
pc2[default_gateway]=10.0.0.254

Configuração para o Netkit


  1. Copie a configuração acima para um arquivo chamado adsl.conf. Em seguida inicie o gnome-netkit, e carregue esse arquivo. Depois inicie a rede.
  2. Verifique se foi ativada a interface ppp0 em rotadsl (que faz o papel de roteador ADSL):
    ifconfig ppp0
    
  3. Teste a comunicação entre ambos PCs e internet:
    ping 192.168.1.254
    
  4. Mantendo o ping em ação em ambos PCs, ative o wireshark em ac, capturando na interface eth1. Observe os pacotes capturados, dando especial atenção aos encapsulamentos na camada de enlace. Veja que o enlace PPP envolve quadros PPP encapsulados em quadros PPPoE, que por sua vez estão encapsulados em quadros Ethernet.
    • Observe os campos dos quadros PPP: em que eles diferem dos quadros PPP de enlaces feitos com portas seriais ?
    • Observe os campos dos quadros PPPoE: o que eles significam ?
    • Por fim, confira os endereços MAC dos quadros Ethernet: a que equipamentos eles correspondem ?
  5. Encerre o enlace PPPoE em rotadsl usando este comando:
    killall pppd
    
  6. Encerre o wireshark. Em seguida reinicie-o em ac, com captura na interface eth1.
  7. Reinicie o enlace PPPoE em rotadsl usando este comando:
    pppd call adsl
    
  8. No wireshark clique no botão para recarregar (ou tecle CTRL R), e observe os pacotes capturados. veja os primeiros quadros PPPoE e compare-os com a descrição na wiki. O que se pode concluir sobre esses quadros iniciais ?
Versão manual do experimento

A ativação dos enlaces PPPoE foi realizada de forma automática pelo Netkit, porém pode-se fazer isso manualmente. A diferença está na manipulação de arquivos e programas do Linux usados para criar esses enlaces. Quem gosta de descer o nível, ou de saber como de fato são configurados esses softwares, pode repetir o experimento fazendo a configuração manual.

global[compact]=True
global[mem]=24

pc1[type]=generic
pc2[type]=generic
rotadsl[type]=gateway
ac[type]=gateway
internet[type]=generic

ac[eth1]=linkadsl
ac[eth0]=externo:ip=192.168.1.1/24
ac[default_gateway]=192.168.1.254

internet[eth0]=externo:ip=192.168.1.254/24
internet[route]=10.0.0.0/24:gateway=192.168.1.1

rotadsl[eth0]=linkadsl
rotadsl[eth1]=lan:ip=10.0.0.254/24
rotadsl[nat]=ppp0

pc1[eth0]=lan:ip=10.0.0.1/24
pc1[default_gateway]=10.0.0.254
pc2[eth0]=lan:ip=10.0.0.2/24
pc2[default_gateway]=10.0.0.254

Os seguintes passos devem ser feitos antes do experimento:

1. No ac, a interface eth1 será usada para os enlaces PPPoE, e a interface eth0 dará acesso à rede externa. A máquina virtual internet representa a Internet ;-)

3. No AC crie o arquivo /etc/ppp/pppoe-server-options com o seguinte conteúdo:

require-chap
noauth
login
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 200.135.37.65
netmask 255.255.255.0
noipdefault
debug
kdebug 4

4. Crie no AC o arquivo /etc/ppp/chap-secrets com o seguinte conteúdo:

usuario1 * senha1

5. Crie o arquivo /etc/ppp/faixa-ip no AC com o seguinte conteúdo:

172.18.1.1-10

6. Ative o servidor PPPoE no AC:

pppoe-server -C rco2 -L 172.18.1.20 -p /etc/ppp/faixa-ip -I eth1

7. Em rotadsl deve-se criar o arquivo /etc/ppp/peers/rco2 com este conteúdo:

pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C rco2"
noipdefault
usepeerdns
defaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
persist
mtu 1492
noaccomp
user usuario1
default-asyncmap

8. Crie em rotadsl o arquivo /etc/ppp/chap-secrets com este conteúdo:

usuario1 * senha1

9. Execute em ac o wireshark pelo Netkit (menu Wireshark), e ative o monitoramento na interface eth1.

10. Em rotadsl ative o enlace PPPoE, executando:

pppd call rco2

11. Agora você pode seguir os passos do roteiro original ...