Hallo Experten,
ich besitze habe einen Server auf dem Debian Linux 3.x mit
einer iptables 1.2.6a Firewall läuft.Nun möchte ich gerne
einige Ports freigeben, damit die User im Netzwerk darüber
kommunizieren können. Mit
iptables -t nat -A PREROUTING -p tcp --dport 4661 -j DNAT --to
192.168.0.x:4661
iptables -A FORWARD -p tcp --dport 4662 -j ACCEPT
geht es für EINEN Benutzer gut. So bald sich aber mehrere User
gleichzeitig dafür interessieren geht das ganze schief, da ich
es nicht geschafft habe einen ganzen IP-Bereich für das
Forwarding anzugeben.
Logisch: Paket aus dem Internet kommt an, iptables guckt nach, an welchen Port es gehen soll, wenn dafür eine DNAT-Regel existiert wird die Zieladresse umgeschrieben und das Paket an den entprechenden Client weitergeleitet. Das geht nun mal nur mit einem Client pro Port, woher soll iptables wissen, für wen das ankommende Paket ist ? DNAT braucht man im Prinzip nur, um Serverdienste auf den Clients laufen zu lassen und ankommande Anfragen dahin weiterzuleiten.
Anderstrum geht das anders (SNAT): Client sendet Paket, Server tauscht Absender durch „öffentliche“ IP (und evtl. anderem Port) aus merkt sich, von welchem Client/Port das Paket original kam. Antworten auf dieses Paket werden automatisch an den richtigen Client weitergeleitet.
Was kann ich machen, damit jegliche Anfrage über den selben
Port eine Antwort auf ihren Port bekommt?
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --from (oder -j MASQUERADE ohne --from IP)
Alexander