Endereçamento Privado Proxy e NAT

Apresentações semelhantes


Apresentação em tema: "Endereçamento Privado Proxy e NAT"— Transcrição da apresentação:

1 Endereçamento Privado Proxy e NAT
Redes de Computadores II O objetivo deste módulo é apresentar o conceito de endereçamento IP privado, e como este pode ser utilizado em redes IP corporativas ou residenciais. Este módulo discute também como os mecanismos de proxy e NAT são utilizados para permitir que computadores com endereços IP privado tenham acesso a recursos na Internet.

2 Motivação para o Endereçamento IP Privado
Esgotamento de Endereços IPv4 Blocos de endereços /8 disponíveis Previsão inicial de esgotamento 1994 Originalmente, o endereçamento IP na Internet utilizava apenas o conceito de endereçamento IP público. Neste modo de endereçamento, cada "host" conectado a Internet precisa ter um endereço IP único em toda a rede. No modelo original, não havia uma distinção clara entre computadores "clientes" e "servidores". Na prática, todo computador conectado a Internet era potencialmente um servidor, no sentido em que ele poderia ser endereçado por qualquer outro computador da rede. Como mostra a curva ilustrada na figura, a quantidade de hosts conectadas a Internet passou a ter um crescimento exponencial a partir da década de Esse crescimento colocou em cheque a arquitetura de endereçamento inicialmente concebida para a Internet, de forma que no início dos anos 90, o IETF propôs duas soluções emergenciais para suportar a crescente expansão do uso da Internet: A primeira, foi o CIDR (Classless Inter Domain Routing), que permitiu a definição de sub-redes com blocos de endereços menores, reduzindo o desperdício no processo de atribuição de endereços IPv4. A segunda, foi a introdução do conceito de endereçamento privado, que permitia utilizar endereços não únicos na Internet. Esse conceito também passou a diferenciar computadores com a função de cliente e servidor.

3 Autoridades de Registro de Endereço
IANA ARIN RIPE NCC AfriNIC LACNIC APNIC América do Norte Europa, Oriente e Asia Central Africa América Latina e Caribe Ásia e Pacífico O controle global da atribuição de endereços IP é feito pelo IANA (Internet Assigned Numbers Authority). A IANA é responsável por designar quantos blocos de endereço estão disponíveis para cada região do planeta, evitando duplicação ou má distribuição dos endereços. A IANA utiliza 5 autoridades de abrangência regional para agilizar o processo de atribuição dos endereços em todo o mundo. Essas autoridades são: AfriNIC: responsável pela região da África APNIC: responsável pela região Ásia e Pacífico ARIN: responsável pela região da América do Norte LACNIC: responsável pela região da América Latina e algumas ilhas do Caribe RIPE NCC: responsável pela Europa, Oriente Médio e Ásia Central A IANA também foi a responsável por definir os prefixos de rede que foram designados para uso como endereçamento IP privado. O endereçamento privado foi definido originalmente pela RFC 1918 datada de fevereiro de 1996. RIR: Autoridade de Registro Regional

4 Endereços Privados: RFC 1918
Prefixo Faixa de Endereços Descrição /8 a Uma rede de endereços classe A. /12 a 16 redes contíguas de endereços classe B. /16 a 256 redes contíguas de endereços classe C. Os prefixos de rede que foram definidos como endereçamento privado estão mostrados pela tabela acima. Esses prefixos foram escolhidos entre os blocos de endereços disponíveis na época em que a RFC 1918 foi elaborada. Atualmente, a quantidade de endereços atribuídas para endereçamento privada pode ser considerada exagerada. Somente o prefixo de classe A representa um total de 16 milhões de endereços. Então, por que foram reservados também endereços nas classes B e C? A justificativa para isso é que na época em que o conceito de endereçamento privado foi introduzido, o CIDR não estava muito difundido. Isso significa que uma grande quantidade de equipamentos não era capaz de trabalhar com máscaras de sub-rede de tamanho variável, de forma que a rede 10 não podia ser livremente dividida. Dessa forma, uma faixa de IPs privados foi escolhido em cada uma das classes. De acordo com a RFC 1918, qualquer endereço IP da faixa privada pode ser utilizado livremente, sem necessidade de solicitar registro a IANA ou a uma autoridade regional de distribuição de endereços. Contudo, a RFC 1918 define também que os roteadores da Internet não devem possuir rotas para endereços privados. Isto é, pacotes que tenham endereços de destino privado não são encaminhados pelos roteadores da Internet, sendo roteados apenas por roteadores privados, que conectam sub-redes de uma mesma corporação.

5 IP Privado = Não roteável pela internet
origem destino Internet Os roteadores divulgam os endereços IPs de sua rede usando o protocolo de roteamento BGP. MAS, é PROIBIDO divulgar endereços privados

6 Tipos de Hosts (RFC 1918) Categoria I: clientes e servidores sem conexão com a Internet Clientes acessam apenas servidores internos Servidores não são acessíveis pela internet IP privado IP privado IP privado Conforme dito anteriormente, a concepção inicial de endereçamento da Internet presumia que qualquer host na Internet poderia ser acessado diretamente por qualquer outro host. Pelo termo "acessado" entenda-se um host capaz de receber conexões, isto é, um host capaz de se comportar como "servidor". Um host cliente, por outro lado, é capaz de iniciar conexões com outros hosts, mas não é capaz de recebê-las. A RFC 1918 introduz uma diferenciação de tipos de hosts, indicando que nem todos os hosts precisam ter a habilidade de receber conexões. De acordo com essa RFC, os hosts foram divididos em três categorias: Hosts categoria 1: Hosts que se comunicam APENAS INTERNAMENTE em uma rede corporativa. Isto é, hosts que não possuem nenhum tipo de conectividade com a rede Internet pública. Essa categoria de host deve utilizar apenas endereços IP privados. Hosts categoria 2: Hosts que se comunicam INDIRETAMENTE com a Internet pública. O termo indiretamente significa que este host precisa sempre de um tradutor de endereços que intermedie sua comunicação com a Internet. Os dois tipos de tradutores de endereços mais comuns são o NAT (Network Address Translation) e o Proxy. Nessa categoria, hosts se comportam basicamente como "clientes", e devem utilizar endereços privados. Hosts categoria 3: Hosts que se comunicam DIRETAMENTE com o mundo externo. Isto é, eles podem receber conexões de outros hosts da Internet. Essa categoria de host se tem a habilidade de se comportar como "servidor". sw sw

