Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

NAT DNAT SNAT

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Antworten
primeon
Member
Member
Beiträge: 62
Registriert: 25. Feb 2005, 10:46

NAT DNAT SNAT

Beitrag von primeon »

Hallo,

ich habE SCHON einige Dokus gelesen bezüglich DNAT SNAT
Masquerade aber ich steige noch nicht richtig durch.

Quelle ('-s' oder '--source') und das Ziel ('-d' oder ('--destination')

Zu meiner Frage

ich habe einen SUSE 8.1 Server mit SQUID laufen.

Masqurade ist aktiviert

Meine Adresse
192.168.50.0/24
255.255.255.0

Das Routing ist aktiviert und klappt alles supper.


Nun zu den Kleinigkeiten

Ich habe im Netzwerk einen Terminal-Server stehen, die User sollen später von zu HAuse aus auf diesem Server arbeiten können.

Also muss der Port 3389 umgeleitet werden.
Da ich aber auf dem TS HTTPS "443" laufen habe,
muss ich nur den Port SSL Freigeben und auf die Adresse
192.168.50.198 umleiten. ODER?


Was mir immer noch nicht klar ist
Quelle ('-s' oder '--source') und das Ziel ('-d' oder ('--destination')

Was ist genau die Quelle und das Ziel?

Ich sitze an meinem Client und schicke ein Packet ins Internet
Ist dann die Firewall das Ziel und der Client die Quelle?

Bei mir fehlt zur Zeit der AHA effekt.

Ich muss nun das Loadsharing einsetzten.

Könnte mir bitte jemad von euch kurz notieren wie meine Regel für den Terminal-Server ausehen muss?
Vielleicht blicke ich es dann.

Bin heute auf das Forum gestossen, echt Klasse.

Ich werde mal am Wochenende rumschnuppern.

Vielen Dank
Vielen Dank

Gruß Primeon
neo67
Member
Member
Beiträge: 63
Registriert: 12. Feb 2005, 14:37
Wohnort: Nürnberg
Kontaktdaten:

Nat nat

Beitrag von neo67 »

NAT überhaupt manipuliert Pakete dahin gegend, dass die Quell (SNAT)-Adressen oder Ports überschrieben werden oder die Ziel (DNAT) Adressen überschrieben werden.

Du hast auf dem Proxy ja anscheinend den netfilter/iptables laufen. Für die User draussen ist Dein Proxy der richtige Ansprechpartner. Er bekommt die https-Pakete. Hier müsste sowas stehen:

Code: Alles auswählen

iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 443 -j ACCEPT
Alles was mit 443 zu tun hat, kommt durch.

Jetzt geht es darum, die Pakete zum Server zu senden:
Sollte so aussehen:

Code: Alles auswählen

iptables -t nat -A PREROUTING -p tcp -i [Externes Interface] -s [Externes Netz] --sport 1024:65535 -d [Externe Interface Adresse] --dport https -j DNAT --to [Webserver Adresse]
Diese Pakete werden durch eine Befehlskette in der Tabelle "nat" bearbeitet.
Und zwar im Einstiegspunkt (Hook) PREROUTING (das ist direkt nach dem Eintreffen an der Netzwerkschnittstelle, im Gegensatz zum Postrouting kurz vor dem Verlassen)

Diese Pakete müssen auch wieder zurück zum Client, fehlt noch das SNAT, da Du ja private Adressen intern benutzt.

Code: Alles auswählen

iptables -t nat -A POSTROUTING -o [Externes Interface] -j SNAT --to [Externe Interface Adresse]
Sollte so funktionieren. :)
Gruß Neo
__________________________________
Vaio Lappi mit openSUSE 10.2
primeon
Member
Member
Beiträge: 62
Registriert: 25. Feb 2005, 10:46

NAT

Beitrag von primeon »

hallo,

klappt leider nicht ganz.

Nochmal zu meiner Frage.

Ich habe eine
Externe Karte eth0 "öffentliche IP"
Interne Karte eht1 "Interne IP"

i=intern Interface
o=output Interface

Was ist hier unu die Quelle und was das Ziel?

Wenn ich ins Interne Netzwerk möchte muss ich die Externe Karte ansprechen eth0
Weshalb das -i ? Das wäre ja dann die Interne Karte oder?

Oder gilt das nicht für die NAT Tabelle.

Mir ist leider immer noch nicht ganz klar was hier die Quelle und das Ziel ist.

Ich habe mir nochmals eine DOKU gesaugt und werde diese durchgehen, wenn Fragen sind melde ich nochmal.

Vielen Dank
Vielen Dank

Gruß Primeon
Benutzeravatar
maxpowers
Member
Member
Beiträge: 71
Registriert: 20. Apr 2004, 12:32
Wohnort: Xanten

Beitrag von maxpowers »

Quelle und Ziel ist natürlich immer abhängig von wo aus man die Sache betrachtet :)
Daher muss betrachtet werden von wo die Pakete kommen und wohin sie gehen z.B.

