Privat & Publik IP, Port forwarding, Egen server med Domännamn

Privata IP -nummer

Vi har telefoner och datorer därhemma som vi kopplar upp till wifi eller med en fysisk sladd. Wifi kommer ifrån den lokala routern i hushållet. Routern i sin tur är uppkopplad till en ISP (internetleverantör), t.ex. Comhem eller Telia eller Bahnhof.

När du kopplar upp dig med sladd eller via wifi mot routern så tilldelas din enhet ett Privat IP som routern ser är ledigt. IP-serien börjar typiskt på 192.168 och dina enheter får IP-nummer 192.168.0.5 eller 192.168.0.3 eller något sånt. Har du en wifi-ansluten printer, så får även printern ett privat IP. Dina grannar, som också kör wifi, de får ungefär samma IP-nummer på sina prylar. Att det inte krockar beror på att routern hittar lediga frekvenser (band) för sin kommunikation så att det inte skall krocka med andra routers wifi i närheten. Tillbaka till privata IP-nummer. Skall man vara petnoga, så lånar (kallas "lease" i setup) routern ut dessa privata IP-nummer. Om du kopplar upp dig ofta så får du samma IP-nummer varje gång. Om du inte kopplat upp dig på ett tag så kanske du får ett nytt IP-nummer. Du kan ställa in hur länge du vill att en viss enhet skall behålla ett IP, i routerns inställningar (under "lease" -tid). Normalt behöver du inte bry dig ett smack om detta såtillvida du inte vill sätta upp en egen server därhemma. Om du vill sätta upp en server då vill du försäkra dig att ditt privata IP-nummer till server-burken blir kvar så att du slipper ändra i inställningar hela tiden. Du går då in i routern och antingen ändrar lease-tiden för server-IPt så att tiden blir jätte-lång eller (mer logiskt) så lägger du till IP-numret bland reserverade IP.

Publika IP -nummer

Ute i den stora världen så används publika IP-nummer. Alla servrar eller uppkopplingar till nätet har publika IP-nummer. Så t.ex. har förstås karlahosting.se ett IP-nummer. Närmare bestämt 185.189.48.109. Din internetuppkoppling har också ett IP-nummer. Alla gateways, kopplingspunkter, routers har egna IP-nummer tillsammans med servrar och annan utrustning.



När du kopplar upp dig mot internet där hemma så översätts ditt privata IP -nummer till ett publikt IP-nummer. Du kan titta här och se vad ditt publika IP-nummer är. Alla mobiltelefoner därhemma och alla uppkopplade enheter surfar alltså under detta publika IP-nummer som du har fått tilldelat dig. Utifrån ser det ut som ett IP-nummer - en dator - surfar jättemycket, kan man säga, men i verkligheten är det alla enheter tillsammans i hela bostaden.

Normalt, när du efterfrågar en webbsida på nätet, så kommer din fråga passera en väldig massa maskiner. Du kan t.ex. prova att öppna kommandotolken i windows och skriva tracert 185.189.48.109 så kan du se vilken resa en typiskt webbsida gör från dig till karlahosting.se.



Detta är alltså från min position där jag råkar sitta just nu, i göteborg. Om du gör samma trace (tracert i windows och traceroute i linux), så kommer du få en annan väg.

Vi kan prova tracert tiktok.com och då ser vi att resan ut i världen blir ganska lång. Det går numera med ganska hög fart oavsett var servrarna är placerade i världen.



Sammanfattning såhär långt: Alla servrar där ute har ett publikt IP. Men där hemma, eller på kontoret på företaget, så har vi privata IP-nummer som vi tilldelats av vår router. Routern översätter mellan privat och publika IP-nummer.

Sätta upp en egen server

Så, hur blir en server med ett privat IP-nummer på det interna nätverket, kanske en av flera datorer dessutom, tillgängligt från andra datorer ute på internet?

Konceptet heter Port Forwarding. När du hämtar en webbsida på en server med en webbläsare, så kommer din webbläsare dels att fråga efter en viss server (på ett visst IP-nummer) och på denna server kommer frågan skickas till en viss port. Webbservern ligger t.ex. på port 80 (http) eller 443 (https). Mailservern ligger på en annan port. FTP ligger på ytterligare en annan port. osv.

