Basicamente algo assim, mas você tem que associar um IP a um MAC, conjuntos MAC puros parecem não existir:
# ipset --create test macipmap --network 10.0.0.0/16
# ipset --add test 10.0.0.1,00:11:22:33:44:55
# iptables -A INPUT -i eth5 -m set --match-set test src -j ACCEPT
Aqui, você vê o conteúdo do mapa e o contador de referência indicando uma regra do iptables que faz referência a esse conjunto:
# ipset -L test
Name: test
Type: macipmap
References: 1
Header: from: 10.0.0.0 to: 10.0.255.255
Members:
10.0.0.1,00:11:22:33:44:55
Há algumas coisas a serem consideradas:
- Esse tipo de conjunto é tecnicamente restrito a 64k endereços consecutivos (não tenho certeza se eles precisam ser "alinhados à sub-rede"), ele foi encontrado aqui
- Seu kernel tem que suportar ipset, os kernels de distribuição padrão mais comuns infelizmente não
- Você pode definir o ARP estático alternativamente
- Endereços MAC podem ser falsificados facilmente