iptables
работает на уровне OSI 3, поэтому он ничего не знает о MAC-адресах.
Фактически, у него есть модуль mac, который, однако, содержит только дополнительный фильтр --mac-source
: это потому, что входящие пакеты Ethernet действительно несут MAC-адрес своего источника. Однако такой MAC-адрес не существует для пакетов, поступающих через Wi-Fi, и он не имеет отношения к исходящим пакетам. Ссылка выше гласит:
Обратите внимание, что это имеет смысл только для пакетов, поступающих с устройства Ethernet и входящих в цепочки PREROUTING, FORWARD или INPUT.
Что касается ebtables
, прежде всего он может использоваться только с кадрами Ethernet, потому что кадры wifi пропускают один MAC-адрес. Во-вторых, MAC-адреса источника, как я уже говорил выше, не существуют в IP-пакетах.
Если бы вы хотели контролировать пакеты ARP, вы бы быстро узнали, что есть инструкция
arp-mac-dst [!] адрес [/ маска]
Спецификация (R)ARP MAC-адреса назначения
но, опять же, это becausethe протокола ARP действительно использует MAC - адрес, в отличии от протокола IP.