7 Tipos de Hosts (RFC 1918) Internet sw
Categoria II: clientes e servidores privados Clientes acessam servidores internos e externos Servidores internos não são acessíveis pela Internet O roteador que conecta a rede a Internet precisa de um tradutor de endereço IP público IP privado IP público IP privado Conforme dito anteriormente, a concepção inicial de endereçamento da Internet presumia que qualquer host na Internet poderia ser acessado diretamente por qualquer outro host. Pelo termo "acessado" entenda-se um host capaz de receber conexões, isto é, um host capaz de se comportar como "servidor". Um host cliente, por outro lado, é capaz de iniciar conexões com outros hosts, mas não é capaz de recebê-las. A RFC 1918 introduz uma diferenciação de tipos de hosts, indicando que nem todos os hosts precisam ter a habilidade de receber conexões. De acordo com essa RFC, os hosts foram divididos em três categorias: Hosts categoria 1: Hosts que se comunicam APENAS INTERNAMENTE em uma rede corporativa. Isto é, hosts que não possuem nenhum tipo de conectividade com a rede Internet pública. Essa categoria de host deve utilizar apenas endereços IP privados. Hosts categoria 2: Hosts que se comunicam INDIRETAMENTE com a Internet pública. O termo indiretamente significa que este host precisa sempre de um tradutor de endereços que intermedie sua comunicação com a Internet. Os dois tipos de tradutores de endereços mais comuns são o NAT (Network Address Translation) e o Proxy. Nessa categoria, hosts se comportam basicamente como "clientes", e devem utilizar endereços privados. Hosts categoria 3: Hosts que se comunicam DIRETAMENTE com o mundo externo. Isto é, eles podem receber conexões de outros hosts da Internet. Essa categoria de host se tem a habilidade de se comportar como "servidor". roteador com função de tradução de IP Internet NAT sw IP privado IP público

8 Tipos de Hosts (RFC 1918) Internet sw
Categoria III: servidores públicos Clientes externos podem acessar a servidores Internos Roteadores não precisam de tradutor de IP Essas redes precisam ser protegidas com firewall IP privado IP público IP público NAT Conforme dito anteriormente, a concepção inicial de endereçamento da Internet presumia que qualquer host na Internet poderia ser acessado diretamente por qualquer outro host. Pelo termo "acessado" entenda-se um host capaz de receber conexões, isto é, um host capaz de se comportar como "servidor". Um host cliente, por outro lado, é capaz de iniciar conexões com outros hosts, mas não é capaz de recebê-las. A RFC 1918 introduz uma diferenciação de tipos de hosts, indicando que nem todos os hosts precisam ter a habilidade de receber conexões. De acordo com essa RFC, os hosts foram divididos em três categorias: Hosts categoria 1: Hosts que se comunicam APENAS INTERNAMENTE em uma rede corporativa. Isto é, hosts que não possuem nenhum tipo de conectividade com a rede Internet pública. Essa categoria de host deve utilizar apenas endereços IP privados. Hosts categoria 2: Hosts que se comunicam INDIRETAMENTE com a Internet pública. O termo indiretamente significa que este host precisa sempre de um tradutor de endereços que intermedie sua comunicação com a Internet. Os dois tipos de tradutores de endereços mais comuns são o NAT (Network Address Translation) e o Proxy. Nessa categoria, hosts se comportam basicamente como "clientes", e devem utilizar endereços privados. Hosts categoria 3: Hosts que se comunicam DIRETAMENTE com o mundo externo. Isto é, eles podem receber conexões de outros hosts da Internet. Essa categoria de host se tem a habilidade de se comportar como "servidor". Internet sw

9 Topologia mais usual IP público IP público IP privado IP privado sw sw
IP público IP público IP privado IP privado sw sw A figura ilustra como hosts com endereçamento IP privado e público são tratados de forma diferenciada em uma rede IP. A figura mostra uma rede corporativa dividida em duas sub-redes: uma com endereços privados e outra com endereços públicos. A rede com endereços privados é basicamente constituída por computadores clientes, enquanto que a rede com endereços públicos é constituída por computadores que atuam como servidores (por exemplo, servidores www, , DNS, etc.) O roteador 1 que conecta a rede pública com a rede privada está configurado para rotear endereços privados. Isto é, ele possui rotas para encaminhar pacotes destinados a rede privada. Já o roteador 2, não deve possuir rotas que permitam que computadores com endereços IP privado se comuniquem com a Internet. Dessa forma, hosts externos (vindos da Internet) podem abrir conexões com os servidores através do roteador 2. Mas eles não podem abrir conexões com os clientes através do roteador 1. De fato, os pacotes endereçados para os hosts privados nem sequer chegariam ao roteador 2, pois nenhum roteador da Internet saberia para onde encaminhar esses pacotes. Muitos administradores de redes costuma chamar endereços IP privados de não roteáveis. Contudo, essa definição não é muito precisa. Endereços IP não são roteáveis na Internet, mas são roteáveis por roteadores que conectam duas redes internas. Nesse cenário, os hosts com IP privado são categoria I e os com IP público são categoria III. Note que, sem o auxílio de um conversor de endereços, os hosts com IP privado não tem nenhum acesso a Internet (nem como clientes), simplesmente porque são incapazes de receber respostas vindas da Internet. IP privado IP público NAT Internet REGRA: faz NAT para apenas se o IP de origem pertencer a rede /24

10 Tradutores de Endereço
Implementados em Roteadores: NAT (Network Address Translation) NAPT (Network Address and Port Translation) Implementados em Servidores: Proxy de Aplicação Proxy Socks.

