SSH tunnel til en maskine bag NAT

Dette indlæg er et uddrag fra mine linuxnoter, hvor der er en række andre mini-howtos og artikler. De er frit tilgængelige og kan hentes her.

Problemstillingen
Problemstillingen i denne artikel er at lave en forbindelse ind til en maskine som er bagved en router med NAT. Det nemmeste løsning er selvfølgeligt at lave en rute i routeren som leder fobindelser fra 22 på routeren ind til maskinen på indersiden af netværket. Hvis man er i den uheldige situation at man ikke har rettigheder til at lave sådan en rute i routeren er det utroligt praktisk at bruge ssh tunneler.

ssh-gennem-nat.png

Ideen med 2 ssh tunneler
En router med NAT vil kun tillade indgående trafik, hvis det oprinder fra en maskine på indersiden af netværket, som jeg kalder dirac. Derfor er ideen at lave en forbindelse (ssh tunnel) gennem denne router til en ekstern server, kaldet maxwell. På maskinen vi sidder ved ude på internettet, kaldet newton, der skal forbinde til dirac, laver vi nu endnu en tunnel ind til maxwell. Endeligt kan vi nu forbinde direkte til dirac ved at forbinde gennem tunnel til maxwell, som sender dataene videre til dirac.

De tekniske detaljer
Først skal jeg have lavet en forbindelse fra dirac gennem routeren ud til serveren maxwell. Det kan selvfølgeligt kun gøres når vi sidder bag ved routeren på indersiden af netværket.

tjansson@dirac:~$ ssh -R 2222:localhost:22 maxwell.foobar.org

Når vi nu gerne vil forbinde til dirac ude fra det store internet med vores maskine, newton, skal vi altså lave en forbindelse fra newton ind til maxwell på den port (2222), som vi ved at vil fører os videre over til dirac:

tjansson@newton:~$ ssh -L 3000:maxwell.foobar.org:2222 maxwell.foobar.org

Nu er begge tunnelerne til serveren oprettet og for at kunne forbinde til dirac fra newton skal vi bare forbinde til localhost port 3000. Dataene bliver dermed først sendt fra newton ind til serveren, maxwell, og derefter videre gennem ind i gennem routeren til dirac.

tjansson@newton:~$ ssh localhost -p 3000
tjansson@dirac password:
...
tjansson@dirac:~$

Det eneste krav til denne metode er at man har adgang til en server ude på internettet. For at få denne metode til at virke optimalt bør man bruge ssh nøgler, hvilket er beskrevet i mine noter.

This entry was posted in Articles, Computer. Bookmark the permalink.

