Please, the sappige details van NAT!!!

Pagina: 1
Acties:
  • 243 views sinds 30-01-2008
  • Reageer

  • BansheeBoy
  • Registratie: Maart 2000
  • Laatst online: 29-06 11:01
Hallo,

Zoals jullie kunnen merken heb ik me de laatste tijd geinteresseerd in NAT.

Ik wil nu van de "echte" kenners horen/lezen hoe NAT precies werkt, wat doet het precies, hoe zit het in elkaar, en wat zijn de gevaren.

Hoi.

BansheeBoy Se :)loves NAT, Bush is the best!

:{ ²


Verwijderd

Ik weet ongeveer hoe nat werkt. Een pc/server/router vertaald al het internet verkeer van intern naar 1 adres extern.

Om een voorbeeld te geven:
Een bedrijf kan intern een netwerk hebben in de range van 192.168.0.1-192.168.0.254
Om naar buiten te gaan hebben ze 1 adres (195.240.160.200 bijv.)

Via nat wordt alles vertaald van intern naar 1 adres extern.
Via sessie id wordt er bij gehouden waar de replies naar toe moeten. (dit denk ik, ik weet het niet zeker) Van buiten af komt er weer een reply. In de packets van deze reply zit informatie over sessie id's. NAT zoekt dan zelf uit welke intern adres er bij hoort.


Verbeter me maar als ik het fout heb.

  • CmdrKeen
  • Registratie: Augustus 2000
  • Laatst online: 27-05 21:11

CmdrKeen

Krentenboltosti

In grote lijnen heb je gelijk, alleen dan dat de pakketjes *zelf* geen info bevatten over hun uiteindelijke bestemming. Daarvoor is niks in de header gereserveerd. Dit is echter irrelevant als je wilt begrijpen hoe het werkt :)

Bloed, zweet & koffie


Verwijderd

met NAT wat staat voor Network Adress Translation kun je de verschillende packets die een bepaalde computer (= meestal server) binnen komen veranderen.

Een packet heeft altijd een source (welke comp. genereert het packet) en een destination (naar welke comp moet het pakketje).

Met NAT kun je beiden aanpassen. NAT wordt voornamelijk gebruikt als je bijvoorbeeld maar 1 publiek IP-adres hebt, maar meerdere fysieke servers in je interne netwerk.

Overigens kun je NAT ook toepassen als je voor alle servers publieke IP-adressen hebt hoor! Voorwaarde is in ieder geval dat packets altijd door de NAT-computer gaan (dus zowel heengaande packets als return-packets).

Zodra je NAT-computer op het publieke IP-adres een pakketje ontvangt zet ie deze om in bijvoorbeeld het interne IP van server2.
Server2 ziet het pakketje alsof het komt van de originele computer die het pakketje verstuurt (en dus niet je NAT-comp). Vervolgens stuurt Server2 bijvoorbeeld een reply-pakketje naar die computer. Alleen gaat dit reply-pakketje weer door de NAT-computer. Op zijn beurt verandert deze weer het IP-adres waarvan hij vandaan komt (het interne IP wordt dus omgezet in dat publieke ip).

Welnu wat kun je nu met NAT? Je kunt bijvoorbeeld verkeer dat op poort 80 (HTTP) doorsturen naar meerdere (interne) servers tegelijkertijd. Verder kun je dat verkeer bijvoorbeeld ook doorsturen naar een compleet andere poort of zelfs naar meerdere poorten. Je kunt er nog wel meerdere dingen mee doen hoor, maar ze schieten me zo ff niet te binnen.

Wat is nu het nadeel van NAT?
Het gebeurt niet op applicatie-niveau wat een proxy-server dus wel doet! Je kunt dus niet gebruikers valideren of bepaalde applicaties blokeren. Je kunt alleen bepaalde poorten blokkeren met NAT in combinatie met je firewall. Dit kun je dus doen bijvoorbeeld op basis van van het IP dat de verbinding maakt. Verder kun je dit doen bijvoorbeeld op basis van de poort waarmee de verbinding gemaakt wordt en nog een aantal andere zaken (o.a de staat van de verbinding, maar dan wordt het wel heel erg technisch).

Conclusie NAT is wat minder veilig dan een PROXY (het nadeel van een proxy kun je in je andere topic lezen). Maar gelukkig worden beiden vaak in combinatie met elkaar gebruikt!

Ik hoop dat dit hele verhaal de dingen wat duidelijker voor je gemaakt heeft, zo niet dan zal het wel aan mijn uitleg liggen:)

  • Martijn
  • Registratie: Juli 1999
  • Laatst online: 23-08 15:48