11 Mapeamento Estático e Dinâmico
Mapeamentos configurados pelo administrador Um endereço IP privado é sempre mapeado no mesmo IP público Dinâmico. O mapeamento acontece apenas quando o cliente envia o primeiro pacote através do roteador O mapeamento é desfeito quando não for mais usado TCP: dura toda a conexão UDP: expira por falta de uso (3 a 5 min)

12 NAT: Network Address Translation
Mapeamento 1 para 1: Cada IP privado é mapeado em um único IP público Mapeamento estático: Se o número IPs públicos = número de IPs privados Mapeamento dinâmico: Se o número IPs públicos < número de IPs privados Pool de endereços públicos NAT IPprivado1 IPpúblico1 IPprivado2 IPpúblico2 O NAT é um mecanismo que permite traduzir endereços privados em endereços públicos registrados. Seu funcionamento foi originalmente definido pela RFC As funções de NAT estão bastante relacionadas as funções de roteamento, e por isso são implementadas pelas camadas de rede dos sistemas operacionais de roteadores ou mesmo de desktops, como o Linux ou o Windows. Por estar relacionada ao roteamento, a função de NAT é normalmente implementada em roteadores ou firewalls. A função de NAT também é bastante comum em roteadores ADSL e WiFi. Apesar do termo NAT ser usado universalmente, existe de fato duas variantes de tradução de endereços: NAT e NAPT. Como seu próprio nome diz, o NAT (Network Address Translation) converte apenas endereços IP, e permite efetuar apenas mapeamentos de um-para-um, conforme ilustrado na figura. Nesse modo de mapeamento, cada endereço IP privado é mapeado em um endereço IP público distinto. O NAPT (Network Address and Port Translation) utiliza informações das porta de transporte (TCP ou UDP), o que permite efetuar mapeamentos de um-para-muitos. Nesse modo de mapeamento, múltiplos endereços privados podem ser mapeados em um único endereço IP público, pois as informações de porta são utilizadas como extensões do endereço IP. O mapeamento feito pelo NAT pode ser também estático ou dinâmico. No mapeamento estático, as regras de mapeamento são configuradas previamente, de maneira que um dado endereço IP privado está sempre mapeado em um mesmo IP público (e também a uma mesma porta, no caso do NAPT). No mapeamento dinâmico, as regras de mapeamento são configuradas dinamicamente, criando mapeamentos temporários que são automaticamente desfeitos quando o IP privado deixa de ser utilizado por muito tempo. IPprivado3 IPpúblico3 IPprivado1= IPpúblico1 IPprivado2= IPpúblico2 IPprivado3= IPpúblico3 TABELA DE MAPEAMENTO

13 NAPT: Network Address and Port Translation
Mapeamento 1 para muitos: Muitos IP privados no mesmo IP público O mapeamento é dinâmico Apenas 1 IP público é suficiente NAT IPprivado1 IPpúblico1:Porta1 IPprivado2 IPpúblico1:Porta2 O NAT é um mecanismo que permite traduzir endereços privados em endereços públicos registrados. Seu funcionamento foi originalmente definido pela RFC As funções de NAT estão bastante relacionadas as funções de roteamento, e por isso são implementadas pelas camadas de rede dos sistemas operacionais de roteadores ou mesmo de desktops, como o Linux ou o Windows. Por estar relacionada ao roteamento, a função de NAT é normalmente implementada em roteadores ou firewalls. A função de NAT também é bastante comum em roteadores ADSL e WiFi. Apesar do termo NAT ser usado universalmente, existe de fato duas variantes de tradução de endereços: NAT e NAPT. Como seu próprio nome diz, o NAT (Network Address Translation) converte apenas endereços IP, e permite efetuar apenas mapeamentos de um-para-um, conforme ilustrado na figura. Nesse modo de mapeamento, cada endereço IP privado é mapeado em um endereço IP público distinto. O NAPT (Network Address and Port Translation) utiliza informações das porta de transporte (TCP ou UDP), o que permite efetuar mapeamentos de um-para-muitos. Nesse modo de mapeamento, múltiplos endereços privados podem ser mapeados em um único endereço IP público, pois as informações de porta são utilizadas como extensões do endereço IP. O mapeamento feito pelo NAT pode ser também estático ou dinâmico. No mapeamento estático, as regras de mapeamento são configuradas previamente, de maneira que um dado endereço IP privado está sempre mapeado em um mesmo IP público (e também a uma mesma porta, no caso do NAPT). No mapeamento dinâmico, as regras de mapeamento são configuradas dinamicamente, criando mapeamentos temporários que são automaticamente desfeitos quando o IP privado deixa de ser utilizado por muito tempo. IPprivado3 IPpúblico1:Porta3 IPprivado2 = IPpúblico1:Porta1 IPprivado2 = IPpúblico1:Porta2 IPprivado3 = IPpúblico1:Porta3 TABELA DE MAPEAMENTO

14 Portas O NAPT traduz a porta de origem usada pela aplicação cliente
Atualmente a faixa livre de tradução está entre e Sistemas mais antigos ainda consideram que todas as portas acima de 1024 são dinâmicas.

15 Tipos de NAT O cliente é mantém o mesmo IP público e porta em qualquer comunicação. Qualquer computador externo pode enviar pacotes para um mapeamento existente. Semelhante ao Full Cone, mas apenas hosts externos previamente endereçados (independente da porta) podem usar mapeamentos existentes.

16 Tipos de NAT Semelhante ao Restricted Cone, mas hosts externos se comunicam com o cliente usando apenas a sua porta contatada pelo cliente interno. Utiliza mapeamento de porta e IP diferentes para destinos diferentes. Apenas os hosts externos previamente endereçados podem enviar pacotes ao cliente

17 SNAT e DNAT Pré-Roteamento [DNAT] Pós-Roteamento [SNAT]
Interface de Entrada Interface de Saída Pré-Roteamento [DNAT] Pós-Roteamento [SNAT] roteamento             decisão sobre o encaminhamento do pacote O NAT pode ter efeito sobre regras de Firewall e QoS

