Diede
(usa Debian)
Enviado em 29/12/2009 - 17:41h
Sua máquina que compartilha a net tem duas placas de rede, né?
Digamos que eth1 seja a placa ligada a rede local. Você pode então criar para cada IP dos seus "usuários" uma regra que amarre o mac.
Se você compartilha via nat, será algo como : iptables -t filter -A FORWARD -s IP -m mac --mac-source MAC -j ACCEPT
Se você compartilha por proxy, será algo como : iptables -t filter -A INPUT -s IP -m mac --mac-source MAC -j ACCEPT
Digamos que você tenha o cliente 192.168.0.10 com MAC 00:11:22:33:44:55 e 192.168.0.11 com MAC 00:11:22:2F:44:55
Você poderia então usar as regras:
iptables -t filter -i eth1 -A FORWARD -s 192.168.0.10 -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
iptables -t filter -i eth1 -A FORWARD -s 192.168.0.11 -m mac --mac-source 00:11:22:2F:44:55 -j ACCEPT
(Continue repetindo a regra para todos os IP's dos clientes, com seus respectivos MAC's)
iptables -t filter -i eth1 -A FORWARD -j DROP
Isso aceitará determinado IP em determinado MAC, e o que não bater será dropado.
Mude o -A FORWARD para -A INPUT caso não compartilhar diretamente por NAT (ou seja, se usar Squid).
É importante lembrar também que se você já tem um script de firewall, essas regras acima devem ser as primeiras, pois o iptables pára de processar as regras quando acha uma condição verdadeira...