Vi vill att om det kommer en fråga till port 80 eller 443 på vår router's IP, så skall routern skicka vidare denna fråga till vår webbserver i vårt hemmanätverk. Vi gör denna inställning i routern. Säg att vår webbserver ligger på vårt privata IP-nummer på 192.168.0.30. Vi lägger in en port forwarding som kopplar port 80 till vår dator på privat IP-nummer 192.168.0.30.



Så, vi gör denna inställning i routern.



På detta sätt ser det utifrån ut som att vår routers IP-nummer - och detta IP-nummer är ju publikt för hela världen - är en webbserver med port 80 öppen.

Trevligt. Tyvärr är världen lite mer komplicerad ändå.

Dynamiska IP -nummer

Egentligen är det snarare dynamiskt tilldelade IP-nummer det handlar om. När vi kopplar upp oss mot routern så tilldelas vi ett ledigt privat IP-nummer. Om vi önskar få samma privata IP-nummer varje gång så kan vi reservera det privata IP-numret i routern. Det är bara att ändra i inställningarna i routern. Fint! Våra privata IP kan vi alltså styra över.

Ett större problem är att vår router i sin tur dynamiskt tilldelas ett IP från vår ISP. Det finns oftast inget sätt att fixera IP vi får tilldelat till routern. Om man har ett företagsabbonemang hos en ISP, då kan man oftast fixera det IP man får tilldelat till routern. Vi pratar då om statiskt IP-nummer, alltså ett statiskt publikt IP-nummer. Detta är ju förstås drömmen men ofta lite svår uppnå utan företag. Vi får leva med dynamiskt tilldelade IP.

Okej, vad är problemet?

Om man vill sätta upp en egen server därhemma, då blir detta något som måste hanteras. Om ditt nätverk mellan routern och din ISP plötsligt startas om (kan hända mitt i natten) och du blir tilldelad ett nytt IP-nummer, då kommer din server inte längre nås utifrån - eftersom IP förändrats!



Räddningen: Vem bryr sig om IP?

Även om alla maskiner på internet använder IP och du i teorin kan surfa omkring genom att memorera IP-nummer till dina favorit-sajter, så är det ju ingen som gör så.

Man använder förstås domännamn. Så vi kan ställa in vårt domännamn att peka på vår routers publika IP-nummer, som i sin tur skickar vidare (port forwarding) alla frågor på port 80 till den interna webbservern på det privata IP-numret.

Vi kan sedan fixa så att ifall vårt publika IP till routern skulle ändras - då uppdaterar vi det IP-nummer vårt domännamn pekar på. Hur gör vi detta? Vi kan låta webbservern där hemma med jämna mellanrum fråga en dator ute på internet - förslagsvis den dator som också kan uppdatera domänens DNS t.ex. karlahosting.se - vad IP-numret till vår router är. Om detta IP-nummer ändras, så uppdaterar vi bara snabbt och smidigt domänens pekare.




Genom att anropa ett litet skript på servern, som också uppdaterar domänens pekare ifall publika IP-numret till routern skulle ändras, så kan vi se till att domänen alltid pekar på vår router. Routern i sin tur vet vilken intern dator webbservern ligger på.

Frekvens

Så hur ofta måste ett skript kontrollera om IP-numret ändrats? I praktiken behåller man oftast ett dynamiskt tilldelat IP-nummer ganska länge. Okej, det beror förstås på vilken ISP du har. Dock är det ingen bra ide att anropa ett uppdaterings-skript 1 gång per minut eftersom det spammar sönder den stackars datorn på internet om många skulle göra så. En gång per timme är fullt tillräckligt. Tänk på att det kan passera kanske 1 år innan IP-numret ändras och om det ändras kanske det ändå ändras mitt i natten.

SSL för domän som pekar på hemmaserver?

Det är fullt möjligt. Finns inga begränsningar med en hemmaserver. SSL/TLS är en kod som läggs in på webbservern. Har du webbservern där hemma, så är det alltså från själva webbservern detta måste aktiveras. Hur du fixar SSL/TLS för domän till hemmaserver står här.