18 Source NAT e Destination NAT
Source NAT: SNAT Altera o endereço de origem do pacote Mapeamento dinâmico É implementado após a ação de roteamento (pós-roteamento). Masquerading Destination NAT: DNAT Altera o endereço de destino do pacote Mapeamento estático É implementado antes do roteamento (pré-roteamento). Redirecionamento de Portas Balanceamento de Carga Proxies transparentes

19 Source NAT 1 2 checksum1 checksum2 4 3 checksum4 checksum3 interno externo Mapeamento dinâmico dos endereços de origem O checksum precisa ser recalculado IPv4 Privado IPv4 Público interno externo to

20 NAT (IPTABLES) SNAT para endereço fixo: iptables -t nat -A POSTROUTING -j SNAT -o eth0 --to SNAT com pool de endereços: iptables -t nat -A POSTROUTING -j SNAT -o eth0 --to Masquerading efetua o mapeamento ao IP atribuído a interface iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 O NAT efetua apenas mapeamentos de endereços IP, não utilizando informações de porta. Esse método não é muito utilizado para permitir o acesso de clientes com IP privado a Internet, pois ele realiza apenas mapeamentos de um-para-um (isto é, o número de endereços públicos necessários é igual ao número de clientes simultâneos acessando a Internet). O NAT pode ser utilizado em situações residenciais (para mapear, por exemplo, o endereço público do roteador ADSL ao endereço de um único computador). Ele também é usado para permitir que duas redes com endereços IP superpostos se comuniquem sem haver conflito. Imagine, por exemplo, que duas sub-redes, A e B, utilizam o prefixo privado /24. O administrador de rede pode utilizar o NAT em um roteador entre as redes A e B para traduzir os endereços dos pacotes enviados pela rede A para outro prefixo (digamos /24), a fim de permitir que as duas redes se comuniquem. Além da troca dos IPs, o checksum do cabeçalho IP é recalculado, uma vez que um dos endereços IP do pacote originalmente enviado para o roteador NAT será alterado. Essa operação pode diminuir (muito pouco) a velocidade do roteador.

21 Source NAPT 1 2 1024 80 1025 80 4 3 80 1024 80 1025 interno externo :1024 :1024 :1024 :1025 :1025 :1026 Mapeamento dinâmico dos endereços de origem O checksum precisa ser recalculado O NAPT utiliza informações de porta para permitir que um único endereço IP público seja compartilhado por uma grande quantidade computadores com IP privados. Nesse mecanismo, cada cliente é associado a uma porta de origem TCP ou UDP única. A figura ilustra esse conceito. Imagine que o cliente envia um pacote para Internet utilizando a porta de origem Quando esse pacote chega ao roteador, o NAPT verifica se já existe um mapeamento ativo para esse cliente. Se não existir, ele cria um mapeamento associando o IP e Porta do origem do cliente ao seu próprio IP público e uma outra porta de origem. A porta de origem escolhida para mapeamento pelo roteador dependerá das portas já utilizadas. Em geral, o algoritmo de mapeamento tentará manter a porta utilizada pelo cliente inalterada, substituindo-a apenas caso haja um outro mapeamento ativo usando a mesma porta. No caso do cliente , a porta 1024 poderá ser mantida. Observe que cada conexão feita pelo cliente gera um mapeamento distinto. Por exemplo, se o cliente enviar um pacote por uma outra porta de origem (1026), um novo mapeamento será criado. Quando o cliente envia um pacote, usando a porta 1024, o roteador NAT efetua uma substituição para a porta 1025, já que a porta 1024 já está sendo usada. Similarmente, quando o cliente envia um pacote usando a porta de origem 1025, o mapeamento é feito para porta O objetivo do NAPT é que cada mapeamento seja feito para uma porta distinta. Usando essa estratégia é possível gerar até mapeamentos simultâneos para um único endereço IP (se bem que é recomendável não usar as portas reservadas abaixo de 1024 para esse mapeamentos). Na prática, devido ao consumo de memória e processamento causado pelo NAPT, esse número raramente pode ser alcançado em roteadores convencionais.            IPv4 Privado IPv4 Público 1024 interno externo 1025 80 1024

22 SNAPT no Linux O Linux implementa SNAPT sempre que necessário de forma automática, mas mantém a troca das portas no interior de classes: Portas abaixo de 512 Portas entre 512 and 1023 Portas acima de 1024 Exemplo: altera o endereço de origem para , usando as portas , apenas para TCP iptables -t nat -A POSTROUTING -j SNAT -p tcp -o eth0 --to

23 Destination NAPT 2 1 1024 80 1024 8080 80 1024 3 4 8080 1024 interno externo :80 :80 :22 :22 :80 :8080 O domínio é mapeado no endereço do roteador = Mapeamento estático dos endereços de destino A funcionalidade DNAT (destination NAT) permite redirecionar pacotes recebidos pelo roteador para servidores específicos. Ele é utilizado para permitir que hosts com endereços privados recebam conexões de clientes da Internet. Essa funcionalidade também é conhecida como redirecionamento. Essa funcionalidade pode ser implementada tanto para o NAT quanto para o NAPT. A figura ilustra esse conceito para o caso mais genérico do DNAPT. Observe, nesse caso, que clientes externos devem endereçar os servidores internos utilizando o IP do roteador NAT. De fato, o nome de domínio dos servidores deve ser registrado usando o endereço público do roteador. Nesse caso, o mapeamento é feito de forma estática. O administrador de rede configura previamente o mapeamento, redirecionando pacotes enviados para portas específicas do roteador para outros endereços privados com ou sem tradução de porta. Por exemplo, pacotes recebidos pelo roteador na porta 80 ou 25, são redirecionados para o servidor nas mesmas portas. Pacotes recebidos na porta 8080 do roteador, são redirecionados para porta 80 do servidor E assim por diante. No linux, o DNAT é configurado utilizando-se o iptables. Os comandos a seguir fornecem alguns exemplos de configuração. # Redireciona pacotes recebidos na porta 8080 para o IP e porta 80. iptables -t nat -A PREROUTING -p tcp --dport i eth0 -j DNAT --to :80  O redirect é um tipo especial de DNAT. Essa ação especial implica em alterar o endereço de destino para o próprio endereço da interface que recebeu o pacote. Ele é util quando o proxy está sendo executado na mesma máquina em que o roteador. # Envia pacotes web (port-80) para a porta do squid (proxy transparente) iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 O DNAT pode ser usando também para prover balanceamento de carga entre múltiplos servidores, efetuado mapeamentos distintos para cada conexão recebida. Esse conceito é ilustrado pelo comando a seguir: # Altera os endereços de destino para até , através de um processo de balanceamento de carga. iptables -t nat -A PREROUTING -i eth0 -j DNAT --to IPv4 Privado IPv4 Público 80 22 interno externo 1024 80

