De todas as informações que você forneceu, eu apenas acho que quando você exclui as regras, o endereço IP do seu PC Linux não está mais em iptables conntrack table
, então seu tráfego é descartado. O endereço IP do PC do Windows ainda pode aparecer na tabela conntrack, portanto, seu tráfego é aceito.
iptables
processa cada regra, de cima para baixo. Portanto, a ordem das regras definidas em iptables
é muito importante. No seu caso, sua corrente INPUT
se parece com:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -j ACCEPT
....
-A INPUT -m icmp --icmp-state 8 -j ACCEPT
-A INPUT -m icmp --icmp-state 0 -j ACCEPT
Para que você possa ver, mesmo se você excluir ICMP
rules, se a conexão do cliente estiver na tabela conntrack, ela ainda será aceita por iptables
.
Você pode ler sobre iptables conntrack table
aqui :
When a connection has seen traffic in both directions, the conntrack entry will erase the [UNREPLIED] flag, and then reset it. The entry that tells us that the connection has not seen any traffic in both directions, will be replaced by the [ASSURED] flag, to be found close to the end of the entry. The [ASSURED] flag tells us that this connection is assured and that it will not be erased if we reach the maximum possible tracked connections. Thus, connections marked as [ASSURED] will not be erased, contrary to the non-assured connections (those not marked as [ASSURED]). How many connections that the connection tracking table can hold depends upon a variable that can be set through the ip-sysctl functions in recent kernels. The default value held by this entry varies heavily depending on how much memory you have. On 128 MB of RAM you will get 8192 possible entries, and at 256 MB of RAM, you will get 16376 entries. You can read and set your settings through the /proc/sys/net/ipv4/ip_conntrack_max setting.