Ein externer Client macht eine Verbindung zu deinem Terminalserver auf dann ist die Quelle die IP des externen Clients und das Ziel dein Server (wegen NAT). Dieses Paket muss dann über eine DNAT Regel an deinen int. Server weitergeleitet werden.
Die Antwortpakete müssten ggf. auch noch erlaubt werden.

Was ich an der ganzen Sache nich verstehe - wozu HTTPS? Mir is ehrlich gesagt neu das man nen Microsoft Terminalserver direkt über HTTPS ansprechen kann - oder willst du das über einen Webserver machen der TSWEB - Client bereitstellt? Besser würdest Du den Heimarbeitern die Möglichkeit geben, sich über VPN einzuwählen...
carpe - diem
primeon
Member
Member
Beiträge: 62
Registriert: 25. Feb 2005, 10:46

DNAT

Beitrag von primeon »

Hallo,

ja ich möchte das über TSCLIENT machen.

VPN muss ich bei den Clients erst mal einrichten,
da einige Mitarbeiter auch mal im Ausland sind,
müssen diese auch über das Web zugreifen können,
deswegen die Lösung über HTTPS.


Danke für deinen Tipp.
Vielen Dank

Gruß Primeon
gaw
Hacker
Hacker
Beiträge: 464
Registriert: 28. Sep 2004, 16:33

Re: NAT

Beitrag von gaw »

primeon hat geschrieben:hallo,

klappt leider nicht ganz.

Nochmal zu meiner Frage.

Ich habe eine
Externe Karte eth0 "öffentliche IP"
Interne Karte eht1 "Interne IP"

i=intern Interface
o=output Interface

Was ist hier unu die Quelle und was das Ziel?

Wenn ich ins Interne Netzwerk möchte muss ich die Externe Karte ansprechen eth0
Weshalb das -i ? Das wäre ja dann die Interne Karte oder?

Oder gilt das nicht für die NAT Tabelle.

Mir ist leider immer noch nicht ganz klar was hier die Quelle und das Ziel ist.

Ich habe mir nochmals eine DOKU gesaugt und werde diese durchgehen, wenn Fragen sind melde ich nochmal.

Vielen Dank
Portforwarding wird zwar unter iptables mit dem gleichen DNAT-Befehl eingeleitet, es sind aber unterschiediche Begriffe. Wird die Ziel-IP umgeschrieben ist es DNAT, wird die Portnummer umgeschreiben ist es ein Portforwarding und wird gleichzeitig die Portnummer umgeschrieben ist es ein DNAT kombiniert mit einem Portforwarding. Meistens werden diese Begriffe durcheinandergeworfen oder auch synonym verwandt was die Verwirrung der Unkundigen steigert.

Nun zu deinem Problem:

Wenn https Pakete über eth0 hereinkommen (nicht ppp0, ippp0 oder dsl0?) ankommen, musst du sie in der PREROUTING Quelle
abfangen.

Code: Alles auswählen

/usr/sbin/iptables -t nat -p tcp --dport https -i eth0 \
        -j DNAT --to-destination $ZIEL_IP
Selbstverständlich musst du auch sicherstellen, dass diese Pakete nicht nur umgeschreiben werden sondern auch passieren dürfen. Das erledigt das SNAT nicht automatisch.

Also musst du irgendwo im iptables Script oder womit du arbeitest sicherstellen, dass die Pakete die dann passieren dürfen. Wie du das anstellst hängt von deiner verwendeten Firewall ab.
Ich verwende immer zwei Regeln um auch den rücklaufenden Verkehr einzuschränken. Das ganze
würde in einem meiner Skrite etwa so aussehen:

Code: Alles auswählen

# Variablendefinition
IPTABLES="/usr/sbin/iptables"
INTERFACE_EXT="eth0"  
INTERFACE_INT="eth1"
PORTS_HIGH="1024:65535"

# Hier die IP des Webservers eintragen
HTTPS_ZIEL_IP="x.x.x.x."
# DNAT


# Hier findet das DNAT statt
$IPTABLES -t nat -p tcp --dport https -i $INTERFACE_EXT \
        -j DNAT --to-destination $HTTPS_ZIEL_IP


# Hier folgen weitere Regeln
....
....
....

# und hier dürfen die Pakete passieren

$IPTABLES -A FORWARD -i $INTERFACE_EXT -o $INTERFACE_INT\
                 -m state \
                --state NEW,ESTABLISHED,RELATED -p TCP --sport $PORTS_HIGH \
                --dport https -j ACCEPT

$IPTABLES -A FORWARD -i $INTERFACE_INT -o $INTERFACE_EXT \
                -m state \
                --state ESTABLISHED,RELATED -p TCP --sport https \
                --dport $PORTS_HIGH -j ACCEPT

...
# Hier folgen weitere Regeln
...
...

wobei die Variabeln für sich sprechen sollten. Wenn sich dann herausstellt, dass deine externe Schnittstelle doch einen andere ist, musst sie nur oben im Kopf geändern werden.



Mit freundlichen Grüßen
gaw
Antworten