24 DNAT no Linux Pacotes recebidos na porta 8080 são enviados para na porta 80. iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp --dport to :80  Pacotes recebidos na porta 80 são direcionados para 3128 (Proxy Squid) iptables -t nat -A PREROUTING -j REDIRECT -i eth0 -p tcp --dport to-port 3128 Faz balanceamento de carga de até iptables -t nat -A PREROUTING -j DNAT -i eth0 --to

25 FTP Ativo X Passivo Ativo Passivo

26 Tipos de FTP: Ativo X Passivo
O FTP usa uma conexão de comando, e outra para transferência de dados. Duas formas de operação: PORT (Ativo) O cliente conecta-se a porta 21 do servidor FTP pela porta N (>1023) O cliente envia o comando PORT indicado que aguarda uma conexão na porta N+1 O servidor se conecta ao cliente pela porta 20. PASV (Passivo). O cliente conecta-se a porta 21 do servidor FTP O cliente envia um comando PASV indicado que deseja se conectar em modo passivo. O servidor abre uma porta aleatória para receber a conexão de dados, e informa essa porta para o cliente através da conexão de comando.

27 FTP Ativo funciona com (S)NAT?
1026 21 PORT : 1027 1026 21 PORT : 1027 1 2 20 1027 DATA 3 Analisar o protocolo de aplicação requer Deep Packet Inspection interno externo De modo geral, o NAT não funcionará em situações onde o IP apareça em um campo do protocolo de aplicação. Esse é tipicamente o caso de protocolos de aplicação que utilizam o conceito de call-back. Por exemplo, um servidor FTP utiliza geralmente duas portas de operação: 21 para controle da conexão e 20 para transferência de dados. O cliente sempre inicia sua conexão na porta 21 do servidor FTP. A conexão para transferência de dados, contudo, pode ser feita de duas formas: PORT (Ativo) e PASV (Passivo). No modo PORT (Ativo), o cliente efetua uma conexão na porta 21 do servidor FTP, utilizando uma porta de cliente aleatória N (>1023) e abre uma porta para receber conexões de dados na porta N+1. O cliente informa ao servidor que deverá receber uma conexão de dados na porta N+1 através do comando PORT inserido no campo de payload do pacote IP. Nesse caso, o servidor FTP deverá efetuar uma conexão na porta N+1 do cliente utilizando sua porta 20. Esse processo, traz inúmeros problemas quando feito através do NAT. Primeiro, não existe mapeamento para o cliente através da porta N+1, apenas para porta N. Segundo, quando o NAT efetua a tradução do endereço IP de origem do cliente pelo seu próprio IP, ele não traduz as informações contidas no payload do pacote IP. Dessa forma, o servidor FTP tenta efetuar a conexão no endereço IP privado do cliente, e não no endereço público, causando falha de conexão. Esse modo de operação causa problemas se o cliente estiver atrás de um SNAT. No modo PASV (Passivo) a porta 20 não é utilizada. Nesse caso, o cliente envia um comando PASV indicado que deseja efetuar a conexão de dados com os servidor FTP ao invés de recebê-la. Nesse caso, o servidor abre uma porta aleatória para receber a conexão de dados, e informa essa porta para o cliente através da conexão de comando. O cliente então efetua a conexão. Esse modo de operação irá apresentar problemas ser o servidor FTP estiver atrás de um DNAT. cmd cmd 1026 21 data data 20 1027 IPv4 Privado IPv4 Público

28 Carrier Grade NAT (CGN)
Na abordagem convencional, os usuários residenciais (CPE) precisam de pelo menos um IP público. A abordagem CGN permite atribuir endereços IP privados aos usuários e efetuar a conversão no interior da rede do ISP. PERGUNTA: É possível fazer DNAT com CGN?

29 NAT Traversal Conjunto de técnicas que procuram resolver problemas causados pelo NAT. ICE (Interactive Connectivity Establishment): Protocolo de Negociação para NAT traversal A) NAT hole punching Utiliza servidores externos para informar o mapeamento Usado pelo Skype

30 STUN e TURN STUN: Session Traversal Utilities for NAT
Conjunto de métodos padronizados para fazer Hole Punching Usado pelo SIP (sinalização do VoIP) e WebRTC (RTC via Javascript) Não funciona com Symmetric NAT TURN: Traversal Using Relays around NAT Extensão do STUN para sportar Symetric NAT

31 uPnP IGD uPnP: Universal Plug and Play
Mecanismo de descoberta e autoconfiguração de dispositivos e serviços de rede uPnP IGD: Internet Gateway Device Protocolo que permite efetuar mapeamento de porta automaticamente em roteadores Descobre o endereço público Descobre mapeamentos existentes Cria mapeamentos de porta temporários Considerado potencialmente perigoso, especialmente se o protocolo for habilitado na porta externa Similares: NAT-PMP: NAT Port Mapping Protocol (2005, Apple) PCP: Port Control Protocol (2013, IETF) Importante na Integração IPv4 vs IPv6

