Baixe o app para aproveitar ainda mais
Prévia do material em texto
Seção 1 Sobre o projeto 1.1 Introdução Este projeto foi criado para incrementar o conhecimento sobre roteamento de redes, configuração de serviços de rede e interação com serviços disponibilizados a partir de redes diferentes. 1.2 Objetivos O objetivo deste trabalho é demonstrar a configuração e funcionamento da camada de rede, análise da camada de transporte, e o exemplo do desenvolvimento de uma aplicação clienteservidor. 1.3 Membros do grupo ● Maycon Ribeiro ● Eduardo Macedo ● Pedro Gustavo ● Gabriel da Trindade ● Marcella Toledo 1.4 Arquitetura da rede 1.4.1 Rede adaptadores MV2 1.4.2 Rede adaptadores R1 1.4.3 Rede adaptadores R2 1.4.4 Rede adaptadores MV3 1.5 Descrição de todos os softwares utilizados ● Oracle VirtualBox 5.0.14 ● Debian Linux (VM fornecida pelo professor) ● Wireshark ● Squi proxy ● Bind DNS Seção 2 Configuração básica da rede, DHCP e DNS 2.1 Configurar Interfaces de Rede 2.1.1 Interfaces de Rede da Máquina R1 A máquina R1 foi configurada com duas interfaces de rede no VirtualBox, a primeira configurada para atuar em modo bridge com placa de rede da máquina física, onde obterá o endereço IP via DHCP na Rede Local, ligada a um roteador de internet, a segunda interface de rede está configurada para uma rede interna virtual denominada ‘intnet01’.Assim a máquina R1 teve o arquivo ‘/etc/network/interfaces’ definido da seguinte forma: Com esta configuração ficaram definidos para R1 os IPs 192.168.25.64/24 na eth0, e 10.4.0.1/16 na eth1. 2.1.2 Interfaces de Rede da Máquina R2 A máquina R2 foi configurada com duas interfaces de rede no VirtualBox, a primeira configurada para atuar em modo bridge com placa de rede da máquina física, onde obterá o endereço IP via DHCP na Rede Local, ligada a um roteador de internet, a segunda interface de rede está configurada para uma rede interna virtual denominada ‘intnet02’, Assim a máquina R2 teve o arquivo ‘/etc/network/interfaces’ definido da seguinte forma: Com esta configuração ficaram definidos para R2 os IPs 192.168.25.70/24 na eth0, e 10.40.0.1/16 na eth1. 2.1.3 Interfaces de Rede da Máquina MV2 A máquina MV2 foi configurada com uma interface de rede no VirtualBox configurada para a rede interna denominada ‘intnet01’, desta forma a rede da máquina MV2 foi configurada no arquivo ‘/etc/network/interfaces’ da seguinte forma: Assim a máquina MV2 ficou configurada com o IP 10.4.0.2/16 na interface eth0, possibilitando comunicação desta com R1 (testado com requisições PING), foi definido também para MV2 um gateway padrão, que é R1. 2.1.4 Interfaces de Rede da Máquina MV3 A máquina MV3 foi configurada com uma interface de rede no VirtualBox configurada para a rede interna denominada ‘intnet02’, desta forma a rede da máquina MV3 foi configurada no arquivo ‘/etc/network/interfaces’ da seguinte forma: Assim a máquina MV3 ficou configurada com o IP 10.40.0.2/16 na interface eth0, possibilitando comunicação desta com R2 (testado com requisições PING), foi definido também para MV3 um gateway padrão, que é R2. 2.1.5 Configurações adicionais 2.1.5.1 Redirecionamento de pacotes entre R1 e R2 e persistência de rotas Para que as máquinas MV2 e MV3 comuniquem entre si, é necessário incrementar algumas configurações em R1 e R2. # echo 1 > /proc/sys/net/ipv4/ip_forward O comando acima foi aplicado em R1 e R2 para ativar o redirecionamento de pacotes nas duas máquinas roteadoras. Na máquina R1 foi adicionada a rota para a rede intnet02: # route add net 10.40.0.0/16 gw <IP DA ETH0 DA MAQUINA R2> Adicionamos a linha em /etc/network/interfaces para a persistência das rotas: up /sbin/route add net 10.40.0.0 gw <IP DA ETH0 DA MAQUINA R2> down /sbin/route del net 10.40.0.0 gw <IP DA ETH0 DA MAQUINA R2> E na máquina R2 a rota para a rede intnet01 também foi definida: # route add net 10.4.0.0/16 gw <IP DA ETH0 DA MAQUINA R1> Adicionamos igualmente a linha em /etc/network/interfaces para a persistência das rotas: up /sbin/route add net 10.4.0.0 gw <IP DA ETH0 DA MAQUINA R1> down /sbin/route del net 10.4.0.0 <IP DA ETH0 DA MAQUINA R1> Assim é possível fazer com que todas as 4 máquinas virtuais se comuniquem. Caso haja a situação de algumas das interfaces não recarregar após service networking restart, de o comando ip addr flush dev ethX 2.1.5.2 Configurações de interfaces estado atual R1 R2 2.1.6 Testes com Ping 2.1.6.1 MV2 em todas as demais máquinas 2.1.6.2 R1 em todas as demais máquinas 2.1.6.3 R2 em todas as demais máquinas 2.1.6.4 MV3 em todas as demais máquinas 2.2 Configurar NAT na R1 Configurando NAT na R1 com o comando “iptables t nat o eth0 A POSTROUTING ! d 10.40.0.0/16 j MASQUERADE” de forma que realize NAT somente quando a comunicação não for com a R2 Teste de ping em MV2: 2.3 Configurar NAT na R2 Configurando NAT na R1 com o comando “iptables t nat o eth0 A POSTROUTING ! d 10.4.0.0/16 j MASQUERADE” de forma que realize NAT somente quando a comunicação não for com a R1 Teste de ping em MV3: 2.3 Configurar DNS em R1 Instalando o BIND através do comando “aptitude install bind9” Instalando dnsutils através do comando “aptitude install dnsutils” Configurando o nameserver local da R2 para 10.4.0.1 em “/etc/resolv.conf” Configurar o /etc/bind/named.conf.local para criação da zona local Em /etc/bind/db.grupo4.inf.ufg.br configurar a referência por nomes das máquinas virtuais: Fazemos posteriormente o reinício do serviço Bind: Adicionando em todas as MV’s em etc /resolv.conf o nameserver da R1, 10.4.0.1, e realizando os testes pelo comando nslookup: R2: MV3: MV2: 2.3 Configurar DHCP em R1 Instalamos primeiramente o servidor DHCP com aptget install dhcp3server: Posteriormente modificamos o arquivo /etc/default/iscdhcpserver para delimitar que a na R1 a interface que fará o serviço DHCP é a eth1: Para inserirmos as configurações na subrede e a variação de IP’s que o DHCP deve fornecer, modificamos o arquivo /etc/dhcp/dhcp.conf: Na primeira linha verificamos as caracteristicas da subrede de R1. Na segunda linha delimitamos um intervalo que os endereços irão trabalhar, variando de 10.4.0.3 ate 10.4.0.100. Definimos o router da rede como o R1, 10.4.0.1, o servidor DNS também como R1 e o broadcast da rede. Abaixo fazemos a restrição de MV2, fixando seu endereço de IP para o já adotado 10.4.0.2, inserindo seu endereço físico e o endereço fixo. Na MV2, mudamos sua configuração de IP estático para IP dinamico: Depois de feita a configuração vamos aos testes: Solicitando ao DHCP que dê um novo endereço IP a eth0 da MV2, esperando que seja o endereço estático que definimos no arquivo dhcpd.conf: Verificando a situação das interfaces em MV2 pós testes: Seção 3 Instalação de servidor proxy 3.1 Pesquisarsobre servidores proxy e explicar: conceito, funcionamento, funcionalidades, vantagens e desvantagens; Um servidor proxy é um computador intermediário que fica entre o computador do usuário e a Internet. Pode ser utilizado para registrar o uso da Internet e também para bloquear o acesso a um site da Web. O firewall do servidor proxy bloqueia alguns sites ou páginas da Web por vários motivos. Vantagens : Servidores proxy: * Funcionam como firewall e filtro de conteúdo Constituem um mecanismo de segurança implantado pelo provedor de Internet ou pelos administradores da rede em um ambiente de intranet a fim de desativar o acesso ou filtrar solicitações de conteúdo de determinados sites considerados ofensivos ou prejudiciais para a rede e os usuários. Quando você usa um serviço proxy de qualidade, a sua navegação fica anônima. Isto porque ele gera um IP diferente do seu, fazendo que a sua navegação fique registrada no cache do seu destino * Melhoram o desempenho Armazenam em cache as páginas da Web acessadas por hosts da rede durante determinado período. Sempre que um host solicita a mesma página da Web, o servidor proxy utiliza as informações armazenadas em cache em vez de recuperálas do provedor de conteúdo. Isso proporciona acesso mais rápido às páginas da Web. Desvantagens : Proxies gratuitos estão à disposição de todos usuários. Desse jeito, um único proxy pode ser usado por milhares de pessoas ao mesmo tempo, o que deixa a sua conexão muito mais lenta. Muitos desses proxies têm tempo útil pequeno, exigindo que o usuário procure outro serviço. Do outro lado, proxies pagos tendem a ter velocidade de navegação maior. Não dão suporte para alguns conteúdos como por exemplo serviços de email. 3.2 Instalando Squid em R1 Instalando um proxy Squid na R1 através do comando “aptget install squid” 3.3 Testes com Squid Fazendo testes com Squid através dos comandos “service squid start” , “service squid stop” e “service squid restart” e verificando o status através do comando “service squid status”. Verificamos que o Squid responde na porta 3128, verificado no arquivo /etc/squid/squid.conf: Para testes, criamos dentro do diretório /etc/squid o arquivo sites_bloqueados.txt, que contém uma lista de sites que o proxy deve barrar: Realizamos uma cópia do arquivo original squid.conf, modificando seu nome para squidorifinal.conf e deixamos como backup. Modificamos o arquivo squid.conf (como pode ser observado nos anexos), e a principal modificação foi: Dispensando as linhas comentadas que fizeram parte dos testes de funcionamento, a primeira linha determina que a porta http vai ser a do Squid. A terceira linha determina o nome do nosso host. Ja a sexta constroi uma regra que permite o acesso por qualquer IP (lembramos que o Squid lê seu arquivo de configuração de maneira sequencial). A proxima linha faz uma regra para acesso pelas portas https e a seguinte pela http e outros protocolos, como o tcp na 21. Na proxima regra, delimitamos que os sites contidos no arquivo /etc/squid/sites_bloqueados.txt devem passar pelo proxy. A frente temos as definições dos acessos, negando acesso aos sites contidos no sites_bloqueados.txt e liberando a qualquer outro com as demais regras. Fizemos o restart do Squid: Configuramos o navegador em Edit>Preferences>Advanced>Network>Settings e configuramos o proxy do Squid manualmente: E testamos o acesso a sites bloqueados e permitidos: Seção 4 Desenvolvimento de servidor http Grupo 4 : Servidor HTTP: servidor que fornece acesso aos arquivos de uma pasta; suporte a conexão persistente; Segue o código abaixo do servidor HTTP: import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.nio.file.Files; import java.nio.file.Paths; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public class Servidor { public static void main(String[] args) throws IOException { while (true) { ServerSocket servidor = new ServerSocket(8000); Socket socket = servidor.accept(); if (socket.isConnected()) { System.out.println(socket.getInetAddress()); BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println("Requisição: "); String linha = buffer.readLine(); String[] dadosReq = linha.split(" "); String metodo = dadosReq[0]; String caminhoArquivo = dadosReq[1]; String protocolo = dadosReq[2]; while (!linha.isEmpty()) { System.out.println(linha); linha = buffer.readLine(); } if (caminhoArquivo.equals("/")) { caminhoArquivo = "index.html"; } File arquivo = new File(caminhoArquivo.replaceFirst("/", "")); if (!arquivo.exists() && new File(caminhoArquivo.replaceFirst("/", "") + ".html").exists()) { arquivo = new File(caminhoArquivo.replaceFirst("/", "") + ".html"); } String status = protocolo + " 200 OK\r\n"; if (!arquivo.exists()) { status = protocolo + " 404 Not Found\r\n"; arquivo = new File("404.html"); } byte[] conteudo = Files.readAllBytes(arquivo.toPath()); SimpleDateFormat formatador = new SimpleDateFormat("E, dd MMM yyyy hh:mm:ss", Locale.ENGLISH); formatador.setTimeZone(TimeZone.getTimeZone("GMT")); Date data = new Date(); String dataFormatada = formatador.format(data) + " GMT"; String header = status + "Location: http://localhost:8000/\r\n" + "Date: " + dataFormatada + "\r\n" + "Server: MeuServidor/1.0\r\n" + "ContentType: text/html\r\n" + "ContentLength: " + conteudo.length + "\r\n" + "Connection: close\r\n" + "\r\n"; OutputStream resposta = socket.getOutputStream(); resposta.write(header.getBytes()); resposta.write(conteudo); resposta.flush(); servidor.close(); } } } } Seção 5 Análise do protocolo IP e TCP 5.1. Descrever um caso de simulação de uso do protocolo da seção 4; Ao ser requisitada uma página sem informar o endereço completo, o programa seleciona automaticamente o arquivo index.html e envia como resposta ao navegador. Acima a saída do programa quando solicitada a página padrão. Links entre as páginas são entregues pelo servidor normalmente ao serem solicitados, o exemplo abaixo exibe a página alvo do link contido na página do exemplo anterior. Quando uma página inexistente é solicitada, o servidor retorna a página padrão de erro 404 arquivo não encontrado. 5.2. Fazer a análise detalhada da simulação descrita em 5.1 no software Wireshark, provando por capturas de telas: a) Análise de quadro Ethernet com encapsulamento IP e TCP: tamanho total do quadro; início e fim do cabeçalho IP; início e fim do cabeçalho IP; conteúdo dos dados da camada de aplicação; Seção 6 Considerações finais, referências bibliográficas, anexos Com este trabalho aprendemos a configurar diferentes máquinas para que possam comunicarentre si, assim como suas configurações DHCP, DNS e PROXY, descobrimos os inúmeros erros que podem ocorrer durante essa configuração e as formas de como resolvêlos, algo que é de muita importância para o mercado de trabalho. BIBLIOGRAFIA Configurando um servidor DHCP Servidores Linux, Guia Prático; Disponível em: http://www.hardware.com.br/livros/servidoreslinux/configurandoservidordhcp.html Último acesso em 01/03/2016 às 23:34. Configurar Servidor Proxy Squid (Ubuntu) [Artigo] Viva o Linux; Disponível em: https://www.vivaolinux.com.br/artigo/ConfigurarservidorproxySquid(Ubuntu) Último acesso em 02/03/2016 às 15:32. MORIMOTO, Carlos E.;Servidores Linux Guia Prático;Porto Alegre: Editora Meridional Ltda.; Novembro de 2009. 1ª Reimpressão. http://tableless.com.br/criandoseuproprioservidorhttpdozeroouquaseparteiii/ Último acesso em 02/03/2016 às 20:30.
Compartilhar