Forward-Regel für bestimmtes Netzerkinterface
Forward-Regel für bestimmtes Netzerkinterface
Ich habe hier einen Rechner mit zwei Netzwerkkarten, für den ich folgendes erreichen möchte:
Mit eth0 hängt dieser in einem Netz, von dem aus er uneingeschränkt erreichbar sein soll.
Mit eth1 hängt er in einem anderen Netz, über das die Leute über den Linux-Server über eth0 zum Internet-Gateway gelangen sollen, ansonsten aber von dem Neth an eth0 nichts sehen dürfen.
Irgend wie muss dass ja mit iptables und einer FORWARD-Rule gehen, nur leider bleibe ich an der Stelle hängen, an der ic hdas Ziel (nämlich das Gateway vom eth0-Netz) eingeben müsste. Hat jemand einen Tipp wie sowas geht?
Mit eth0 hängt dieser in einem Netz, von dem aus er uneingeschränkt erreichbar sein soll.
Mit eth1 hängt er in einem anderen Netz, über das die Leute über den Linux-Server über eth0 zum Internet-Gateway gelangen sollen, ansonsten aber von dem Neth an eth0 nichts sehen dürfen.
Irgend wie muss dass ja mit iptables und einer FORWARD-Rule gehen, nur leider bleibe ich an der Stelle hängen, an der ic hdas Ziel (nämlich das Gateway vom eth0-Netz) eingeben müsste. Hat jemand einen Tipp wie sowas geht?
Du musst eine Forward-Regel definieren, die nur Pakete durchlässt, die *nicht* an eine Zieladresse im IP-Range gehen, die in eth1 benutzt werden. Und alle anderen Pakete blocken. Das geht z.B. mit
Dann das Routing auf deinem Rechner so einstellen, dass es den Gateway als Standardroute benutzt. Fertig.
Janka
Code: Select all
echo 0 >/proc/sys/net/ipv4/ip_forward
iptables --policy FORWARD drop
iptables --flush FORWARD
iptables --append FORWARD --out-interface eth1 --destination ! <ETH1_NETZADRESSE>/<ETH1_NETZMASKE> --jump accept
echo 1 >/proc/sys/net/ipv4/ip_forward
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
Danke für die Hilfe! Irgend was stimmt aber noch nicht.
Gebe ich bei dem Rechner, der an eth1 angeschlossen ist die IP von eth1 als Gateway und DNS an, so sehe ich das restliche Netz zu dem auch der Server gehört und auf das eigentlich nicht zugegriffen werden können soll, ins INet komme ich gar nicht...
Gebe ich bei dem Rechner an eth1 als Gateway und DNS allerdings die IP and, die auch der Server als Gateway und DNS verwendet (und die zu einem anderen Suzbnetz gehört als eth1), so komme ich nirgends rein - noch nicht mal da hin wo ich nicht hin kommen können sollte.
Hat evtl. noch mal jemand einen Hinweis?
Gebe ich bei dem Rechner, der an eth1 angeschlossen ist die IP von eth1 als Gateway und DNS an, so sehe ich das restliche Netz zu dem auch der Server gehört und auf das eigentlich nicht zugegriffen werden können soll, ins INet komme ich gar nicht...
Gebe ich bei dem Rechner an eth1 als Gateway und DNS allerdings die IP and, die auch der Server als Gateway und DNS verwendet (und die zu einem anderen Suzbnetz gehört als eth1), so komme ich nirgends rein - noch nicht mal da hin wo ich nicht hin kommen können sollte.
Hat evtl. noch mal jemand einen Hinweis?
Es gibt eigentlich zwei Netze: 90.0.0.0/24 mit Gateway 90.0.0.254 (funktioniert bereits, in dem Netz steht auch der Linux-Server mit eth0) und 192.168.2.0/24 das an besagter eth1 hängen soll.
Am 90.0.0.0er Netz soll nichts verändert werden, hingegen sollen alle Clients im 192.168.2.0er Netz zwar über das Gateway 90.0.0.254 ins Internet können, aber sonst nichts vom 90.0.0.0er Netz sehen dürfen. Das wäre für diese Clients also der Weg eth1 -> eth0 -> 90.0.0.254
Am 90.0.0.0er Netz soll nichts verändert werden, hingegen sollen alle Clients im 192.168.2.0er Netz zwar über das Gateway 90.0.0.254 ins Internet können, aber sonst nichts vom 90.0.0.0er Netz sehen dürfen. Das wäre für diese Clients also der Weg eth1 -> eth0 -> 90.0.0.254
In dem Fall musst du es wie folgt machen:
Dadurch werden nur noch Pakete, die nicht 90.0.0.0/24 als Ziel haben, durch den Rechner nach eth1 durchgeleitet. Das Routing funktioniert trotzdem, da dadurch ja nicht die Zieladresse im Paket angefasst wird.
Wenn du damit keine Pakete durchbekommst, ist an deiner Routing-Konfiguration etwas falsch. Evtl. versuchst du auch doppeltes Masquerading? Das geht nämlich schief.
Janka
Code: Select all
echo 0 >/proc/sys/net/ipv4/ip_forward
iptables --policy FORWARD drop
iptables --flush FORWARD
iptables --append FORWARD --out-interface eth1 --destination ! 90.0.0.0/24 --jump accept
echo 1 >/proc/sys/net/ipv4/ip_forward
Wenn du damit keine Pakete durchbekommst, ist an deiner Routing-Konfiguration etwas falsch. Evtl. versuchst du auch doppeltes Masquerading? Das geht nämlich schief.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
ein iptables --list liefert mir folgendes:
Das AMontpellier-257-1-113-net.w90-0.abo.wanadoo.fr ist gleich 90.0.0.0 da das erste Netz dummerweise eine existierende IP verwendet die aufgelöst wird...jedenfalls sind keine weiteren Regeln aktiv, aber auch mit der Änderung ändert sich am Verhalten absolut nix, es ist immer noch nur das Netz erreichbar, das nicht sichtbar sein soll.
Brauche ich nicht noch eine zusätzliche Regel die mir die eingehende Verbindung explizit auf das eigentliche Gateway 90.0.0.254 umbiegt?
Code: Select all
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere !AMontpellier-257-1-113-net.w90-0.abo.wanadoo.fr/24
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Brauche ich nicht noch eine zusätzliche Regel die mir die eingehende Verbindung explizit auf das eigentliche Gateway 90.0.0.254 umbiegt?
Kleine Korrektur: es ist NICHT das 90.0.0.0er netz zu sehen sondern nur der Server, in dem auch die beiden Netzwerkkarten stecken. Die weiterleitung von eth1 auf irgend etwas im 90.0.0.0er Netzwerk (inklusive des Gateways) klappt also nicht.
Mir fehlt von der Logik her auch noch die Verbindung von diesem 192.168.2.0er Netzwerk zum Gateway...
Mir fehlt von der Logik her auch noch die Verbindung von diesem 192.168.2.0er Netzwerk zum Gateway...
Aaaaalso, damit funktioniert es jetzt FAST:
Ich komme über mein eth1-er Netz ins Internet, leider sind trotz der beiden Regeln an vorletzter und vorvorletzter Stelle noch immer der Linux-Server selber, auf dem diese iptables installiert sind zu sehen als auch sämtliche Windows-Freigaben.
Speziell das mit den Freigaben verstehe ich nicht - wieso werden die nicht ausgefiltert? Liegts am Protokoll?
Code: Select all
echo 0 >/proc/sys/net/ipv4/ip_forward
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 ! -s 90.0.0.0/24 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -s 90.0.0.254 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Speziell das mit den Freigaben verstehe ich nicht - wieso werden die nicht ausgefiltert? Liegts am Protokoll?
Der Rechner, auf dem die Forward-Regel definiert ist, wird von dieser selbstverständlich nicht erfasst. Die Forward-Chain gilt nur für weitergeleitete Pakete. Wenn du den Rechner selbst ausblenden willst, musst du diese Regeln auch noch in der Input-Chain plazieren.
Janka
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.