32 Exemplos uPnP IGP define uma API que pode ser usada por aplicações que precisam escutar novas sessões; GetListOfPortMappings() AddPortMapping() AddAnyPortMapping() Microtorrent Determina portas externas disponíveis e efetua o mapeamento Azureus, Shareazav e Emule Tenta efetuar o mapeamento em uma porta externa fixa

33 NAT X Forwarding Proxy 1024 80 NAT 1024 3128 1025 80 Proxy
Uma conexão TCP 1024 80 IPv4 Privado IPv4 Network NAT Duas conexões TCP Os proxies permitem que computadores com endereços IP privados tenham acesso a Internet, de forma semelhante aos NAPTs. Contudo, um proxy opera de forma não-transparente para os clientes, uma vez que ele que quebra o modelo cliente-servidor. Esse conceito é ilustrado pela figura. Observe que apesar de efetuar uma tradução de endereços, um NAT não gera uma nova conexão TCP entre o cliente e o servidor. De fato, apenas uma conexão é gerada, pois a ação do NAT é transparente tanto para o cliente quanto para o servidor. O NAT não é endereçado explicitamente pelo cliente, mas indiretamente, pois ele aparece como um roteador no caminho entre o cliente e a Internet. O proxy, por outro lado, aparece para o cliente como um servidor. Isto significa que o cliente precisa estabelecer uma conexão com o proxy, para que este atue como um “procurador” em nome do cliente perante os servidores na Internet. Como duas conexões de transporte são estabelecidas (uma do cliente até o proxy e outra do proxy até o servidor), dizemos que o proxy “quebra” o modelo cliente servidor. Isso tem várias conseqüências, entre elas desempenho. A função proxy consome muito mais recursos para operar do que o NAT, uma vez que é necessário arcar com os custos das inúmeras conexões estabelecidas pelos clientes com o proxy e do proxy com os servidores de destino. 1024 3128 1025 80 IPv4 Privado IPv4 Network Proxy

34 NAT X Proxy ROTEAMENTO + NAT HTTP TCP Ethernet IP Privado HTTP TCP
CLIENTE ROTEAMENTO + NAT SERVIDOR HTTP TCP Ethernet IP Privado HTTP TCP Ethernet IP Privado IP Privado IP Público Ethernet Ethernet PROXY DE APLICAÇÃO HTTP HTTP CLIENTE SERVIDOR HTTP TCP Ethernet IP Privado HTTP TCP Ethernet IP Privado TCP TCP IP Privado IP Público Ethernet Ethernet

35 Proxy Aplicação vs Proxy Socks
Proxy de Aplicação Utiliza informações dos protocolos da camada de aplicação Suporta apenas protocolos de aplicação conhecidos Proxy SOCKS. Não usa informações da camada de transporte Pode suportar virtualmente qualquer tipo de aplicação, de forma semelhante ao NAT. Aplicação Proxy HTTP HTTP TCP TCP IP Privado IP Público Ethernet Ethernet Proxy Socks TCP/UDP TCP/UDP IP Privado IP Público Ethernet Ethernet

36 Como o proxy determina o endereço do destinatário?
No proxy de aplicação: O endereço e a porta do destinatário são descobertos analisando as informações contidas no cabeçalho de aplicação (usualmente HTTP). No proxy SOCKS: O cliente envia explicitamente uma ordem de redirecionamento antes de submeter o pacote de dados. IP cliente IP Proxy protocolo aplicação ... endereço do servidor IP Proxy IP servidor protocolo aplicação ... endereço do servidor cliente Proxy servidor IP cliente IP Proxy Protocolo SOCKS: redirecione ao servidor IP cliente IP Proxy protocolo de aplicação ... dados IP Proxy IP servidor protocolo de aplicação ... dados cliente Proxy servidor

37 (dispositivo de camada 7)
Proxy de Aplicação Seqüência de empacotamento aplicação HTTP, FTP, SSH, etc. TCP, UDP Ethernet, PPP, etc. IP segmento TCP datagrama UDP pacote quadro O proxy de aplicação extrai as informações do servidor de destino analisando o protocolo de aplicação. Infelizmente, cada protocolo de aplicação formata seu cabeçalho de maneira diferente. O protocolo HTTP, por exemplo, identifica o servidor de destino através de um campo do tipo string, denominado “Host”. Já o protocolo SMPT utiliza a mensagem “RCPT TO”, e assim por diante. Um proxy de aplicação é capaz de operar apenas com um conjunto limitado de protocolos que ele conhece. Os mais comuns são “HTTP”, “FTP”, “SSL” e, por razões históricas, “Gopher”. Dessa forma, numa rede conectada através de Proxy, os serviços disponibilizados pelos usuários são limitados aos serviços que o Proxy é capaz de compreender. Muitos aplicativos utilizam túneis HTTP a fim de superar essa limitação. Túneis HTTP nada mais são do que um artifício de encapsular outros protocolos de aplicação em mensagens HTTP. Outra limitação desse tipo de proxy, é que o software do cliente precisa estar preparado a fim de poder utilizar o proxy. O código para conectar ao proxy de aplicação está embutido nos navegadores Web, software de atualização de anti-virus, e aplicativos P2P, por exemplo. Além dos aplicativos precisarem estar preparados, é necessário configurar cada um dos aplicativos individualmente, informando para cada um deles o endereço do proxy e sua porta correspondente. Essa tarefa pode, contudo, ser simplificada utilizando-se scripts de configuração abaixo, como o exemplo abaixo: HTTP O proxy de aplicação precisa interpretar as informações do protocolo de aplicação (dispositivo de camada 7) FTP SSH

