Hallo Liste. Eine Frage zu iptables: ich baue mir gerade ein Regelwerk zusammen, das u.a. ein LAN nach außen hin maskieren soll. Dabei stecken in der Kiste zwei Netzwerkkarten, die lan und wan heißen, ihrer Funktion entsprechend. Hiermit funktioniert Masquerading/NAT: echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null $IPTABLES -t nat -A POSTROUTING -o wan -j MASQUERADE Jetzt möchte ich aber Regeln hinzufügen, daß durch die FORWARD-Chain nur solche Pakete hindurch dürfen, die von zwei bestimmten MAC-Adressen stammen. Im Ergebnis sollen nur diese zwei Maschinen im LAN direkt nach draußen kommen, und alle anderen sollen durch die Proxys, die ich auf dem Router laufen habe. Sprich: die INPUT-Chain und die Output-Chain dürfen von der Einschränkung nicht betroffen sein. Jetzt kann ich über das Modul mac die FORWARD mit einer Regel ausstatten, die mir nur eine MAC-Adresse durchläßt. Wie aber mache ich es, daß die eine _oder_ die andere MAC erlaubt ist? Sprich: wie kann ich zwei Regeln mit Oder verknüpfen? Hoffe, ich habe das verständlich formuliert. Wäre schön, wenn jemand einen Tip geben könnte. Danke und Gruß. -- Andre Tann
On Wed, 31 May 2006 19:35:28 +0200 Andre Tann <atann@gmx.net> wrote:
Hallo Liste.
Eine Frage zu iptables: ich baue mir gerade ein Regelwerk zusammen, das u.a. ein LAN nach außen hin maskieren soll. Dabei stecken in der Kiste zwei Netzwerkkarten, die lan und wan heißen, ihrer Funktion entsprechend.
Hiermit funktioniert Masquerading/NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null $IPTABLES -t nat -A POSTROUTING -o wan -j MASQUERADE
Jetzt möchte ich aber Regeln hinzufügen, daß durch die FORWARD-Chain nur solche Pakete hindurch dürfen, die von zwei bestimmten MAC-Adressen stammen. Im Ergebnis sollen nur diese zwei Maschinen im LAN direkt nach draußen kommen, und alle anderen sollen durch die Proxys, die ich auf dem Router laufen habe. Sprich: die INPUT-Chain und die Output-Chain dürfen von der Einschränkung nicht betroffen sein.
Jetzt kann ich über das Modul mac die FORWARD mit einer Regel ausstatten, die mir nur eine MAC-Adresse durchläßt. Wie aber mache ich es, daß die eine _oder_ die andere MAC erlaubt ist? Sprich: wie kann ich zwei Regeln mit Oder verknüpfen?
Hoffe, ich habe das verständlich formuliert. Wäre schön, wenn jemand einen Tip geben könnte.
Nacheinander nur einen davon logisch negiert: Kommt/Geht das Paket von/zur MAC#1? True: Allow, (False: Next) Kommt/Geht das Paket nicht von/zur MAC#2? True: Drop, (False: Next)! Nach dem Allow/Drop ist die Bearbeitung dieser Kette beendet und das Paket wird nicht weiter geprüft. Ansonsten eigene Ketten definieren die du dann nacheinander abprüfst. Gruß, Olly -- PM an public.o@la-familia-grande.de
Am Mi, 31.05.2006, 19:35, schrieb Andre Tann:
Hallo Liste.
Eine Frage zu iptables: ich baue mir gerade ein Regelwerk zusammen, das u.a. ein LAN nach außen hin maskieren soll. Dabei stecken in der Kiste zwei Netzwerkkarten, die lan und wan heißen, ihrer Funktion entsprechend.
Hiermit funktioniert Masquerading/NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null
# Verwerfe alles AUSSER mac-source, was über if lan die Forward chain betritt $IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:3e -j DROP #pc1 $IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e :1A -j DROP #pc2
$IPTABLES -t nat -A POSTROUTING -o wan -j MASQUERADE
Jetzt möchte ich aber Regeln hinzufügen, daß durch die FORWARD-Chain nur solche Pakete hindurch dürfen, die von zwei bestimmten MAC-Adressen stammen.
man iptables: mac --mac-source [!] address Match source MAC address. It must be of the form XX:XX:XX:XX:XX:XX. Note that this only makes sense for packets coming from an Ethernet device and entering the PREROUTING, FORWARD or INPUT chains. Ich habe das nicht probiert, Ist aber vielleicht ein Ansatz? hth Benn
Bernd Schmelter, Mittwoch, 31. Mai 2006 21:43:
$IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:3e -j DROP $IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:1a -j DROP
Das wird so nicht funktionieren: ein Paket von ...:3e wird von Regel 1 durchgelassen, aber dann von Regel 2 gedropt. Ein Paket von ...:1a wird schon bei der ersten Regel gedropt. -- Andre Tann
Am Mi, 31.05.2006, 21:54, schrieb Andre Tann:
Bernd Schmelter, Mittwoch, 31. Mai 2006 21:43:
$IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:3e -j DROP $IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:1a -j DROP
Das wird so nicht funktionieren: ein Paket von ...:3e wird von Regel 1 durchgelassen, aber dann von Regel 2 gedropt.
Durch ist durch. Das könnte gehen.
Ein Paket von ...:1a wird schon bei der ersten Regel gedropt.
Das stimmt. :-( Also anders herum. Am Beginn des FW-Scripts sollte die Policy für die Chains ohnehin so aussehen, dass alles generell verworfen (verboten) wird, was durch spezielle Commandos innerhalb der Chains nicht irgendwie erlaubt / verarbeitet wird. echo 1 >...... iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -F iptables -t nat -F iptables -X $IPTABLES -t nat -A POSTROUTING -o wan -j MASQUERADE $IPTABLES -A FORWARD -i lan --mac-source 44:77:0e:3e -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i lan --mac-source 44:77:0e:1a -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # ....und hier den Rückweg von Außen erlauben iptables -A FORWARD -i wan -o lan -m state --state ESTABLISHED,RELATED -j ACCEPT Ob --mac-source plus -m state zusammen funktionieren, weiss ich nicht. hth Benn
Am Mi, 31.05.2006, 23:14, schrieb Bernd Schmelter:
Am Mi, 31.05.2006, 21:54, schrieb Andre Tann:
Bernd Schmelter, Mittwoch, 31. Mai 2006 21:43:
$IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:3e -j DROP $IPTABLES -A FORWARD -i lan --mac-source ! 44:77:0e:1a -j DROP
Das wird so nicht funktionieren: ein Paket von ...:3e wird von Regel 1 durchgelassen, aber dann von Regel 2 gedropt.
Durch ist durch. Das könnte gehen.
Ein Paket von ...:1a wird schon bei der ersten Regel gedropt.
Das stimmt. :-(
Also anders herum. Am Beginn des FW-Scripts sollte die Policy für die Chains ohnehin so aussehen, dass alles generell verworfen (verboten) wird, was durch spezielle Commandos innerhalb der Chains nicht irgendwie erlaubt / verarbeitet wird.
echo 1 >......
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -F iptables -t nat -F iptables -X
Das Loopbackdevice auf dem Router muß natürlich als erstes freigeschaltet werden, da Policy hier ja auch auf DROP steht. ############### Loopback #################### iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o wan -j MASQUERADE
$IPTABLES -A FORWARD -i lan --mac-source 44:77:0e:3e -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i lan --mac-source 44:77:0e:1a -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# ....und hier den Rückweg von Außen erlauben
iptables -A FORWARD -i wan -o lan -m state --state ESTABLISHED,RELATED -j ACCEPT
Ob --mac-source plus -m state zusammen funktionieren, weiss ich nicht.
hth Benn
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
participants (3)
-
Andre Tann
-
Bernd Schmelter
-
Oliver Meißner-Knippschild