
Eu tenho um roteador com encaminhamento de porta nat configurado. Lancei uma cópia http do arquivo grande por meio do nat. O servidor http está hospedado no PC LAN que contém o arquivo grande para download. Iniciei o download do arquivo do WAN PC. Desativei a regra nat quando a cópia do arquivo estava em execução. a cópia do arquivo permanece restante. Quero interromper a cópia do arquivo ao desabilitar a regra de encaminhamento nat com a ferramenta conntrack.
minha lista conntrack contém a seguinte sessão conntrack
# conntrack -L | grep "33.13"
tcp 6 431988 ESTABLISHED src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 [ASSURED] use=1
Tentei removê-lo com o seguinte comando:
# conntrack -D --orig-src 192.168.33.13
tcp 6 431982 ESTABLISHED src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 [ASSURED] use=1
conntrack v1.4.3 (conntrack-tools): 1 flow entries have been deleted.
a sessão conntrack foi removida, posso ver no comando a seguir. Mas outra sessão conntrack foi criada com o endereço IP src é o endereço lan do conntrack removido
# conntrack -L | grep "33.13"
tcp 6 431993 ESTABLISHED src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 [ASSURED] use=1
conntrack v1.4.3 (conntrack-tools): 57 flow entries have been shown.
Tentei remover o novo conntrack mas ele continua permanecendo
# conntrack -D --orig-src 192.168.3.17
# conntrack -L | grep "33.13"
conntrack v1.4.3 (conntrack-tools): 11 flow entries have been shown.
tcp 6 431981 ESTABLISHED src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 [ASSURED] use=1
O que estou perdendo?
Responder1
https://www.kernel.org/doc/Documentation/networking/nf_conntrack-sysctl.txt
nf_conntrack_tcp_loose - BOOLEAN
0 - disabled not 0 - enabled (default)
If it is set to zero, we disable picking up already established connections.
Portanto, a conexão já estabelecida é detectada instantaneamente (sem SYN/SYN+ACK/ACK envolvido) e adicionada novamente como uma nova entrada conntrack. Como é uma nova entrada conntrack, a tabela nat será percorrida novamente e a regra DNAT aplicada novamente. Mesmo que uma forma não funcione imediatamente (se não houver SNAT/MASQUERADE definido além da regra DNAT, os pacotes de saída do servidor http poderão aparecer na WAN como 192.168.3.17 por um curto período e serem rejeitados/ignorados por 192.168.33.13) , assim que o outro lado tentar novamente (repetição de ACK de 192.168.33.13...), isso corresponderá.
Digite isto:
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
E tente novamente excluir a entrada conntrack com conntrack -D
...
Esperamos que isso evite que uma nova entrada conntrack seja criada e interrompa o download.