Man skall använda lösning tre i förr-förra inlägget.
Domännamn
Skaffa ett riktigt domännamn på någon ISP. Det finns några gratis för dynamisk DNS(Domain Name Service). Själv använder jag mig av
https://web.gratisdns.dk/ vilket fungerar utmärkt även för dynamiska DNS. Det hanterar dynamiskt tilldelade IP-adresserm som det flesta av dagens ISP:er (Internet Service Provider) använder. Hos dem registrerar man sin domän, exempelvis
my.test, brukar kosta runt 100 sek.
Sedan så registrerar man ett namn till sin server, exempelvis
nexahome.my.test . Detta skall kunna uppdateras dynamiskt. Hur det går till beror på DNS-tjänst, router och inblandade OS. Jag går inte in på det här, det är inte viktigt för den här diskussionen. Ni får alltså ta reda på det själva.
Namnuppslagning på LAN
Sedan så går man in i sin router och talar om att den skall använda domänen
my.test, så att den vet att alla namn som den får för maskiner i det lokala nätet hör till den domänen.
Sedan så ger man sin server ett "fast" IP-nummer i routern med namnet
nexahome.
Alla routrar har nämligt en cachande DNS i sig, så den kollar först om den vet svaret på en DNS-fråga. Vet den det, så svarar den med det, annars frågar den ISP:ens DNS efter namlösning. Och nu vet routerns DNS att
nexahome och även
nexahome.my.test är den ovan angivna lokala IP-nummret. Prova, om det inte fungerar, så starta om routern.
Är man nu på sitt NAT så skall nu man kunna ansluta sig till
nexahome.my.test från alla maskiner där.
Namnet utifrån Internet
Först så måste man tala om för routerns NAT (Net Adress Translation, ett härke som aldrig skulle fått finnas) att alla försök utifrån att ansluta till den skall skickas vidare till
nexahome på samma port som den ingående anropet. Den inställningen brukar kallas DMZ (DeMilitized Zone).
Eller så talar man om att anslutning på en viss port, exempelvis 8080, på routerns externa adress skall skickas vidare till
nexahome, exempelvis port 8080. Dvs när routern ansluts utifrån på port 8080, så skickar den vidare till
nexahomes port 8080.
Se till att du installerar och ställer in en brandvägg som bara öppnar anslutningar utifrån via porten ovan, 8080 (alt-http) samt även porten 22 (ssh). Om du använder andra tjänster på maskinen så kan du öppna dessa portar mot det lokala nätet, men kanske inte från routern. Sådanna tjänster kan vara VPN, SMB eller vad du nu använder. Rekommenderar "ufw" eller den grafiska "gufw", eftersom den är relativt enkel att konfigurera. Om du inte är VÄLDIGT duktig, så undvik iptables. Det är för krångligt för de flesta. Sedan kan du använde program som "nmap" eller liknande för att kontrollera vilka portar som är öppna från ditt LAN och utifrån via routern. Det finns andra program och websiter som kan göra liknande kontroller.
Så, med detta så skall man kunna ansluta på routerns externa IP:nummer port 8080 för att komma fram till
nexahome. Dvs
http://routerns-ipadress:8080/nexahome skall fungerar från Internet.
Uppdatera IP-adressen på DNS-tjänsten
Så vad som återstår är att få den externa DNS-tjänsten att koppla routerns IP-nummer till namnet
nexahome.my.test, det görs på lite olika sätt. Antingen kan man ställa in routern att göra det, om den har sådanna inställningar. Eller så kan man låta
nexahome eller någon annan maskin på ditt LAN anropa DNS-tjänsten som man använder och be den sätta IP-adressen på
nexahome.my.test till det IP-ipadress som man anropar den från. Då kommer DNS-tjänsten att se den globala IP-adressen på routern, och inte
nexahomes egna privata ip-adress. Så då kommer alla externa som ansluter sig till
http://nexahome.my.test:8080/nexahome att anslutas till din
nexahome på ditt lokala nät.
Sammanfattning, tre steg
- Fixa så att routern i ditt lokala nät hör till my.test och att du kan använda namnet nexahome.my.test ellerbara nexahome för att ansluta till servern.
- Fixa så att om man ansluter till en speciall port på routerns externa adress, så kommer den att vidarebefodra till nexahome på samma (eller annan) port. Man kan även ställa in så att ALLT som går in på routerns externa adress går till nexahome, det brukar kallas DMZ (DeMilitary Zone). Kom ihåg brandväggen!
- Fixa så att en extern DNS-server för my.test har ett namn som är nexahome.my.test och som kopplar till din routers externa IP-adress. Antingen att du skriver in den själv eller om den uppdateras dynamiskt från din router eller från exempelvis nexahome-servern.
nexahome är bara ip-adress till maskinen i det lokala nätet (normalt börjar det på 192.16)
nexahome.my.test ger i LAN:et samma ipnummer som
nexahome, men utanför ditt LAN ger det routerns externa IP-adress.
Summering
Du kan naturligtvis även har en apache eller annan webbserver köra på port 80 och heta
www.my.test. Bara att ge maskinen
nexahome två namn i routern och sätta upp DNS-tjänsten så att
www.my.test är ett alias på
nexahome.my.test. Allra bäst är att låta
nexahome.my.test och
http://www.my.test vara alias till maskinens riktiga namn. De är det bara att ändra aliaset (sk CNAME i DNS) i DNS:en när man flyttar någon av dem till en annan maskin.
IPv6-rant och frustration
Varför är alla ISP:er i sverige så slöa!
Allt detta hade inte behövts om man hade använt IPv6. Då skulle det bara vara att ställa in servern, ställa in serverns brandvägg samt öppna brandväggen för servern i din router. Du skulle då kunna använda IPv6-nummret varhelst ifrån, LAN eller Internet, samt man skulle inte behöva krångla med dynamisk DNS.
Fråga er ISP när ni får ett /48 eller /56 IPv6-nät. Nöj er inte med ett /64
(ett /64 innehåller lika många IP-adresser som om alla adresser i dagens Internet (IPv4) skulle ha lika många adresser som hela internet. Dvs IPv4 är totalt 32-bitar, IPv6 minsta LAN är på 64-bitar. Med /48 så kan ni själv ha 2^16 (65512) LAN-nät och med /56 så får ni 2^8 (256) LAN-nät. Som alla är 2^64 (vilket är
mycket stort).