IP-Masquerading (Port-forwarding?)

Also ich hab mit suse 6.4 nen Masquerading-Router gebastelt (für das interne Netz). Wie kann ich einkommende Verbindungen an port X an einen bestimmten Rechner im Netz weiterleiten? Ist das richtige Wort dafür „Port-Forwarding“ (zwecks suche)?

mfg

Greenberet
*der gern mal wieder BZFlag spielen würde, aber nicht kann weils mit den clients eingehende udp-connections gibt…*

Moin,

Also ich hab mit suse 6.4 nen Masquerading-Router gebastelt
(für das interne Netz). Wie kann ich einkommende Verbindungen
an port X an einen bestimmten Rechner im Netz weiterleiten?

An sich genauso, wie das in der anderen Richtung funktioniert. Allerdings hat das vermutlich SuSE für Dich erledigt.
Tja, um ein wenig Arbeit wirst Du nicht herumkommen. Fang mit http://www.linuxdoc.org/HOWTO/Firewall-HOWTO.html an und arbeite Dich von da aus weiter vor.

Ist das richtige Wort dafür „Port-Forwarding“ (zwecks suche)?

Das alles heißt entweder Masquerading, Network Address Translation oder Port Forwarding.

Thorsten

Hmm Also Suse hat das nicht für mich erledigt. Ich kann mir auch nicht vorstellen wie das „:An sich genauso, wie das in der anderen Richtung funktioniert.“ gemeint ist.

Also ich hab das so verstanden, das wenn ich auf wer-weiss-was surfe die rule

ipchains -A forward -p tcp -s 192.168.1.0/24 -d 0/0 80 -i ippp0 -j MASQ

anspricht, der router so tut als wolle er auf wer-weiss-was port 80 und alle pakete die von dort kommen an den Rechner im Netz weiterleitet,von dem die Anfrage kam.

Wenn ich jetzt ne einkommende Verbindung habe und das Service nicht auf dem Router läuft, wie soll der Router wissen wohin er die Anforderung schicken soll, wenn ich ihm auch nur MASQ angebe? (Ist das „Ziel“ der Verbindungsaufforderung nicht der Router selbst?)

Also entweder habe ich was nicht verstanden oder ich hab nicht richtig gefragt.

ein verwirrter

Greenberet

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin,

Also ich hab das so verstanden, das wenn ich auf wer-weiss-was
surfe die rule

ipchains -A forward -p tcp -s 192.168.1.0/24 -d 0/0 80 -i
ippp0 -j MASQ

anspricht, der router so tut als wolle er auf wer-weiss-was
port 80 und alle pakete die von dort kommen an den Rechner im
Netz weiterleitet,von dem die Anfrage kam.

Kann sein. Ich schlage einen anderen Weg vor: Du maskierst alle Ports von allen Adressen und kümmerst Dich in den beiden anderen Queues darum, ob Dir jemand ohne Erlaubnis an die Daten will.
Ich bin allerdings kein Experte auf dem Gebiet.

Wenn ich jetzt ne einkommende Verbindung habe und das Service
nicht auf dem Router läuft, wie soll der Router wissen wohin
er die Anforderung schicken soll, wenn ich ihm auch nur MASQ
angebe? (Ist das „Ziel“ der Verbindungsaufforderung nicht der
Router selbst?)

Das wäre dann ein transparenter Proxy: Dre Router ist der Adressat, schickt die Pakete aber ohne Wissen des Absenders an einen anderen Host.

Oder übersehe ich hier was?

Thorsten

Also mit ipchains nicht lösbar? ( das mit der input und output chain hab ich nicht gemacht weil ich da nicht genau weiß an welchem interface er die rules wertet (oder ob er die rule für beide wertet auch wenn ich ihm -i… angebe))

Gibts da irgendwelche Bordmittel oder brauch i ein extra Programm? Wenn ich ein extra Programm brauche, gibts da eines das NUR den beschriebenen Zweck hat? (also nur eingehende Verbindungen an Port X nach Tabelle an einen Rechner im Netz weiterleiten( also Port80 an 192.168.1.3 und Port4783 an 192.168.1.7 und…))

ein schon etwas wissenderer und sehr dankbarer

Greenberet

Moin

Sofern ich das richtig verstanden habe

Macht Masquarading aus A.B.C.D:XX -> D.E.F.G:XX
Macht PortForwarding aus A.B.C.D:XX -> A.B.C.D:YY
Macht NAT beides zusammen also das was du brauchst ?

Die Ruuulz für einen transp Proxy lauten zB so

-A input -s LOCNET 1024: --dport80 -p tcp -i eth0 -j REDIRET 8080

