Primeiro, as regras de filtragem são de alguma forma redundantes. Quando você nunca cai e sua política é ACEITAR, adicionar mais algumas regras de ACEITAR não tem sentido. Nenhum pacote será filtrado.
The way I tested this was by pinging from a device on the 172.20.0.0/16 subnet( ping -s 10240 172.30.0.9 )
Eu nunca tentei enviar grandes blocos de ping de 10kByte através de uma rede e eu não sei porque você faz isso, mas um pacote padrão de ping de 56 bytes deve funcionar perfeitamente, para verificar a conexão e não sofrer fragmentação de MTU questões.
and checking all three interfaces on the router using tcpdump( tcpdump -vv -x -X -s 1500 -i eth1 ).
É claro que quando você verifica com tcpdump -i eth1 ...
você verifica apenas eth1
, mas isso é trivial.
Como não existe uma regra de filtragem, não deve haver nenhum problema com o iptables. Pelo menos deve haver alguma entrada em alguma interface.
Você verificou o seu roteiro de onde você enviou o seu ping?
Eu não entendo a ideia por trás da regra
-A PREROUTING -d 192.168.250.254/32 -j DNAT --to-destination 172.30.0.1
Em palavras, pacotes que são endereçados para 192.168.250.254, então todos os pacotes que de alguma forma querem sair através de ppp0, serão reescritos para ir para 172.30.0.1, que deve ser ppp0 também (não está claro!). Posteriormente no estágio de roteamento, qualquer pacote que vá para a sub-rede ppp0 172.30.0.0/16 será roteado para 192.168.250.254. Esta regra parece inútil para mim, se não destrutiva.
Quando você envia pacotes para 172.30.0.9 ou qualquer 172.30.0.0/16, talvez queira -j MASQUERADE
quando eles saírem, que o destino saiba para onde responder, embora não saiba como rotear.
'iptables -t nat -A POSTROUTING -s 172.20.0.0/16 -i ppp0 -j MASQUERADE'
Mas isso não resolverá o problema de você não ver nenhum pacote de ping em qualquer interface do seu roteador.
Minha primeira tentativa seria ver os pacotes de ping saindo do sistema do qual eu os enviei, com o tcpdump no sistema.
'tcpdump -i eth0 'icmp'
ou apenas pacotes que devem ser sobre ppp0
'tcpudmp -i eth0 'net 172.30.0.0/16'
assumindo que os hosts 172.20.0.0/16, que não são seu roteador, tenham apenas uma interface chamada eth0.