Acontece que 0.0.0.0 denota um 'endereço IP inválido' (nota / 0 está faltando!)
e não 'todo endereço IP', assim a regra ACCEPT pode realmente ser acertada no jogo!
0 0 DROP all -- ppp0 * 0.0.0.0 0.0.0.0/0
Meu iptables -nvL se parece com isto:
bash# iptables -nvL
Chain INPUT (policy ACCEPT 1031 packets, 81085 bytes)
pkts bytes target prot opt in out source destination
11111 951K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 DROP tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:135:139
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:135:139
0 0 DROP all -- ppp0 * 0.0.0.0 0.0.0.0/0
0 0 DROP udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 udp dpts:67:68
0 0 DROP all -- ppp0 * 255.255.255.255 0.0.0.0/0
0 0 DROP tcp -- !eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
0 0 ACCEPT all -- ppp0 * 10.0.0.0/8 0.0.0.0/0 state NEW,ESTABLISHED
Por que diz DROP all ppp0 antes de ACCEPT all ppp0 [ip]?
A cadeia INPUT não pára antes de chegar à segunda regra (ou seja, parar att DROP all ppp0)?
Será que alguém gostaria de manter as regras, mas apenas bloquear temporariamente? Ou a correspondência de regras continua na cadeia mesmo depois de uma correspondência? Pelo que entendi, a corrente atravessando pára diretamente quando um critério é atendido, ou eu entendi errado?
Por minha leitura, você está correto - essa última regra nunca será atingida. Você pode verificar isso fazendo outro iptables -vnL depois de correr por um tempo e ver os bytes e pacotes pegados pelas regras - meu palpite é que sempre serão 0 e 0.