9 Responses to SSH tunnel til en maskine bag NAT

  1. Ann Drabowicz says:

    Nøøøøøøøøøøj mand – altså det er noget med en skriveglad pingvin, der skal mødes med et par englændere, der er i hver sin stille viadukt om natten ( eller er shhhh tunneller en slags whispering gallery monstro?), men der er en airbag imellem dem, som er ved at blive angrebet af en skorsten, som bliver presset ned af franskmanden Jac Dirac. Heldigvis har airbagen fået et par ekstra syninger, så den holder til angrebet og de to englændere mødes endelig med pingvinen og får nøglen til det store locale, hvor de får serveret 3000 portere hver. Og så lever de routerende lykkeligt videre med sjove farver på indersiden af nethinden.

    Kan det mon passe, at jeg har set traileren til denne krimikomedie, og at det er Sean Penn og Mads Mikkelsen, der har hovedrollerne? Det er vist Rowan Atkinson, der er pingvinen!
    Det er nu ufatteligt, så godt jeg forstår disse noter efter en glad aften med god mad og rødvin og lige vil vise og se, om der er kommet nye billeder og historier fra det vilde liv i nord! Surprise, surprise….Jubiiiii – hvad ser jeg: Linuxnoter!!! Jeg bli’r da også bedre og bedre til det her computer- og internetforståelse!! Men det er nu hyggeligere / mere spændende med de flotte billeder og informationerne fra Svalbard, hvis det sku’ være !?!
    God weekend, knus og skååål fra Ann. ;o)

  2. Hehe og mig som hele tiden troede at det handlede om computere og kryptering. Men det er klart for mig nu at det handler om pingviner og viadukter – handler alt ikke om det nu om dage?

    Tak for beskeden – skal nok prøve også at skrive et mere spændende indlæg om livet på Svalbard, men jeg har en del arbejde på universitetet, som gør at jeg primært oplever artikler og bøger. 😀 Jeg har dog i onsdags set nordlys, et stjerneskud og 3 satteliter på nattehimlen, så helt kedeligt bliver det aldrig heroppe.

  3. Poul Wittig says:

    Tak for din velskrevet artikel. Tit kan SSH tunneling være utroligt forvirrende for folk der ikke kender til det, men denne forklaring er rigtig god!

  4. lePlaid says:

    Hej,
    Jag skriver på svenska, hoppas det går bra? Tack för alla bra guider du skrivit! Jag har en fråga (et spörgsmål), hur fungerar det om server, maxwell i ditt fall är en multianvändar server? Kan alla som har ett konto på maxwell komma åt tunneln som jag öppnar? Eller är den skyddad på någotvis så att den bara är öppen för mitt konto?

  5. Hej LePlaid. Serveren bruges af flere brugere, men en ssh tunnel kører virker på bruger basis, så en anden bruger kan ikke forbinde til din tunnel med mindre du dirkte gør det muligt med public keys. I tilfældet af at en port optaget vil du bare ikke kunne lave forbindelse som en anden bruger og må vælge nye portnumre.

  6. lePlaid says:

    Hej, tackar för ditt svar, jag har funderat en stund på detta utan att hitta något vettigt svar, anade väl att det var som säger, men var inte säker. Då kan jag tryggt börja använda skolans ssh-servrar till att skapa säkra förbindelser när man till exempel sitter på internetcaféer eller liknande. Jag delar nätverk med min hyresvärd och alla mina datorer ligger bakom hans router. Kanske blir det en guide om det på min blogg? Är de ok om jag hänvisar hit?

  7. Jeg formoder at hver bruger på din skole har et unikt login – i det tilfælde er det helt sikkert. Alt trafikken igennem routeren vil også været krypteret, så du kan være helt rolig, så længe du har tjek på at ingen har adgang til dine nøgler eller password. Du må meget gerne henvise hertil. 🙂

  8. Asger Holten says:

    Tak for en god artikel.

    Jeg går ud fra at grunden til at du bruger Maxwell som bridge er, at det er en server, der er tændt 24/7, hvorimod newton er en laptop/workstation, der kun er tændt i perioder. Hvis newton altid er tændt og på nettet – så kan du åbne porten 2222 til den – og på den måde ville du jo i teorien blot kunne lave en direkte tunnel fra dirac til newton.
    Selvfølgelig regner jeg med at du udmærket er klar over det, men i tilfælde af at du ikke er, så får du den lige 🙂

    Din konstruktion er rigtig god – og i særdeleshed, hvis du skal oprette en forbindelse til direc fra en newton-windowsklient – for så har du jo muligheden for bare at Local-forwarde med putty 🙂 – det er et bøvl at finde/sætte en god ssh-server op på windows.

    Endnu engang tak for en god artikel!

    /Amigasger

  9. Asger Holten: Ja, Maxwell er en server der altid er tændt. Du skriver:

    “Hvis newton altid er tændt og på nettet – så kan du åbne porten 2222 til den – og på den måde ville du jo i teorien blot kunne lave en direkte tunnel fra dirac til newton.”

    Det er selvfølgeligt rigtigt, men det kræver at man har adgang at redigere i routeren. I tilfældet af man f.eks. bor i andelsforening med en fælles router, så får man næppe lov til at åbne porte og sende data videre til sig egen maskine. I sådan et tilfælde er den eneste løsning at lave en forbindelse ud til en ekstern server og forbinde videre i gennem den som jeg har vist her.

    Jeg er glad for at hører at du kunne lide artiklen! 🙂

    Mvh
    Thomas

Leave a Reply