O problema é que enquanto você está permitindo pacotes indo do cliente para o servidor, os pacotes do servidor voltando para o cliente serão descartados. Eles não são manipulados automaticamente pelo netfilter e precisam ser permitidos explicitamente.
Normalmente, em um firewall restritivo em que você permite apenas determinados pacotes e descarta o restante, você usa o rastreamento de conexão para aceitar pacotes de retorno / relacionados de conexões conhecidas:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Note que não há a opção --mac-destination
na correspondência mac
no netfilter - muito provavelmente porque o endereço MAC da máquina de destino dos pacotes de saída não é conhecido pelo netfilter, pois é resolvido em uma camada de rede inferior (camada 2 o netfilter opera em camadas 3 e superiores).