IER60808: Redes de acesso e PPPoE

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


Em uma rede MAN baseada em ethernet, cada usuário final (ou cliente) tem um link de acesso que se apresenta como uma porta de switch. Sendo assim, para esse cliente o link de acesso tem características de um link para uma rede local (LAN). Como nesse tipo de link todos os equipamentos que residem numa mesma LAN podem se comunicar diretamente um com o outro, deve haver uma forma de isolar os clientes, para que se comuniquem somente com o roteador do provedor. A figura a seguir ilustra de forma simplificada como os links para os clientes são fornecidos, e porque, se cuidados não forem tomados, eles podem se comunicar diretamente.

Pji3-man-ethernet1.jpg
Exemplo de uma rede MAN ethernet: os links de acesso podem ser implementados de diferentes formas, tais como links óticos, xDSL ou mesmo diretamente com ethernet. Notar o switch de agregação na borda da rede de acesso, que implanta uma LAN entre os clientes.

Duas técnicas elementares existem para isolamento dos clientes:

  1. Uso de VLAN: cada cliente é associado a uma VLAN única, que pode ser uma VLAN IEEE 802.1q ou algum tipo de VLAN legada implementada no escopo do switch de agregação.
  2. Uso de enlace PPPoE: um enlace PPPoE (PPP over Ethernet) é um enlace ponto-a-ponto virtual implementado sobre uma rede ethernet. Ele pode ser usado como uma forma de autorizar o link do cliente e impedir que se comunique diretamente sobre a rede ethernet.

Na prática, essas duas técnicas costumam ser combinadas. Usam-se VLANs para forçar que um cliente consiga se comunicar somente com a infraestrutura do provedor, e PPPoE para criar um enlace individual por cliente.

PPPoE (PPP over Ethernet)


PPPoE define um método para encapsular quadros PPP dentro de quadros Ethernet, e foi definido na RFC 2516. Ele foi criado para facilitar a integração de usuários discados e banda-larga em provedores de acesso (ISP - Internet Service Providers). Além disso, torna mais fácil o controle de acesso, de uso da rede, e contabilização para usuários que a acessam via rede Ethernet. Assim, é possível implantar uma rede em que os usuários, para conseguirem acesso, precisam se autenticar como em um serviço discado. Uma vez obtido o acesso, podem-se também impor limitações de uso de banda de acordo com o usuário. Exemplos de infraestruturas que podem se beneficiar com essa técnica são redes de condomínios e de prédios comerciais. Finalmente, PPPoE é usado como protocolo de enlace em acessos aDSL, GPON, EPON e sem-fio PTMP, como ilustrado na figura abaixo.

Pji3-Enlace-pppoe.jpg

Como se pode notar nessa figura, em enlaces PPPoE há dois tipos de equipamentos:

  • Host: o computador ou equipamento que inicia o enlace (esse equipamento é denominado CPE)
  • Concentrador (AC): o equipamento que recebe pedidos de estabelecimento de enlace, e funciona como roteador para os enlaces PPPoE.


Quando usado em uma infraestrutura ADSL, por exemplo, uma arquitetura de protocolos de enlace é implementada para fazer os encapsulamentos de PDUs a serem transmitidas. A figura abaixo mostra os protocolos envolvidos nesse uso do PPPoE, com respectivos encapsulamentos.

Pppoe architecture.gif


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).

Estabelecimento de sessões PPPoE

Em um enlace PPPoE um dos nodos é o host (cliente), e o outro o concentrador de acesso (AC, que tem papel de servidor). O estabelecimento do enlace é iniciado pelo host, que procura um AC e em seguida solicita o início do enlace. Esse procedimento é composto por por dois estágios:

  • Descoberta (Discovery): o cliente descobre um concentrador de acesso (AC) para se conectar. Ocorre uma troca de 4 PDUs de controle:
    • PADI (PPPoE Active Discovery Indication): enviado em broadcast pelo cliente para descobrir os AC.
    • PADO (PPPoE Active Discovery Offer): resposta enviada por um ou mais AC, contendo seus identificadores e nomes de serviços disponíveis (no âmbito do PPPoE).
    • PADR (PPPoE Active Discovery Request): enviado pelo cliente para o AC escolhido, requisitando o início de uma sessão.
    • PADS (PPPoE Active Discovery Session-Confirmation): resposta do AC escolhido.

      Pppoe-discovery.png

  • Sessão (Session): nessa etapa são trocados quadros PPP como no estabelecimento de um enlace PPP usual. A sessão pode ser encerrada com a terminação PPP (i.e., via protocolo LCP), ou com a PDU PPPoE PADT (PPPoE Active Discovery Terminate).

Quadros PPPoE

As PDUs PPPoE são encapsuladas em quadros Ethernet, usando o ethertype 8863H (estágio de descoberta) ou 8864H (estágio de sessão). Devido ao cabeçalho PPPoE (6 bytes) combinado ao identificador de protocolo do quadro PPP (2 bytes), a MTU em enlaces PPPoE não pode ser maior que 1492 bytes. O quadro PPP é simplificado, não possuindo as flags delimitadoras e os campos Address, Control e FCS. A PDU PPPoE é mostrada a seguir:


Pppoe-pdu.png

Atividade

Nestes experimentos o objetivo é implantar uma rede de acesso baseada em links ethernet usando PPPoE.


