Trabalho 3 - DHCP e NAT


Teoria/HowTo/Referências

Notas prévias

Objectivo

Implementar uma rede com a seguinte configuração física:
Rede física

e com a seguinte configuração lógica:
Rede lógica

Montagem

Entregáveis

Questões/Traces/Análise

  1. Inicie o trabalho com o terminal 2 na rede da esquerda (172.16.0.0/24).
    1. Desactive (ifdown) a interface tap0 do terminal 1. Limpe a cache do dhclient com  rm -f /var/lib/dhclient/*  Inicie uma captura wireshark na interface f1/1 de R0 e volte a activar (ifup) a interface tap0 do terminal 1. Repita o procedimento para a interface eth0 do terminal 2. As capturas devem mostrar o conteúdo das mensagens. (2 × capRes)
    2. Apenas a partir das mensagens capturadas é possível saber qual dos dois tem um endereço estático? Justifique. (texRes)
  2. Mova agora o terminal 2 para a rede da direita (10.0.0.0/24) e reinicie novamente o serviço de rede. No router R0 active o debugging do NAT com o comando  debug ip nat detailed . No terminal 1, faça download deste ficheiro (de preferência, use o wget ou o curl). Com base nas linhas de output de R0, explique o trabalho do NAT (outRes + texRes).
  3. Do terminal 1, faça um ssh para a interface eth0 do Router Linux. 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) 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 R0.
    (3) Se não conseguir entrar com password, altere no servidor ssh (router Linux) o ficheiro /etc/ssh/sshd_config modificando a linha PermitRootLogin without-password para PermitRootLogin yes e depois reinicie o serviço sshd com systemctl restart sshd.service.
  4. Faça agora um ssh do router linux 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. No Terminal 1, desligue a emulação de rede no GNS3 e reconfigure a interface eth0 (enp0s10) para obter endereço por DHCP da rede do laboratório. 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 proftpd.service para activar/desactivar o 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 o cliente ncftp e, dentro deste, corra o comando set passive off, ou então use o cliente ftp e, dentro deste, corra o comando passive no). 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 1, tente fazer um ftp para o terminal 2 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 (eth0) para a porta 21 (ftp) do terminal 2. (confRes)
    3. Tente novamente fazer o ftp e transferir um ficheiro e comente os resultados. (capRes + texRes)
      NOTA: Se obtiver erro de permissão, corra o comando  setenforce 0  em ambas as máquinas e volte a tentar.
    4. Tente agora fazer um ftp do terminal 2 para o terminal 1 e fazer download de um ficheiro. Comente os resultados. (capRes + texRes)
    5. No router Linux, instale o módulo de suporte NAT para ftp usando o comando modprobe nf_nat_ftp. 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)