Nou, op school hebben we er net een verslag over moeten maken...:)

Dit is de link naar de website:
http://www.xs4all.nl/~grauwj/nat/

Thx to Lone Gunman...:)

Verwijderd

Conclusie NAT is wat minder veilig dan een PROXY (het nadeel van een proxy kun je in je andere topic lezen). Maar gelukkig worden beiden vaak in combinatie met elkaar gebruikt!
het gebruik van nat en proxy is niet echt lonend. Het ondervangen van de risico's van nat zijn beter toe te vertrouwen aan een firewall. maar voor de rest: Mooi verhaal Nelske! ;)

  • Onno
  • Registratie: Juni 1999
  • Niet online
Wat is nu het nadeel van NAT?
Ehh... je vergeet nog een groot nadeel: NAT werkt alleen maar voor TCP, UDP en ICMP. Dat kan erg lastig zijn. :)

  • witchdoc
  • Registratie: Juni 2000
  • Laatst online: 18-08 16:32
ok, maar hoe weet zo'n nat server nu welke bestanden ie naar intern pc1 moet sturen en naar pc2.. als je allebei op dezelfde site aan't surfen bent kan dat nog lastig worden lijkt me
het is het zeker niet dus hoe lossen ze't op?

  • ijdod
  • Registratie: April 2000
  • Laatst online: 20-08 17:52
Een proxy != NAT. Dat zijn twee zaken die qua principe geheel van elkaar gescheiden zijn. Het is appels met peren vergelijken.
poohbeer:ok, maar hoe weet zo'n nat server nu welke bestanden ie naar intern pc1 moet sturen en naar pc2.. als je allebei op dezelfde site aan't surfen bent kan dat nog lastig worden lijkt me
het is het zeker niet dus hoe lossen ze't op?
Eerst even back to basics: Het vraag & antwoord spelletje van IP. Jouw PC stuurt (laten we zeggen een webserver) een pakketje, met daar in een source poort (willekeurig, 12345) en een destination port (HTTP, 80), naast uiteraard de betreffende IP adressen. De server antwoord precies andersom, dus source poort is 80, destination is 12345. Op deze manier kunnen de verschillende sessies uit elkaar worden gehouden.

NAT gebruikt dit zelfde mechanisme. Het houdt bij welke poort gebruikt wordt voor verkeer van en naar een bepaalde interne host. PC1 (10.1.1.1) vraagt erm... bedrijfs kritische gegevens op van www.hornybitches.com. PC1 gebruikt hier zelf poort 12345 voor. Op de NAT router wordt het source adres (van PC1) vervangen door het externe adres van de NAT router, en de NAT router koppelt hier ook een nieuw poortnummer aan (54321). De NAT router stuurt het door naar poort 80 van de server van www.hornybitches.com. De Hij weet dus dat verkeer dat binnenkomt op poort 11223, afkomstig van www.hornybitches.com:80, aangevraagd is door host 10.1.2.34

De gegevens die terugkomen van www.hornybitches.com gaan naar het externe IP adres van de NAT router, op poort 54321. De NAT router weet dat hij hier het destination adres en poort kan vervangen door 10.1.1.1 en 12345, en het doorsturen op het interne netwerk.

Root don't mean a thing, if you ain't got that ping...


Verwijderd

Hmm, Ijdod, dat is dus precies wat ik ook al vertelde.

En wie heeft er hier beweerd dat een NAT gelijk is aan PROXY????

  • ijdod
  • Registratie: April 2000
  • Laatst online: 20-08 17:52
nee, je gaf slechts de basis van wat NAT inhoudt. Antwoord op de gestelde vraag was dat niet. Daarbij, net als in de andere NAT discussie heb je wel een idee waar je het moet zoeken, maar gaat op de details de fout in. Om een voorbeeldje te geven:
Welnu wat kun je nu met NAT? Je kunt bijvoorbeeld verkeer dat op poort 80 (HTTP) doorsturen naar meerdere (interne) servers tegelijkertijd.
Niet tegelijk. Om en om zou theoretisch kunnen, maar op deze manier aan load balancing doen is wat zinloos.

En voor de goede orde, degene die suggereert dat het hetzelfde is, is ene, wait for it, Nelske. (hoewel, ik moet toegeven dat je jezelf in dezelfde alinea nog tegenspreekt)

Root don't mean a thing, if you ain't got that ping...


Verwijderd