Uma rede de acesso ethernet será disponibilizada para clientes de um provedor. Essa rede deve isolar os clientes, de forma que eles consigam se comunicar somente com o roteador do provedor que dá acesso a Internet.


Pji3-Enlace-pppoe-lab.jpg
A rede de acesso ethernet a ser implantada

Parte 1: os enlaces PPPoE em uma rede virtual

  1. Usando do Netkit2, carregue este arquivo de configuração e inicie a rede nele descrita.
  2. Uma vez que a rede estiver em execução, investigue as interfaces de rede e rotas nos CPE e no AC. Observe em particular o tipo de interface de rede que os CPE usam para seus link para Internet.
  3. Teste a comunicação entre um CPE e a Internet.
  4. No AC inicie o wireshark para capturar pacotes na interface eth0. Em seguida, repita o teste de comunicação com a Internet a partir de algum CPE.
    1. Observe os quadro capturados pelo wireshark, e compare-os com a estrutura dos quadros PPPoE apresentados em aula.
    2. Veja como os datagramas IP são encapsulados nos quadros PPP.
    3. Observe os endereços MAC contidos nos quadros ethernet capturados, e compare-os com os endereços MAC das interfaces do AC e dos CPE.
  5. Encerre o wireshark no AC
  6. Agora force o término do enlace PPPoE em CPE1, o que pode ser feito assim:
    killall pppd
    
    ... e, em seguida, verifique as interface de rede existentes em CPE1. Algo mudou ?
  7. Teste a comunicação com a Internet a partir de CPE1. Foi possível realizar a comunicação ?
  8. Inicie o wireshark no CPE1, capturando na interface eth0, e depois execute este comando:
    pppd call adsl
    
  9. Verifique os pacotes capturados pelo wireshark. Identifique a sequência de estabelecimento de enlace PPPoE, comparando-a com o que foi mostrado em aula. Além da negociação feita com PPPoE, há uma segunda etapa realizada pelo protocolo PPP (que será estudado algumas aulas à frente).
  10. Conclusão: qual a utilidade de usar enlaces PPPoE ?

Parte 2: os enlaces PPPoE em equipamentos reais

  1. Implante a rede do cliente, composta por um computador e um CPE. Deve ser usado um roteador TP-Link AC1750 como CPE.
  2. Use o switch do laboratório como equipamento de agregação para a rede de acesso.
  3. Implante o AC PPPoE em uma máquina virtual. Para isso siga estes passos:
    1. Antes de executar a máquina virtual, configure-a com duas interfaces de rede em modo bridge e vinculadas à interface física eth0.
    2. Instale este software servidor PPPoE:
      sudo apt install pppoe
      
    3. No ac, a interface eth1 será usada para os enlaces PPPoE, e a interface eth0 dará acesso à rede externa (LAN do laboratório).
    4. 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 191.36.8.3
      netmask 255.255.255.0
      noipdefault
      debug
      kdebug 4
      
    5. Crie o arquivo /etc/ppp/chap-secrets com o seguinte conteúdo:
      usuario1 * senha1
      
    6. Crie o arquivo /etc/ppp/faixa-ip com o seguinte conteúdo:
      172.18.1.1-100
      
    7. Ative o servidor PPPoE:
      pppoe-server -C pji3 -L 172.18.1.254 -p /etc/ppp/faixa-ip -I eth1
      
  4. Configure o CPE para estabelecer um link PPPoE em sua interface WAN.
  5. Ative Nat no AC pela interface eth0:
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
  6. Habilite o encaminhamento IP no AC:
    sudo sysctl -w net.ipv4.ip_forward=1
    
    Obs: você pode editar /etc/sysctl.conf para que isso fique permanente !
  7. Teste a comunicação do computador com a Internet.
  8. Teste a comunicação do computador com os outros CPE;
  9. Estenda a rede para que um CPE sem-fio tenha seu enlace WAN estabelecido com PPPoE.

Curiosidade: tornando o PC um cliente PPPoE

Em sistemas Linux baseados na distribuição Debian há duas maneiras de criar um enlace PPPoE:

  • Com o Network-Manager: o network-manager é um aplicativo que auxilia o estabelecimento de enlaces em geral (cabeado, sem-fio, discado, ...). Ele é acessado normalmente por uma applet na barra de aplicativos, no topo da tela.
  • Editando os arquivos de configuração de rede: essa forma é um pouco mais complicada, mas funciona em qualquer sistema Linux. A seguir há uma explicação sobre como realizá-la.

A forma manual de estabelecer o enlace PPPoE segue estes passos:

  1. Instale o software necessário:
    sudo apt install pppoe
    
  2. Edite o arquivo /etc/ppp/peers/adsl, que deve ficar com este conteúdo:
    pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452 -C pji"
    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
    
  3. Edite o arquivo /etc/ppp/chap-secrets e acrescente o seguinte:
    usuario1   *   senha1
    
  4. Ative o enlace PPPoE executando o seguinte comando:
    sudo pppd call adsl
    
  5. Ative o encaminhamento de pacotes entre interfaces do seu PC: sendo o roteador da sua rede, ele deve ser capaz de fazer o encaminhamento de pacotes entre rede interna e externa:
    sudo sysctl -w net.ipv4.ip_forward=1
    
  6. Ative o NAT em seu PC: como ele agora é o roteador da sua rede, então ele precisará ser também o tradutor NAT:
    sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE