Matthias Houdek schrieb:
Stefan Eggert am Freitag, 26. September 2003 10:32:
Hallo zusammen,
ich habe ein Script was mich noch zum Verzweifeln bringt. Wenn ich die 2te Regel deaktiviere kann ich mit dem Client 1.2.3.4 sauber in das Internet Routen. Ist die 2te Regel aber aktiviert geht es nicht mehr. Warum? Eigendlich müsste er doch schon bei der ersten Regel auf ACCEPT springen, oder nicht? Es geht mir eigendlich nur darum, das nur ein Client in das Netz geroutet werden soll, alle anderen nicht.
#Routing IN <---> EX erlauben iptables -A FORWARD -j ACCEPT -i eth1 -s 1.2.3.4/32
Diese Regel erlaubt den Datenverkehr _von_ 1.2.3.4 über eth1 an eine andere Netwerkschnittstelle.
#Routing IN <---> EX unterbinden iptables -A FORWARD -j DROP -i eth1
Diese Regel unterbindet jegliches Weiterleiten von einer Netzwerkschnittstelle an eine andere.
Was passiert?
1.2.3.4 sendet ein Paket an <somehost>, es wird auch sauber forwardet (Regel 1 greift ja - schau nach, z.B. mit iptraf). <somehost> schickt Antwort zurück an 1.2.3.4, und was passiert mit diesem Paket? Regel 1 trifft ja nicht zu. ...
Wichtig: FORWARD braucht immer zwei Regeln, und zwar in jede Richtung eine (außer man erlaubt es generell und für alles: $IPT -A FORWARD -j ACCEPT).
Hier Regel 1a: iptables -A FORWARD -j ACCEPT -o eth1 -d 1.2.3.4/32
Diese kann man ggf. noch mit Statuskontrollen weiter einschränken (ESTABLISHED, RELATED), damit wäre kein Verbindungsneuaufbau von der anderen Seite möglich.
So, Problem gelöst. Die Firewall kann auch nicht wissen, das vom Ping noch etwas zurückkommt. Hab die "state" vergessen einzutragen :o), jetzt gehts. Trotzdem nochmal allen vielen Dank fürs Brainstorming *lach* Zweifelte schon an mir selbst... -- ------------------------------------------------------------------- - Stefan Eggert (stefan.eggert@exel.com) - - General Administrator IT Responsible for Germany and Czech - - - - Exel (Meinerzhagen) GmbH http://www.exel.com - -------------------------------------------------------------------