Op maandag 20 november 2000 00:24 schreef Onno het volgende:

[..]
Ehh... je vergeet nog een groot nadeel: NAT werkt alleen maar voor TCP, UDP en ICMP. Dat kan erg lastig zijn. :)
Wat heb ik dan nog meer nodig op het internet????

Verwijderd

Nee natuurlijk kun je geen packet tegelijkertijd naar meerdere IP's sturen!

Met tegelijkertijd bedoel ik dus dat je m.b.v. slechts 1 NAT regeltje op kunt geven dat inkomend verkeer naar meerdere servers wordt doorgestuurd (dat dit in praktijk dan neerkomt op het na elkaar versturen van de pakketjes naar die versschillende servers lijkt me nog al logisch, aangezien ze allemaal een verschillende destination hebben).
Overigens kan dit wel degelijk handig zijn voor loadbalancing als je bijvoorbeeld meerdere interen webservers o.i.d hebt!
Het ligt er natuurlijk wel aan wat voor een balancing-mechanisme de NAT-sotware gebruikt!

En ik zou graag nog die alinea willen horen van je waarin ik zeg (wat ik me echt niet voor kan stellen) dat proxy en nat hetzelfdde zijn. Ik kan het er zo snel niet uithalen hoor, maar mocht ik dat wel gezegd hebben dan is dat natuurlijk absoluut niet waar.

En die reaktie dat ik wel ongeveer weet waarover ik praat, tja laat ik die maar als niet geplaatst beschouwen!

Verwijderd

Op zondag 19 november 2000 23:20 schreef Martijn het volgende:Nou, op school hebben we er net een verslag over moeten maken...:)

Dit is de link naar de website:
http://www.xs4all.nl/~grauwj/nat/

Thx to Lone Gunman...:)
Interessant stukje alleen toch bleven er bij mij twee vragen liggen, onder het kopje NAPT schrijf je het volgende.
De NAT router beschikt over een op internet geldend IP-adres, namelijk 212.187.68.78 De port-range waarover de router beschikt kan handmatig worden ingesteld. Uitgaande van een Linux NAT router begint deze port-range standaard bij 61000 en loopt deze door tot 65096. Er zijn dus 4096 TCP/UDP poorten beschikbaar.
Hoe weet hier de cliënt nou welke poort hij moet gebruiken :? Dat is mij nog niet helemaal duidelijk...

En onder het kopje Port Forwarding schrijf je dit:
De IP en TCP header van het IP-packet kan er als volgt uitzien :

IP header
Source-IP : 212.187.68.32
Destination-IP : 212.187.68.78

TCP header
Source-port : 1036
Destination-port : 80
Wat is hier nou de achterliggende gedachte van poort 1036, hoezo poort 1036 en hoe spreken de computers dit met elkaar af??

Ik hoop dat jullie mijn vragen kunnen beantwoorden,

met vr. gr.

Steven

Verwijderd

Sheijtel om je vraag te beantwoorden:

Ik zal beginnen met je 2e vraag, want dan komen we automatisch op de eerste uit.

een client maakt de verbinding met een server (stel de server is een webserver) op poort 80 van die server!
De client is degene die de eerste verbinding maakt. Dit gebeurt altijd op een hoge poort, dus boven poortnummer 1024. Natuurlijk pakt de client ook niet een poortnummer die hijzelf al in gebruikt heeft; dus als 1025 al in gebruik zou zijn pakt hij bijvoorbeeld 1026.
Nu is de verbinding gemaakt. Gevolg is dat de server (op poort 80) nu dus ook weet waarnaar toe hij het pakketje terug moet sturen (poort 1026), aangezien deze informatie in de packets opgeslagen zit!

Dit is dus het geval zonder een NAT-computer er tussen!
Zit er nu een NAT-box tussen, dan blijft de het client-verhaal precies hetzelfde. Alleen vervangt de NAT-box nu het source-ip door het ip van de NAT-box zelf en de client-poort vervangt ie door een poort uit z'n eigen gereserveerde poortrange. Hij maakt dus een mapping van client-poort naar NAT-poort en weer andersom. De server (die op poort 80) krijgt nu dus te maken met het IP van de NAT-box evanals het hoge IP van die NAT-box. De server zal dus ook antwoorden op die poort en stuurt dus de pakketjes terug naar de NAT-box.
De NAT-box weet op zijn beurt weer dat ie die gereserveerde poort weer terug moet mappen naar de client!

Ik hoop dat het een beetje duidelijk is zo:)
Pagina: 1