38 Forward Application Proxy
1024 3128 GET /~jamhour/tde.html HTTP/1.1\r\n Host: espec.ppgia.pucpr.br\r\n 1024 3128 1025 80 A figura ilustra o funcionamento de um proxy. No exemplo da figura, o cliente deseja estabelecer uma conexão com o servidor HTTP espec.ppgia.pucpr.br (IP ) na porta 80. Para utilizar um proxy, a aplicação cliente precisa abrir uma conexão TCP na porta de serviço do proxy (no exemplo, 3128). Para encaminhar os pacotes do cliente, o servidor proxy estabelece uma outra conexão TCP com o servidor de destino, utilizado uma porta dinâmica (> 1023, no exemplo 1025), como se ele próprio fosse o cliente. Conforme ilustrado pela figura, os pacotes são enviados para o endereço IP do proxy e para a porta de serviço do proxy, e não para servidor HTTP destinatário. Os pacotes recebidos do cliente são reenviados, utilizando o endereço IP público do proxy e a porta aleatória escolhida para a conexão com o servidor de destino. IPv4 Privado IPv4 Network Proxy 1025 80 GET /~jamhour/tde.html HTTP/1.1\r\n Host: espec.ppgia.pucpr.br\r\n

39 Proxy de Aplicação: Deep Packet Inspection
SMTP HELO ... MAIL FROM ... RCPT TO ... DATA ... CRLF CRLF QUIT ... HTTP GET ... Host ... Accept-Language ... Accept-Encoding ... User-Agent ... Content-Length: ... Cada protocolo de aplicação possui uma estrutura diferente, então é impossível fazer um proxy capaz de interpretar qualquer aplicação

