Trabalho 3 - DHCP e NAT


Referências

Objectivo

No emulador de rede GNS3 dentro da VM a correr no sistema de virtualização deve configurar a rede da seguinte figura segundo as indicações dadas abaixo:

Rede

Questões/Traces/Análise

  1. Nos terminais 1 e 2 desactive a interface de rede ( ifdown ens3 ) e limpe a cache do dhclient com  rm -f /var/lib/{dhclient,NetworkManager}/dhclient-*.lease . Limpe também em RCis eventuais leases anteriores com  clear ip dhcp binding * .
    1. Inicie uma captura wireshark na interface f1/1 de RCis e volte a activar a interface ens3 do terminal 1. Repita o procedimento para o terminal 2. As capturas devem mostrar o conteúdo das mensagens. (2 × capRes)
    2. Apenas a partir das mensagens capturadas e respectivo conteúdo é possível saber qual dos dois tem um endereço fixo (atribuição manual)? Justifique. (texRes)
  2. No router RCis active o debugging do NAT com o comando  debug ip nat detailed . No terminal 1, faça download do ficheiro https://www.dcc.fc.up.pt/~rprior/dcc.png (use o wget ou o curl). Referindo-se explicitamente às linhas de output de RCis, explique o trabalho do NAT (outRes + texRes).
    NOTA: Vai haver NAT para dois fluxos de comunicação diferentes, um para o DNS (UDP, porta 53) e outro para o HTTPS (TCP, porta 443). Considere apenas o segundo (HTTPS).
  3. Desactive a interface de rede do terminal 2, desligue-o do SW2 e ligue-o no SW1, e volte a activá-la. Veja que endereço lhe foi atribuído (deve ser da rede 192.168.123.0/24).
    Do terminal 1, faça um ssh para o terminal 2 ( ssh ar@<ip_term2> ). Nessa shell, corra o comando  while true; do echo hello; sleep 1; done  para que o servidor ssh vá gerando pacotes. Explique o que acontece quando usa o comando  clear ip nat translation *  e comente a afirmação Quando usamos NAT com tradução de portas, os fluxos de pacotes passam de connectionless para connection-oriented. (texRes)
    NOTAS:
    (1) A conexão deve cair. Eventualmente, pode ter que correr mais que uma vez o comando para limpar os mapeamentos NAT, pois o que acontece depende da ordem dos pacotes de entrada e saída.
    (2) Para perceber melhor o que se passa, pode fazer capturas nas duas interfaces de RCis.
  4. Ainda com o terminal 2 ligado no SW1, faça um ssh do desse terminal para o terminal 1.
    1. Indique o comando utilizado. (texRes)
    2. Identifique uma situação em que é necessário fazer port forwarding usando uma porta não-standard. (texRes)
  5. Desligue RCis dos comutadores SW1 e SW2 e ligue RLin a ambos para substituir RCis (tem que configurar o servidor de DHCP e o NAT). A interface externa deve ser a ens3 (Ethernet0). O terminal 2 deve continuar ligado no SW1.
    Certifique-se de que o servidor de ftp está a correr nos terminais 1 e 2 e que não está a correr no Router Linux (use os comandos netstat -ant para ver se tem algum processo na porta 21 e systemctl start|stop|status proftpd para activar, desactivar ou verificar o estado do servidor FTP). Ponha o wireshark a capturar em todas as interfaces do Router Linux.
    Em todas as alíneas desta pergunta deve correr o ftp em modo activo (use ftp -A ). Para melhor compreender o que se passa, atente aos endereços IP dos pacotes capturados e procure nesses pacotes os comandos PORT (ou EPRT) do FTP.
    1. Do terminal 2, tente fazer um ftp para o terminal 1 e fazer download (get) de um ficheiro. Justifique o insucesso deste procedimento. (capRes + texRes)
    2. No router Linux, redireccione (port forwarding) a porta 21 da interface exterior (ens3) para a porta 21 (ftp) do terminal 1. (confRes)
    3. Tente novamente fazer o ftp e transferir um ficheiro. Comente os resultados, referindo o que acontece nas conexões de controlo e de dados. (capRes + texRes)
    4. Tente agora fazer um ftp do terminal 1 para o terminal 2 e fazer download de um ficheiro. Comente os resultados. (capRes + texRes)
    5. No router Linux, instale o módulo de suporte NAT para ftp e active-o usando os comandos Tente novamente o ftp da alínea anterior e comente os resultados tendo em conta o que acontece na conexão de controlo e na de dados. (capRes + texRes)