ich bin grad dabei eine firewall für ein Lan aufzusetzten, die per macadresse den zugang zum internet regeln soll.
der gedanke ist folgender: setzte die defaultregel für die pakete im table "filter" der chain "forward" auf drop und erlaube dann explizit jede einzelne MAC.
Code
#
# Configurations
#
INTERNET=eth1
#
# reset the default policies in the filter table.
#
iptables -P INPUT ACCEPT
# das standardverhalten für den filter wird auf DROP gesetzt. nur wenn ein paket unten auf Grund der MAC erlaubt wird kommt es durch.
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
# reset the default policies in the nat table.
#
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
# reset the default policies in the mangle table.
#
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
#
# flush all the rules in the filter and nat tables.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
#
# erase all chains that's not default in filter and nat table.
#
iptables -X
iptables -t nat -X
iptables -t mangle -X
#
# MASQUERADING EINSCHALTEN
#
iptables -A POSTROUTING -t nat --out-interface $INTERNET -j MASQUERADE
#
# MAC FILTERING
#
TMPFILE=/tmp/macolny
MACFILE=./allow_mac
grep -i '^[0-F]' $MACFILE > $TMPFILE
for i in `cat $TMPFILE`
do
echo $i
iptables -A FORWARD -m mac -t filter --mac-source $i -j ACCEPT
done
rm $TMPFILE
echo "FIREWALL RESTARTED"
Alles anzeigen
der untere teil macht nix anderes als aus einer datei mit macadressen diese zu extrahieren und dann für jede die accept regel zu erstellen.
aber aus irgendweinem grund funkt des net, und ich komm net dahinter.