40 Proxy Auto-Configuration (PAC) file
function FindProxyForURL(url,host) { if(isInNet(host, " ", " ") || isInNet(host, " ", " ") { return "DIRECT"; } else { return "PROXY :3128"; } }

41 Mapeamento de Conexões pelo Proxy
O Proxy move os dados recebidos de um SOCKET para outro Conexão TCP do cliente ao proxy Conexão TCP do proxy até o destino :1024 => :3128 :1024=> :80 :1024=> :3128 :1025=> :80 :1025=> :3128 :1026=> :80 IPv4 Privado IPv4 Público O mapeamento de conexões efetuadas pelo proxy é bastante semelhante ao NAPT. Para cada conexão de cliente recebida, o proxy abre uma nova conexão com o servidor de destino utilizando uma porta ainda não utilizada. Dessa foram, um proxy pode, teoricamente, atender a aproximadamente 63K clientes (se descontarmos a faixa de portas abaixo de 1024) com um único endereço IP. A conexões criadas pelo proxy são dinâmicas. Geralmente, os proxies de aplicação oferecem serviços apenas para aplicações implementadas sobre o protocolo de transporte TCP. Nesse caso, o servidor proxy encerra a conexão com o servidor no momento que o cliente encerrar a conexão correspondente com o proxy. Caso o cliente não encerre a conexão explicitamente, e fique sem utilizar o mapeamento por um tempo excessivo (por exemplo, superior a 5 minutos), a conexão pode ser encerrada de por iniciativa do proxy para poupar recursos do servidor. O protocolo de aplicação HTTP é de longe o mais utilizado com os proxies de aplicação. No caso mais genérico, esse protocolo não mantém conexões ativas. O protocolo HTTP encerra a conexão com o servidor assim que as informações de uma página Web são recebidas por completo. Dessa forma, a quantidade de recursos consumidos do proxy é reduzida. 1024 1024 1025 1025 3128 80 1026 1024 Proxy

42 Mapeamento de Conexões pelo Proxy
Semelhante ao NAPT, permite compartilhar inúmeros IPs privados com um único IP público. Proxy recebe conexões dos clientes internos em uma porta fixa Proxy abre conexões para servidores externos usando uma porta aleatória O HTTP encerra a conexão com o servidor assim que as informações de uma página Web são recebidas por completo.

43 Função de Cache do Forward Proxy
Proxy de Aplicação GET Cache HTTP/ OK\r\n GET GET Apesar das limitações impostas pelos proxies de aplicação ao usuários, seu uso é muito difundido em ambientes corporativos. A razão para isso, é que esses proxies oferecem um grande controle para os administradores de rede sobre os acessos dos usuários a Internet. Por serem servidores capazes de interpretar o protocolo de aplicação, esse tipo de proxy pode prestar inúmeros serviços tais como: HTTP/ Not Modified\r\n HTTP/ OK\r\n

44 Serviços Adicionais do Proxy
Cache de objetos HTTP: armazena objetos mais acessados em cache permite reduzir a banda utilizada do link com a Internet. Autenticação: controla o acesso a Internet através de um pedido de autenticação para usuário. Filtragem de endereços URL: proíbe o acesso a certos endereços na Internet. Filtragem de conteúdo: proíbe a transferência de objetos com certos tipos MIME (video, áudio, executáveis, etc.) Bloqueio e remoção de virus e malware: proíbe a entrega de objetos com vírus ou algum tipo de malware.

45 Proxy Transparente Outros Protocolos HTTP ou HTTPs Roteador NAT
Cliente IP Privado Proxy IP Público

46 HTTP Messages

47 Absolute URI URIs absolutas eram usadas em HTTP 1.0, mas não são necessárias no HTTP 1.1, pois o campo Host foi incluído. Mas quando o proxy é configurado no navegador Web a requisição é alterada, e passa a incluir URI absolutas.

48 SSL ou TLS HTTPS = HTTP sobre TLS/SSL
HTTP, FTP, SMTP, etc. HTTP TLS XXXXX TCP IP Ether SSL/TLS TCP, UDP IP Ethernet, PPP, etc. O proxy de aplicação extrai as informações do servidor de destino analisando o protocolo de aplicação. Infelizmente, cada protocolo de aplicação formata seu cabeçalho de maneira diferente. O protocolo HTTP, por exemplo, identifica o servidor de destino através de um campo do tipo string, denominado “Host”. Já o protocolo SMPT utiliza a mensagem “RCPT TO”, e assim por diante. Um proxy de aplicação é capaz de operar apenas com um conjunto limitado de protocolos que ele conhece. Os mais comuns são “HTTP”, “FTP”, “SSL” e, por razões históricas, “Gopher”. Dessa forma, numa rede conectada através de Proxy, os serviços disponibilizados pelos usuários são limitados aos serviços que o Proxy é capaz de compreender. Muitos aplicativos utilizam túneis HTTP a fim de superar essa limitação. Túneis HTTP nada mais são do que um artifício de encapsular outros protocolos de aplicação em mensagens HTTP. Outra limitação desse tipo de proxy, é que o software do cliente precisa estar preparado a fim de poder utilizar o proxy. O código para conectar ao proxy de aplicação está embutido nos navegadores Web, software de atualização de anti-virus, e aplicativos P2P, por exemplo. Além dos aplicativos precisarem estar preparados, é necessário configurar cada um dos aplicativos individualmente, informando para cada um deles o endereço do proxy e sua porta correspondente. Essa tarefa pode, contudo, ser simplificada utilizando-se scripts de configuração abaixo, como o exemplo abaixo: HTTPS = HTTP sobre TLS/SSL HTTP é criptografado pela aplicação

49 Proxy HTTPS: HTTP Connect

50 Proxy Socks user jamhour want connect to 8.8.8.8:80 request granted
user jamhour want bind to :80 proxy socks bind on :4000 4000 IPv4 1024 1080 cliente servidor

51 Versões do SOCKS Versão 4: Suporte apenas ao TCP
Versão 5: Suporte a TCP e UDP, e suporte a autenticação

52 UDP modificado com SOCKS TCP ou UDP não modificado
Proxy Socks aplicação configuração global para todos os aplicativos biblioteca sockets modificada S.O. proxy SOCKS TCP UDP IP servidor IPv4 UDP modificado com SOCKS ou TCP + SOCKS cliente TCP ou UDP não modificado

53 www.pucpr.br = IPv6 (<PREFIXO>+ IPv4)
Proxy Socks6to4 O HOST RECEBE UM ENDEREÇO IPv6 FALSO QUE CONTÉM O ENDEREÇO IPv4 IPv6 IPv6A PROXY 1 IPv4 3 2 IPv4R IPv4 IPv4 REDE IPV6 O proxy SOCKS é definido com um mecanismo de redirecionamento ao nível da camada de transporte, que permite que hosts com endereços privados ou com acesso limitado por firewalls consigam ter livre acesso a recursos da Internet. Um proxy SOCKS para IPv4 está hospedado, normalmente, em um dual-homed host com um endereço privado e outro público. Ele recebe conexões de hosts internos pela sua interface de IP privado e cria conexões com hosts na Internet através de sua interface pública. De maneira similar, um proxy SOCKS64 está hospedado em um dual-homed host com um endereço IPv6 e outro endereço IPv4 público. Ele pode receber conexões pela sua interface IPv6 e redirecioná-las pela sua interface IPv4 e vice-versa. A figura ilustra o cenário onde um proxy SOCKS64 é usado para permitir que usuários de uma rede puramente IPv6 tenham acesso a recursos na Internet IPv4. Para ter acesso ao proxy SOCKS64 um host precisa ter uma aplicação com suporte ao SOCKS ou, preferencialmente, instalar uma versão alterada da SOCKS LIB que intercepta as as APIs enviadas pelas aplicações, e formata pacotes de acordo com o protocolo SOCKS. Existe uma diferença no funcionamento do proxy SOCKS quando operando em TCP ou UDP. Consulte a apostila sobre o proxy SOCKS do módulo de redes TCP/IP para relembrar esse assunto. Nesse exemplo, suponha que se trata de uma aplicação TCP. Quando a SOCKS LIB do host A recebe o pedido de abertura de conexão para um endereço mapeado (::FFFF:<IPv4B>), ela cria uma conexão com o proxy SOCKS64, e envia uma mensagem solicitando que os pacotes enviados por essa conexão sejam redirecionados para o endereço IPv4B na porta D. Em seguida, a LIB envia o pacote de dados diretamente para o Proxy. Como proxy possui um mapeamento entre a conexão IPv6 com o host A e uma conexão IPv4 com o host B, os pacotes recebidos são automaticamente convertidos para IPv4 e enviados para Internet. DNS REDE IPV4 Proxy 6to4 DNS da rede IPv6 = IPv6 (<PREFIXO>+ IPv4) DNS do domíno = IPv4

54 Forward Proxy vs Reverse Proxy
Servidor web Internet roteador firewall Servidor web Servidor web Exemplos:

55 Proxy HTTP/COAP

56 Conclusão IP privado motivado pelo esgotamento de endereços IPv4 no início dos anos 90 poucas limitações para hosts clientes muitas limitante para hosts servidores forma mais segura de se navegar pela Internet NATs uso transparente para os clientes pouco limitantes em relação as aplicações suportadas incapazes de prestar serviços dependentes da camada de aplicação, como cache HTTP Proxy seu uso não é transparente (exige configuração) quebram o modelo cliente-servidor menos escaláveis que os NATs proxies de aplicação podem prestar inúmeros serviços adicionais que melhoram a segurança e o desempenho da rede. Neste módulo vimos o conceito de endereçamento privado. Essa forma de endereçamento foi criada a fim de contornar os problemas de exaustão do espaço de endereçamento IPv4, devido a rápida expansão da Internet, que começou no início dos anos 90. Originalmente considerado uma solução paliativa e temporária (até que a versão IPv6 fosse implantada), o endereçamento privado tornou-se um grande sucesso, sendo amplamente utilizado atualmente. Muito desse sucesso se deve ao fato que essa forma de endereçamento traz poucas limitações para computadores que atuam apenas como clientes. Apenas aplicativos servidores (que necessitam receber conexões externas) sofrem limitações com essa abordagem. Um efeito secundário do uso do endereçamento privado é a segurança. Computadores com endereços privados são anônimos do ponto de vista da Internet, isto é, eles não podem ser endereçados. Isso faz com que o endereçamento privado seja uma opção importante para obter-se uma conectividade seletiva com a Internet. A criação de métodos eficientes de mapeamento de endereços públicos e privados, os Proxies e os NAPTs, também contribui bastante para que essa abordagem pudesse ser amplamente adotada em prática.


Carregar ppt "Endereçamento Privado Proxy e NAT"

Apresentações semelhantes


Anúncios Google