Alles was vom lokalen netz anfrägt >1024 auf port80(http) prot TCP soll auf port 8080 umgeleitet werden
Die IP bleibt dabei gleich
Auf port 8080 lauert der gemeine Kopffüssler (squid) und schafft dann eine verbindung ins Internet über Die ISDN? Karte

Und zurück:

-A output --sport 80 -d LOCNET 1024: -p tcp -i eth0 -j ACCEPT !-y

Alles was von port 80 kommt ( IP egal ) und im lokalen netz auf port >1024 will darf das auch sofern es keine Verbindung (y) aufbauen will

Phagsae

Ipchains kann kein NAT aber der Nachfolger der
*grüpelgrübel* Iptable oderso heißt

Moin,

Also mit ipchains nicht lösbar?

Doch.

( das mit der input und output chain hab ich nicht gemacht
weil ich da nicht genau weiß an welchem interface er die
rules wertet (oder ob er die rule für beide wertet auch wenn
ich ihm -i… angebe))

ipchains sind nicht gerade intuitiv bedienbar. Kannst Du auf en neuen Kernel wechseln? Das neue Portmanipulationstool soll ja doch freundlicher sein.

Thorsten

Moin,

Sofern ich das richtig verstanden habe

Macht Masquarading aus A.B.C.D:XX -> D.E.F.G:XX
Macht PortForwarding aus A.B.C.D:XX -> A.B.C.D:YY
Macht NAT beides zusammen also das was du brauchst ?

Ipchains kann das alles, das ist prinzipiell auch nicht schwierig. Du mußt eben nur in die Datagramme schauen und evtl. etwas ändern.
Die Frage bleibt, wieviele Regeln man verwalten kann, ohne die Übersicht zu verlieren.

Thorsten

hmmm

würde sowas funktionieren (mal davon abgesehen das ich die rules noch immer alle in forward stehen habe)

ipchains -A forward -s !192.168.1.0/24 -d 0/0 5190 -p tcp -i ippp0 -j REDIRECT 192.168.1.5 5510

wenn ich möchte das alle anfragen an port 5510 auf den rechner 192.168.1.5 umgeleitet werden? (was müsste dort eigentlich statt 0/0 stehen damit die (dynamische) Ip des Routers eingesetzt wird (er ist ja das ziel) localhost?) und was muss ich angeben damit die packete die wieder zum anfragenden rauswollen ankommen?

sowas?:
ipchains -A forward -s 192.168.1.5 5510 -d 0/0 -p tcp -i ippp0 -j MASQ

???oder is masq nir für verbindungsaufforderungen?

ein wieder verwirrter Greenberet

Wenn ich schon zu dumm bin ein paar Regeln für ipchains vernünftig aufzusetzen, wie soll ich dann einen neuen Kernel kompiliern??

mfg

ein dummer

Greenberet (DAU der von diesem Image nicht wegkommt)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin T

Sofern ich das richtig verstanden habe

Macht Masquarading aus A.B.C.D:XX -> D.E.F.G:XX
Macht PortForwarding aus A.B.C.D:XX -> A.B.C.D:YY
Macht NAT beides zusammen also das was du brauchst ?

Ipchains kann das alles, das ist prinzipiell auch nicht
schwierig. Du mußt eben nur in die Datagramme schauen und
evtl. etwas ändern.

Das NAT nicht mit ipchains klappt hab ich in der CT gelesen
Dazu musste man wohl noch ipmasqwadfm ( oderso ) mitbenutzen
*grusel*

Die Frage bleibt, wieviele Regeln man verwalten kann, ohne die
Übersicht zu verlieren.

JOJO ! kann ich nur zustimmen

Phagsae

Moin,

ipchains sind nicht gerade intuitiv bedienbar. Kannst Du auf
en neuen Kernel wechseln? Das neue Portmanipulationstool soll
ja doch freundlicher sein.

Wenn ich schon zu dumm bin ein paar Regeln für ipchains
vernünftig aufzusetzen, wie soll ich dann einen neuen Kernel
kompiliern??

Das halte ich für deutlich einfacher. Beim Kernelbacken gibt es ein paar einfache Vorsichtsmaßnahmen, die einem vor Unheil bewahren. Wenn man die beachtet, kann man rumprobieren, bis es paßt. Außerdem ist die Bedienung sehr einfach, praktisch nur boolsche Variablen.
Bei der Konfiguration einer Firewall muß man sehr viel mehr im Hinterkopf haben, weil das Ziel sehr verschwommen ist.

Also: Schnapp die die neuesten Quellen, die Kernel-Back-Howto und versuch’s mal.

Thorsten

Moin,

