Hallo,
Ich versuche einen MAC Filter fürs LAN hinzubasteln. Dazu will ich iptables verwenden.
Ich habe dafür etwa das Folgende unter Freetz->rc.custom eingetragen:
Das funktioniert auch ganz gut so weit.
Das Problem ist nun aber, dass ich dasselbe auch für IPv6 brauche.
Ich habe das ganze via Telnet direkt mit ip6tables probiert. Das folgende habe ich eingegeben um ersteinmal zu gucken ob es prinzipiell funktioniert:
Danach wurde auch jeglicher IPv6 Traffic fallen gelassen. Danach habe ich diese Regel wieder entfernt und eine MAC Adresse freigegeben:
Das hat natürlich funktioniert, weil nun wieder alles akzeptiert wird, weil die DROP-Regel fehlt. Diese habe ich dann wieder hinzugefügt:
Und nun funktionierte wieder nichts mehr, obwohl die eine MAC akzeptiert werden sollte.
Weiß einer warum das sein könnte? Vielleicht fehlt ein Modul oder es wurde falsche geladen?
Es handelt sich dabei übrigens um iptables v1.4.11.1
EDIT: Lösung gefunden
Das Problem war einfach nur, dass ich als Source IP "::/0" hatte. Dadurch wird die Antwort vom Server, den man anfragt natürlich fallen gelassen. Aber die Source IP lässt sich schlecht festlegen, da man immer eine anderes Prefix vom Provider zugewiesen bekommt. Dennoch ist die Lösung denkbar einfach. In der ersten Regel erlaubt man einfach jeglichen Traffic, der vom Internet (Das "dsl" Interface der Fritzbox) kommt:
Danach können die Filterrgeln für die einzelnen MAC Adressen angelegt werden. Das ganze sieht dann in etwa so aus für IPv4 und IPv6:
Ich versuche einen MAC Filter fürs LAN hinzubasteln. Dazu will ich iptables verwenden.
Ich habe dafür etwa das Folgende unter Freetz->rc.custom eingetragen:
Code:
modprobe ip_tables
modprobe ip6_tables
modprobe iptable_filter
modprobe ip6table_filter
modprobe x_tables
modprobe xt_tcpudp
modprobe iptable_mangle
modprobe ip6table_mangle
modprobe xt_mac
############## Allow local requests ###############
iptables -t mangle -A PREROUTING -d 172.16.0.0/22 -j ACCEPT
############## Allow specific MACs to be routed to the WWW ###############
iptables -t mangle -A PREROUTING -s 172.16.0.0/22 -m mac --mac-source 01:23:45:67:89:AB -j ACCEPT
############## DROP the rest ###############
iptables -t mangle -A PREROUTING -s 172.16.0.0/22 -j DROP
Das funktioniert auch ganz gut so weit.
Das Problem ist nun aber, dass ich dasselbe auch für IPv6 brauche.
Ich habe das ganze via Telnet direkt mit ip6tables probiert. Das folgende habe ich eingegeben um ersteinmal zu gucken ob es prinzipiell funktioniert:
Code:
ip6tables -t mangle -A PREROUTING -s ::/0 -j DROP
Danach wurde auch jeglicher IPv6 Traffic fallen gelassen. Danach habe ich diese Regel wieder entfernt und eine MAC Adresse freigegeben:
Code:
ip6tables -t mangle -D PREROUTING -s ::/0 -j DROP # regel von davor entfernt mit -D
ip6tables -t mangle -A PREROUTING -s ::/0 -m mac --mac-source 01:23:45:67:89:AB -j ACCEPT
Das hat natürlich funktioniert, weil nun wieder alles akzeptiert wird, weil die DROP-Regel fehlt. Diese habe ich dann wieder hinzugefügt:
Code:
ip6tables -t mangle -A PREROUTING -s ::/0 -j DROP
Und nun funktionierte wieder nichts mehr, obwohl die eine MAC akzeptiert werden sollte.
Weiß einer warum das sein könnte? Vielleicht fehlt ein Modul oder es wurde falsche geladen?
Es handelt sich dabei übrigens um iptables v1.4.11.1
EDIT: Lösung gefunden
Das Problem war einfach nur, dass ich als Source IP "::/0" hatte. Dadurch wird die Antwort vom Server, den man anfragt natürlich fallen gelassen. Aber die Source IP lässt sich schlecht festlegen, da man immer eine anderes Prefix vom Provider zugewiesen bekommt. Dennoch ist die Lösung denkbar einfach. In der ersten Regel erlaubt man einfach jeglichen Traffic, der vom Internet (Das "dsl" Interface der Fritzbox) kommt:
Code:
ip6tables -t mangle -A PREROUTING -i dsl -s ::/0 -j ACCEPT
Danach können die Filterrgeln für die einzelnen MAC Adressen angelegt werden. Das ganze sieht dann in etwa so aus für IPv4 und IPv6:
Code:
modprobe ip_tables
modprobe ip6_tables
modprobe iptable_filter
modprobe ip6table_filter
modprobe x_tables
modprobe xt_tcpudp
modprobe iptable_mangle
modprobe ip6table_mangle
modprobe xt_mac
############## Allow local requests ###############
iptables -t mangle -A PREROUTING -d 172.16.0.0/22 -j ACCEPT
############## Allow incoming ipv6 traffic from the internet ###############
ip6tables -t mangle -A PREROUTING -i dsl -s ::/0 -j ACCEPT
############## MAC Filter ###############
#IPv4
iptables -t mangle -A PREROUTING -s 172.16.0.0/22 -m mac --mac-source 01:23:45:67:89:AB -j ACCEPT
#IPv6
ip6tables -t mangle -A PREROUTING -s ::/0 -m mac --mac-source 01:23:45:67:89:AB -j ACCEPT
#drop the rest
iptables -t mangle -A PREROUTING -s 172.16.0.0/22 -j DROP
ip6tables -t mangle -A PREROUTING -s ::/0 -j DROP
Zuletzt bearbeitet: