Não, isso não pode ser feito usando o iptables. A resposta está no nome do comando e no que você está tentando fazer.
No modelo OSI , os endereços MAC pertencem à camada de enlace de dados. Isso significa que protocolos como o IEEE 802.3 (Ethernet) têm um conceito de endereços MAC, mas protocolos como o IPv4 não. Os protocolos da camada de enlace de dados podem ser considerados como "quadros" de transmissão.
Observe que iptables
contém "IP", que significa Protocolo da Internet. Este é um protocolo na camada de rede, que é uma camada superior à camada de enlace de dados. Os protocolos da camada de rede podem ser considerados como "pacotes" de transmissão.
Como os protocolos são construídos uns em cima dos outros como uma pilha, só é possível que protocolos de nível inferior afetem diretamente o comportamento de protocolos de nível mais alto, e não o contrário. Portanto, não é possível para uma ferramenta que opera na camada IP afetar diretamente o comportamento de um dispositivo de hardware operando, digamos, na camada Ethernet (802.3).
Se você conhece o HTTP, pode pensar assim. Como você responderia se alguém lhe perguntasse: "Como eu posso enviar dados arbitrários pela porta TCP 6790 usando apenas HTTP?" A resposta é que você não pode - por exemplo, a porta TCP já está decidida pelo tempo em que o protocolo HTTP está em jogo. Segundo, o protocolo HTTP tem cabeçalhos obrigatórios e elementos estruturais que não podem ser removidos sem violar o padrão. Então, assim que você diz "HTTP" você está falando sobre operar dentro de um soquete TCP existente em uma porta pré-determinada e você está preso às regras de protocolo do HTTP.
O mesmo acontece com o IP. Uma vez que você está lidando com endereços lógicos na pilha de IPs, você não pode "alcançar" as camadas físicas e fazer coisas de baixo nível. Como uma explicação simples, é possível que um dispositivo tenha um endereço IPv4 válido, mas opere usando uma camada de enlace de dados que não usa endereços MAC. Por exemplo, um protocolo USB poderia ser projetado para transmitir pacotes IP, mas não teria nenhum conceito de "Ethernet" ou "quadros", portanto, não teria um endereço MAC nem implementaria o padrão IEEE 802.3.
O que você precisa é ebtables
. ebtables
permitirá que você para executar processamento semelhante na camada de quadros ethernet . Você precisará ter certeza de que todos os dispositivos que você deseja firewall têm uma conexão Ethernet direta com o computador que está fazendo o firewall, caso contrário, isso não funcionará. E se algum de seus dispositivos não usa ethernet, você está sem sorte.