ENDEREÇAMENTO PRIVADO PROXY E NAT MOTIVAÇÃO PARA O ENDEREÇAMENTO IP PRIVADO Crescimento do IPv4 07/2007 490 milhões de hosts 01/2008 542 milhões de hosts IPv4 permite endereçar 4 bilhões de hosts. PREVISÃO INICIAL = 1994 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 ENDEREÇOS PRIVADOS: RFC 1918 Prefixo Faixa de Endereços Descrição 10.0.0.0/8 10.0.0.0 a 10.255.255.255 Uma rede de endereços classe A. 172.16.0.0/12 172.16.0.0 a 172.31.255.255 16 redes contíguas de endereços classe B. 192.168.0.0/16 192.168.0.0 a 192.168.255.255 256 redes contíguas de endereços classe C. TIPOS DE HOSTS (RFC 1918) categoria III categoria I IPv4 categoria II tradutor de IP NAT IPv4 ROTEADOR INTERNO E GATEWAY DEFAULT ip publico gateway default (não roteia IP privado) ip publico ip publico 2 ip publico ip privado ip privado 1 ip privado (roteador interno) roteia IP privado IPv4 ENDEREÇOS E ROTEAMENTO 200.0.0.2 200.0.0.3 200.0.0.4 200.0.0.1 192.168.0.2 2 IPv4 192.168.0.3 1 192.168.0.1 192.168.0.0/24 via direta 200.0.0.0/24 via direta 0.0.0.0/0 via provedor 200.0.0.0/24 via direta HOSTS CATEGORIA 2 200.0.0.2 200.0.0.3 200.0.0.4 200.0.0.1 192.168.0.2 roteador com NAT se ip_origem = 192.168.0.0/24 traduzir para 200.1.0.1 192.168.0.3 2 IPv4 200.1.0.1 1 192.168.0.1 192.168.0.0/24 via direta 200.0.0.0/24 via direta 0.0.0.0/0 via provedor 200.0.0.0/24 via direta NAT E NAPT IPprivado1 NAT IPpúblico 1 IPprivado2 IPpúblico2 IPprivado3 IPpúblico3 IPprivado1 NAPT IPpúblico1:Porta1 IPprivado2 IPpúblico1:Porta2 IPprivado3 IPpúblico1:Porta3 SNAT E DNAT Interface de Entrada Interface de Saída Pré-Roteamento [DNAT] Pós-Roteamento [SNAT] roteamento decisão sobre o encaminhamento do pacote SNAT: NETWORK ADDRESS TRANSLATION 1 192.168.0.2 4 60.1.2.3 60.1.2.3 192.168.0.2 checksum1 checksum4 2 210.0.0.1 3 60.1.2.3 60.1.2.3 checksum2 210.0.0.1 checksum3 tabela de mapeamento 192.168.0.2 192.168.0.2 = 210.0.0.1 192.168.0.3 = 210.0.0.2 60.1.2.3 192.168.0.1 IPv4 Privado 192.168.0.3 210.0.0.1 to 210.0.0.10 IPv4 Network SNAT NO LINUX Altera qualquer endereço de origem para 210.0.0.1 Altera o endereço de origem usando IPs do range 210.0.0.1 até 210.0.0.10 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.0.0.1 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.0.0.1 até 210.0.0.10 Aplica a ação de MASQUERADE iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE SNAPT (NETWORK ADDRESS AND PORT TRANSLATION) request clientes 1024 1026 192.168.0.2 IP Privado:Porta Origem IP Público:Porta Origem 192.168.0.2 :1024 192.168.0.2 :1026 192.168.0.3 :1024 192.168.0.4 :1025 210.0.0.1 :1024 210.0.0.1 :1026 210.0.0.1 :1025 210.0.0.1 :1027 reply 1024 1025 1024 1026 IPv4 192.168.0.3 1025 192.168.0.4 1027 Endereço IP Público 210.0.0.1 servidor 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 Altera o endereço de origem para 210.0.0.1, usando as portas 1024-65535 iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1024-65535 MAPEAMENTOS REVERSOS: DNAT servidores reply IP Privado:Porta Destino 192.168.0.2 :80 192.168.0.2 :25 192.168.0.3 :80 192.168.0.4 :22 80 25 IP Público:Porta Destino request 210.0.0.1 :80 210.0.0.1 :25 210.0.0.1 :8080 210.0.0.1 :8081 192.168.0.2 80 25 80 192.168.0.1 8080 IPv4 192.168.0.3 22 192.168.0.4 8081 Endereço IP Público 210.0.0.1 espec.ppgia.pucpr.br cliente DNAT NO LINUX Redireciona pacotes recebidos na porta 8080 para o IP 192.168.0.3 e porta 80. Envia pacotes web (port-80) para a porta do squid (proxy transparente) iptables -t nat -A PREROUTING -p tcp --dport 8080 -i eth0 -j DNAT --to 192.168.0.2:80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Altera os endereços de destino para 192.168.0.2 até 192.168.0.5, através de um processo de balanceamento de carga. iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.0.2-192.168.0.5 PROBLEMAS COM O NAT 1 192.168.0.2 60.1.2.3 PORT 192.168.0.2: 1025 2 210.0.0.1 3 60.1.2.3 PORT 192.168.0.2: 1025 60.1.2.3 192.168.0.2 payload tabela de mapeamento 192.168.0.2 192.168.0.2 = 210.0.0.1 60.1.2.3 192.168.0.1 IPv4 Privado 210.0.0.1 IPv4 Network SERVIDOR PROXY 192.168.0.2 60.1.2.3 1024 80 192.168.0.1 210.0.0.1 IPv4 Privado IPv4 Network NAT 192.168.0.2 1024 60.1.2.3 3128 1025 192.168.0.1 IPv4 Privado 80 210.0.0.1 Proxy IPv4 Network FUNCIONAMENTO DO PROXY 192.168.0.2 192.168.0.1 1024 3128 GET /~jamhour/natproxy.tar.gz HTTP/1.1\r\n Host: espec.ppgia.pucpr.br\r\n 192.168.0.2 1024 3128 1025 192.168.0.1 IPv4 Privado 210.0.0.1 60.1.2.3 210.0.0.1 Proxy 1025 60.1.2.3 80 IPv4 Network 80 GET /~jamhour/natproxy.tar.gz HTTP/1.1\r\n Host: espec.ppgia.pucpr.br\r\n PROXY DEPENDE DA APLICAÇÃO Protocolo de Aplicação HTTP, FTP, SMTP, etc TCP, UDP Seqüência de empacotamento aplicação segmento TCP datagrama UDP pacote IP Ethernet quadro http ftp ssl O proxy de aplicação precisa interpretar as informações do protocolo de aplicação (dispositivo de camada 7) MAPEAMENTO DE CONEXÕES PELO PROXY request clientes 1024 1026 192.168.0.2 192.168.0.3 IP Público:Porta Origem 192.168.0.2 :1024 192.168.0.2 :1026 192.168.0.3 :1024 192.168.0.4 :1025 210.0.0.3 :1024 210.0.0.3 :1026 210.0.0.3 :1025 210.0.0.3 :1027 1026 1025 192.168.0.4 IPv4 1027 192.168.0.1 210.0.0.3 1025 reply 1024 3128 1024 IP Privado:Porta Origem 210.0.0.1 servidor OUTRAS FUNÇÕES DO PROXY DE APLICAÇÃO Controle de acesso por login Filtragem de endereços e conteúdo. Cache de objetos Web Filtragem de Virus e Malware Proxy de Aplicação Cache GET HTTP/1.1 200 OK\r\n GET GET HTTP/1.1 200 OK\r\n HTTP/1.1 304 Not Modified\r\n PROXY SOCKS user jamhour want connect to 60.1.2.3:80 request granted user jamhour want bind to 60.1.2.3:80 bind on 210.0.0.3:4000 Proxy Socks 1024 4000 IPv4 1080 cliente 192.168.0.3 servidor 192.168.0.1 210.0.0.3 60.1.2.3 PROXY SOCKS configuração global para todos os aplicativos aplicação biblioteca sockets modificada TCP S.O. UDP proxy SOCKS servidor IP IPv4 cliente protocolo SOCKS TCP ou UDP não modificado CONCLUSÃO