My question is: Why is it possible for a computer on the 172.16.2.0/24 subnet to ping 172.16.1.1 (ip address of eth1 interface)?
Porque você permitiu, e o Linux faz isso por padrão.
O Linux usa o que é chamado de modelo host fraco. Isso significa que quando receber um pacote vindo de eth2
, ele considerará o pacote como sendo para ele se o endereço de destino for um endereço IP de qualquer de suas interfaces, não apenas eth2
. Mesmo se o encaminhamento estiver desativado.
Para que o pacote entre no gancho PREROUTING, o kernel então verá que o endereço de destino é o mesmo, então continue com o gancho INPUT e aceite todo o ICMP de eth2
, então o pacote é aceito.