Por quanto tempo os mapeamentos Nat são mantidos?

3

Minha simples compreensão do NAT é algo como isso poderia acontecer:

Dois PCs clientes 192.168.1.2 e 192.168.1.3 abrem uma conexão com porta src = 12345. O gateway recebe estes e precisa usar NAT, então um deles fica como 12345 e o outro fica como 12346 quando se apaga no IP externo 1.1.1.1.

192.168.1.2:12345                            1.1.1.1:12345 <-> 2.2.2.2:80
                  -----> 192.168.1.1 ----->
192.168.1.3:12345                            1.1.1.1:12346 <-> 3.3.3.3:443

Quando os pacotes voltam ao 1.1.1.1, ele precisa mapear o IP e a porta internos corretos. Isso precisaria de algum tipo de tabela de mapeamento.

Eu me pergunto, quanto tempo duraria essa tabela?

  1. x minutos / horas?
  2. Até ver uma conexão encerrada?

Então, por exemplo, se eu tenho um protocolo que envia dados de maneira irregular de qualquer forma, existe um risco de que o mapeamento tenha ido e o outro lado veja a conexão como fechada (não obtém nenhum Ack)?

No Linux, existe uma maneira de ver essa tabela?

    
por Alan 24.02.2013 / 00:06

1 resposta

8

I wonder, how long would that table typically last?

Estes parecem ser controlados pelas seguintes teclas sysctl. Anexando como exemplo o que eu tenho em uma máquina minha (nunca os ajustei, deveria ser o padrão).

> sysctl -a 2>/dev/null | grep ip_conntrack_.*timeout
net.ipv4.netfilter.ip_conntrack_generic_timeout = 600
net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_udp_timeout = 30
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180

So for example if I have a protocol that irregularly sends data either way, is there a risk the mapping has gone and the other side sees the connection as closed (gets no Ack)?

Parece que o tempo limite para conexões TCP estabelecidas é de 5 dias (432000 segundos). Eu acho que você vai ficar bem, a menos que você esteja usando um protocolo baseado em UDP.

In Linux, is there a way to see this table?

Sim. Em /proc/net/nf_conntrack (terceira coluna) ou usando conntrack -L .

Recursos adicionais:

por 24.02.2013 / 02:18

Tags