Ipchains kann das alles, das ist prinzipiell auch nicht
schwierig. Du mußt eben nur in die Datagramme schauen und
evtl. etwas ändern.

Das NAT nicht mit ipchains klappt hab ich in der CT gelesen

Das müßtest Du schon genauer zitieren. IP-Masquerading habe ich selbst schon gemacht, über Port-Forwarding in diesem Zusammenahng in einer Anleitung gelesen.

Das wird eine IT-typische Begriffsverwirrung sein als ein technisches Problem.

Thorsten

Jop! Definitions problem :smile:
Moin T

>> Während ipchains lediglich maskieren kann ermöglicht iproute2
vollständiges NAT dh. die beliebige umsetzung von IP Adressen

Hi grüne Mütze *g*
doppeltes hmmm… zurück :smile:

würde sowas funktionieren (mal davon abgesehen das ich die
rules noch immer alle in forward stehen habe)

ipchains -A forward -s !192.168.1.0/24 -d 0/0 5190 -p tcp -i
ippp0 -j REDIRECT 192.168.1.5 5510

Nö glaub ich nicht
REDIRECT setzt ports um aber leider bleibt die IP bestehen
MASQ maskiert IP Adressen hier bleibt der port bestehn
Und du probierst hier beides auf einmal und das in der forward Regelliste
*schwere bedenken ob das so funktioniert*

wenn ich möchte das alle anfragen an port 5510 auf den rechner
192.168.1.5 umgeleitet werden? (was müsste dort eigentlich
statt 0/0 stehen damit die (dynamische) Ip des Routers
eingesetzt wird (er ist ja das ziel) localhost?) und was muss
ich angeben damit die packete die wieder zum anfragenden
rauswollen ankommen?

Für A bietet sich die --dport oder --sport regel an
Hierbei ist die IP Adresse egal es kommt nur auf den port an

-A input -s 192.168.X.X --dport 5190 -j REDIRCT 5510
solte folgendes machen

Alle Anfragen im loc Net auf port 5190 umsetzen auf port 5510
>

-A ouput -d 192.168.X.X --sport 5510 -j REDIRCT 5190

und zurück

sowas?:
ipchains -A forward -s 192.168.1.5 5510 -d 0/0 -p tcp -i ippp0
-j MASQ

Das maskiert alle Anfragen von 192.168.55.1 mit port 5510 auf die erhaltene dyn IP des PTP Partners
macht schon sinn aber port 5510 ??? *wunder*
zumindest in /etc/services ist da nicht verzeichnet

oder is masq nir für verbindungsaufforderungen?

doch geht schon

allerdings must du bei dyn IP vergabe die IN und Out Rulez dann in dem IP_UP setzten
sofern sich die Notwendigkeit der Regeln ergibt
zB wenn die - in oder out Regelliste mit DENY voreingestellt ist
Das ist bei allen Firewalls die auf ipchains aufbauen so eingestellt

Aber mal andersrum gefragt was willt du eigentlich machen ???

Phagsae

Moin,

Ich glaub das Problem ist das man nicht gleichzeitig port
umsetzen und IP vertauschen kann ???

Das kann sein! (Ich habe die c’t jetzt gerade nicht zur Hand.)

Thorsten

Aber mal andersrum gefragt was willt du eigentlich machen ???

Phagsae

hmm³ :wink:

Der Port war übrigens frei gewählt :wink:

Naja ein Beispiel was ich machen möchte:

Ich will Server für ein netzwerkspiel (nehmen wir mal BZFlag) sein. Der Server soll jedoch im internen Netz laufen (jetzt nicht sagen ich soll ihn auf dem Router laufen lassn und vom internen Netz dorthin connecten weil es gibt ja Fälle wo das nicht möglich ist)

wenn die dämliche Kiste (sorry) nicht zwischen mir und dem Internet wäre (oder ich mehrere IP-Adressen zur verfügunng hätte) würde, nachdem ich den Server im Netz gestartet habe, jeder connecten können.

Wenn jetzt aber jemand zu meiner IP fürs Internet connected (aus dem Internet), dann sendet er sein SYN-packet an den Router, der glaubt das es für ihn bestimmt ist und wiederum kein ACK zurückschickt weil das Service auf dem Router ja nicht läuft.

Wie kann ich jetzt dem Router sagen das er einkommende SYN-Packete von BzFlagfreaks (von internetIP:5155), an den Rechner 192.168.1.5:5155 im internen Netz weiterleitet und danach das von 192.168.1.5 kommende Ack-Packet (und natürlich auch den nachfolgenden Packetverkehr zwischen den beiden Rechnern) durchlässt.

Greenberet *der nachdenkt ob er nicht doch irgendne schrott-win-proxy-lösung machn soll*