Arquitectura de Redes Network Address Translation NAT Rui Prior 2006/07 (adap. Pedro Brandão) 1
Objectivo / Motivação Escassez de endereços IPs Pequenas / médias empresas com ligação dial-up, ADSL ou cabo querem IPs para as suas máquinas (também utilizadores domésticos). Cada um pode ter mais do que uma máquina por trás. Solução: Network Address Translation Vantagens: Utilização de endereços privados nas Intranets Possibilidade de fusão entre redes com endereços duplicados Facilidade de mudança de ISP Privacidade RFCs 3022 Traditional IP Network Address Translator (NAT) 1918 Address Allocation for Private Internets Rui Prior 2006/07 (adap. Pedro Brandão) 2
Utilização Endereços privados não são permitidos na internet. Routers não fazem routing destes IPs 10.0.0.0 10.255.255.255 /8 172.16.0.0 172.31.255.255 /12 192.168.0.0-192.168.255.255 /24 193.34.56.200 195.170.3.45 internet 192.168.100.0/24 192.168.100.0/24 Rui Prior 2006/07 (adap. Pedro Brandão) 3
Exemplo NAT DA: 192.168.100.20 SA: 195.31.30.45 Ver tabela NAT para mapeamento de 193.34.56.205 193.34.56.200 NAT router DA: 195.31.30.45 SA: 193.34.56.207 internet DA: 192.168.100.25 SA: 195.31.30.45 Endereços disponíveis: 193.34.56.203 a 193.34.56.210 Ver tabela NAT para mapeamento de 192.168.100.20 DA: 195.31.30.45 SA: 193.34.56.205 192.168.100.0/24 192.168.100.25 DA: 195.31.30.45 SA: 192.168.100.25 DA: 195.31.30.45 SA: 192.168.100.20 192.168.100.20 DA: 193.34.56.205 SA: 195.31.30.45 195.31.30.45 DA: 193.34.56.207 SA: 195.31.30.45 Rui Prior 2006/07 (adap. Pedro Brandão) 4
Operações Problema da identificação do pacote no retorno. Manual tabela construída administrativamente Saída de Pacotes criação dinâmica baseada nos pacotes que saem. Entrada de pedidos DNS quando vem um pedido ao DNS ele acrescenta a entrada na tabela NAT. Checksums (IP e TCP) são recalculados e colocados no pacote. Mapeamento 1 para 1. Se a caixa NAT tiver disponível mais do que 1 IP válido, pode-se aumentar o número de máquinas a aceder simultaneamente. Rui Prior 2006/07 (adap. Pedro Brandão) 5
Port Address Translation PAT (ou NAPT) NAT não permite a multiplexagem dos endereços disponíveis. Utilização das portas da camada TCP ou UDP sport e dport definem os processos nos 2 extremos (IP dá a máquina) O novo sport é usado como índice para a tradução. Sendo único na caixa NAT. 16 bits (campo TCP port) 65536 portas Apenas se devem usar as dinâmicas (16384 portas, de 49152 a 65535) Rui Prior 2006/07 (adap. Pedro Brandão) 6
Exemplo NAPT Endereço Privado Porta privada Endereço externo Porta Externa Porta NAT Protocolo 192.168.100.20 2050 195.31.30.45 22 54053 tcp 192.168.100.25 4560 195.31.30.45 22 64056 tcp DA: 192.168.100.20 :2050 SA: 195.31.30.45 :22 Consultar tabela para porta 54053 193.34.56.200 NAT router Endereços disponíveis: 193.34.56.203 a 193.34.56.210 Acrescentar entrada para porta 54053 internet DA: 195.31.30.45 :22 SA: 193.34.56.205 :54053 DA: 195.31.30.45 :22 SA: 193.34.56.205 :64056 192.168.100.0/24 192.168.100.25 DA: 195.31.30.45 :22 SA: 192.168.100.25 :4560 DA: 195.31.30.45 :22 SA: 192.168.100.20 :2050 192.168.100.20 195.31.30.45 DA: 193.34.56.205 :54053 SA: 195.31.30.45 :22 Rui Prior 2006/07 (adap. Pedro Brandão) 7
Exemplo NAPT para interior (port forwarding) Endereço Privado Porta privada Endereço externo Porta Externa Porta NAT Protocolo 192.168.100.20 22 7022 tcp 192.168.100.25 80 9080 tcp DA: 192.168.100.20 :22 SA: 195.31.30.45 :6899 Consultar tabela para porta 7022 193.34.56.200 NAT router internet 192.168.100.0/24 DA: 193.34.56.200:7022 SA: 195.31.30.45 :6899 192.168.100.25 192.168.100.20 195.31.30.45 Rui Prior 2006/07 (adap. Pedro Brandão) 8
Notas iptables Caminho do Pacote IP no NetFilter PRE ROUTE FORWARD POS ConnTrack Mangle Mangle Mangle NAT (Dst) IN Filter ROUTE NAT (Src) ConnTrack ConnTrack OUT Chains Tables Filter Mangle Local Process ConnTrack Mangle NAT (Dst) Rui Prior 2006/07 (adap. Pedro Brandão) 9 Filter
Notas iptables II Colocam-se regras nas tabelas especificando a chain em que ficam. Quando um pacote faz um match com uma regra o Target associado a essa regra é efectuado. Targets variam consoante as tabelas que estão a ser consultadas Exemplos: Filter Table: DROP, ACCEPT Nat Table: DNAT, SNAT, MASQUERADE, REDIRECT Podem ser criados novas Chains pelo utilizador, sendo associadas a Targets de regras. Rui Prior 2006/07 (adap. Pedro Brandão) 10
Notas iptables III Exemplo: ## Change source addresses to 1.2.3.4. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4 table chain target Rui Prior 2006/07 (adap. Pedro Brandão) 11
Notas Cisco I Global endereços que são vistos na rede externa. Local endereços que são vistos na rede interna. Fonte: CISCO NAT: Local and Global Definitions Rui Prior 2006/07 (adap. Pedro Brandão) 12
Notas Cisco II Inside local address endereço IP de uma máquina na rede interna. É o endereço alocado/definido na configuração de rede de um máquina interna. Inside global address endereço IP legítimo que representa um ou mais endereços IPsinsidelocal para o exterior. Outside local address endereço IP de uma máquina exterior como é visto na rede interna, não necessariamente legítimo. É um endereço encaminhável internamente. Outside global address endereço IP de uma máquina na rede externa que é globalmente encaminhável. Fonte: CISCO NAT: Local and Global Definitions Rui Prior 2006/07 (adap. Pedro Brandão) 13
Notas Cisco III Inside Local endereço interno à rede que será traduzido. Inside Global endereço IP de uma máquina da rede interna como é visto no exterior (após a tradução). Fonte: CISCO IOS NETWORK ADDRESS TRANSLATION Rui Prior 2006/07 (adap. Pedro Brandão) 14
Exemplo Cisco I ip nat inside source static 10.10.10.1 171.16.68.5 Inside Global Inside Local Outside Local Outside Global 171.16.68.5 10.10.10.1 171.16.68.1 171.16.68.1 Fonte: CISCO IOS NETWORK ADDRESS TRANSLATION Rui Prior 2006/07 (adap. Pedro Brandão) 15
Exemplo Cisco II ip nat outside source static 171.16.68.1 10.10.10.5 Inside Global Inside Local Outside Local Outside Global 10.10.10.1 10.10.10.1 10.10.10.5 171.16.68.1 Fonte: CISCO IOS NETWORK ADDRESS TRANSLATION Rui Prior 2006/07 (adap. Pedro Brandão) 16
Exemplo Cisco III ip nat inside source static 10.10.10.1 171.16.68.5 ip nat outside source static 171.16.68.1 10.10.10.5 Inside Global Inside Local Outside Local Outside Global 171.16.68.5 10.10.10.1 10.10.10.5 171.16.68.1 Fonte: CISCO IOS NETWORK ADDRESS TRANSLATION Rui Prior 2006/07 (adap. Pedro Brandão) 17
Problemas / Objecções ao NA(P)T Endereço IP não identifica univocamente uma máquina. Connectionless para connection-oriented: caixas NAPT têm de manter a informação sobre as conexões. Caixa NAT modifica a camada IP baseado na assunção da formatação da camada superior (quebra das regras de camadas protocolares). Se a aplicação não usar UDP ou TCP... ICMP complica o NAT, obrigando a que as respostas ICMP sejam alteradas. Rui Prior 2006/07 (adap. Pedro Brandão) 18
Problemas / Objecções ao NAT Aplicações podem enviar nos campos de dados endereços IPs ou portas para a comunicação (FTP envia a porta de dados). Existem módulos extra para o NAT para tratarem destes casos (ip_conntrack_ftp nas iptables Linux) Ver RFC 2993 Architectural Implications of NAT Rui Prior 2006/07 (adap. Pedro Brandão) 19