Name: Frodo Looijaard (yen.nl.uu.net) Date: 05-25-99 13:22 Joey schreef: ------------------------------- Nogmaals over die pakketjes.... je zegt wel dat het door de proxy wordt afgehandeld, MAAR hoe weet die proxy naar welke PC op het LAN het pakketje toe moet?! Dat staat toch in zo'n sub-adres veld? LAN-IP o.i.d.?? ------------------------------- Nee, het staat echt nergens in die pakketjes. Om te begrijpen wat er gebeurt, moet je eerst iets meer weten over TCP/IP (UDP/IP werkt bijna net zo, trouwens. Maar maak je over het verschil nu even niet druk). Let op, dit wordt een klein beetje ingewikkeld. TCP/IP kent zogenaamde poorten. Daar zijn er 65536 van. Sommige van die poorten zijn gekoppeld aan een bepaalde internet dienst. Zo is poort 80 voor HTTP (www), poort 25 voor SMTP (mail), etc. Om te communiceren moet eerst een verbinding worden opgezet. Stel je voor dat jij een web-pagina wilt ophalen, en vergeet even je proxy instellingen in je browser. Wat er gebeurt is dat jij contact gaat maken met een bepaalde computer (zeg online.tebenet.nl), en wel met de poort die voor de HTTP dienst zorgt: poort 80. Omdat je contact maakt met poort 80, weet online.tebenet.nl ook dat je van HTTP gebruik wilt maken. Maar een verbinding is altijd tussen twee computers. De verbinding aan jouw kant (de 'uitgaande' verbinding) is ook geassocieerd met een poortnummer. Dat nummer wordt random gekozen uit alle verder niet gebruikte poorten. Zeg dat poort 4567 wordt gekozen, en jouw computer heet joey.tebenet.nl. De situatie is nu dus als volgt: joey.tebenet.nl/4567 <--> online.tebenet.nl/80 Elke verbinding wordt op deze manier uniek geidentificeerd, door de combinatie van twee computers (eigenlijk IP adressen) en de poort adressen. Het is mogelijk om meerdere verbindingen met de HTTP poort van online.tebenet.nl op te zetten vanaf joey. Maar elke verbinding moet dan een verschillend uitgaand poortnummer hebben, om hem uniek te maken. Gelukkig zorgt je netwerksoftware daar voor. Dus tegelijkertijd zouden deze verbindingen kunnen bestaan: joey.tebenet.nl/5678 <--> online.tebenet.nl/80 en joey.tebenet.nl/4680 <--> online.tebenet.nl/80 Goed. Nu terug naar de zogenaamde masquerading gateway - ook wel 'proxy' genoemd, al is die naam eigenlijk minder correct. Als je meerdere computers op een LAN hebt, maar slechts een IP adres, heb je een probleem. Computers worden immers herkend aan hun IP adres, en zo'n verbinding als boven kan alleen maar gemaakt worden tussen twee computers die internationaal geregistreerde IP nummers hebben. De gateway is de computer die het echte IP adres heeft. Alle andere computers moeten ook een IP adres hebben (er van uitgaande dat je op je interne netwerk ook TCP/IP draait). Gelukkig zijn er hier speciaal gereserveerde adressen voor, die je kan gebruiken, zolang je maar garandeert dat ze niet gezien worden buiten je interne netwerk. Laten we de volgende situatie nemen: intern.netwerk.computer is een interne computer zonder echt IP adres. Het IP adres dat gebruikt wordt voor deze computer is betekenisloos buiten het interne netwerk. joey.tebenet.nl zit hieraan verbonden via het interne netwerk, zit vast aan de kabelmodem en heeft dus (ook) het echte IP adres Stel je voor dat intern.netwerk.computer een verbinding wil maken met online.tebenet.nl om een webpagina op te halen. Normaal zou dat zijn: interne.netwerk.computer/9876 <--> online.tebenet.nl/80 Maar dat kan niet, want interne.netwerk.computer is niet zichtbaar voor online.tebenet.nl. Maar: alle communicatie moet ook langs joey.tebenet.nl gaan, omdat ze door de kabelmodem moet. En joey onderschept ze, zodat je de volgende situatie krijgt: interne.netwerk.computer/9876 joey.tebenet.nl joey.tebenet.nl/12345 <--> online.tebenet.nl/80 Let op: er is geen echte TCP/IP verbinding geopend tussen interne.netwerk.computer en joey.tebenet.nl; de laatste heeft alleen het verkeer onderschept en in plaats daarvan zelf een verbinding geopend. Goed. Wat gebeurt er dus? interne.netwerk.computer stuurt informatie (zoals de www pagina die hij wil hebben) naar online.tebenet.nl. joey.tebenet.nl onderschept die informatie, en opent zelf een verbinding met online.tebenet.nl, en stuurt diezelfde informatievraag. online.tebenet.nl stuurt informatie terug over diezelfde verbinding. joey.tebenet.nl heeft intussen een tabel aangemaakt, waarin staat dat als er over de verbinding met uitgaande poort 12345 informatie binnenkomt, deze doorgestuurd moet worden naar interne.netwerk.computer, en wel naar die verbinding die bij poort 9876 op interne.netwerk.computer hoort. En joey.tebenet.nl doet dat dusdanig, dat het voor de interne.netwerk.computer net lijkt alsof joey.tebenet.nl er helemaal niet tussen heeft gezeten. Vervolgens kan interne.netwerk.computer weer informatie heen zenden over de verbinding, die wordt weer onderschept, etc. Wat is nu de grap van dit verhaal? Voor de buitenwereld is interne.netwerk.computer volledig onzichtbaar. Als deze computer naar buiten wil communiceren, maakt joey.tebenet.nl de verbinding. Aan die verbinding is helemaal niets anders dan aan een 'gewone' verbinding vanaf joey.tebenet.nl. Alleen zorgt joey.tebenet.nl dat alle informatie goed doorgesluisd wordt naar het interne netwerk. Waarom is dat grapje van die poortadressen zo belangrijk? Omdat die de verbindingen identificeren. Omdat er met poortadressen gewerkt wordt, kan de gateway onderscheid maken tussen de verschillende verbindingen die opgezet worden, en informatie goed doorspelen. Overigens, er is dus een groot probleem als een computer van buiten af die verbinding wil initieren. Want hoe maakt hij duidelijk dat hij met interne.netwerk.computer wil praten? Dat is dus onmogelijk. En dat is de reden waarom zo'n opzet ook het gevaar voor hackers doet afnemen: er is nog maar een computer kwetsbaar, namelijk de gateway. Tenslotte: FTP is een voorbeeld van een naar protocol, waarbij twee verbindingen worden geopend, een door de client en een door de server. Hoe dat opgelost wordt is, is wat ingewikkelder.