SSH tunneling bez veřejné IPv4

Diskuze o linuxu, rady, návody, zajímavosti.
sedlaczech
Příspěvky: 26
Registrován: sob 09. úno 2013 12:49:13
Bydliště: Zruč nad Sázavou
Kontaktovat uživatele:

SSH tunneling bez veřejné IPv4

Příspěvek od sedlaczech »

Dobrý den,
mám několik zařízení (routery s linuxovým FW) za ruznými NATy a chtěl bych využít VPS ke vzdálenému přístupu k různým službám na těchto zařízeních.
Lze nějak vytvořit ssh tunel bez veřejné IPv4 nebo VPN?
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od xsouku04 »

Tunel umí dělat samotné ssh a přes autossh klíče můžete pak udělat i samotné automatizované přihlašování - tedy vytváření tunelu.
http://forum.odorik.cz/viewtopic.php?f=12&t=421
sedlaczech
Příspěvky: 26
Registrován: sob 09. úno 2013 12:49:13
Bydliště: Zruč nad Sázavou
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od sedlaczech »

Ano, návody jak udělat ssh tunel jsem si našel, jde mi ale o to, jestli to bude fungovat, když VPS nemá veřejnou IPv4.
Připojuju se k VPS takto:

Kód: Vybrat vše

ssh -R 12345:localhost:80 n2.4smart.cz -p 4321
port 4321 je port 22 na VPS
potom nastavím port 12345 na 4322, ale když zadám do prohlížeče n2.4smart.cz:4322, dostanu akorát "Chyba spojení".

Co je ještě třeba udělat, aby tunel funguval?
4smart.cz
Administrátor
Příspěvky: 1373
Registrován: úte 12. říj 2010 9:16:11
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od 4smart.cz »

Dobrý den,

obávám se, že pokud chcete, aby Vaše řešení bylo maximálně spolehlivé, tak se alespoň bez jedné veřejné IPv4 adresy neobejdete.
Mechanizmus mapování portů na 4smart.cz bude ještě muset být přepracován (je v plánu), protože pokud nyní přemigrujeme provoz některého z ostrých HW strojů na záložní, změní se logicky i IP adresa.
V takovém případě by jste musel provést manuální úpravy v konfiguracích openVPN klientů.

Pokud Vám jde nyní pouze o zjištění toho, zda by pro OpenVPN stačila neveřejná IP adresa, tak není lepší cesty než to vyzkoušet. Pravděpodobně to fungovat bude (s výše zmíněným omezením).
Pakliže budete chtít všechen provoz směrovat přes VPN, budete muset upravit také routování na příslušných klientech.

J.M.
sedlaczech
Příspěvky: 26
Registrován: sob 09. úno 2013 12:49:13
Bydliště: Zruč nad Sázavou
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od sedlaczech »

OpenVPN mám vyzkoušené, funguje i bez veřejné adresy. Sice nebude fungovat, pokud se přejde na záložní uzel, ale to mi zas až tak nevadí.
Nicméně OpenVPN v tomto případě použít nemůžu z HW důvodů. Na těch routerech je buď ReadOnly FS nebo nedostatek místa pro OpenVPN.
Proto mě zajímalo, jestli by šlo použít bez veřejné adresy SSH tunely, spojení sice dokážu navázat, ale nevím, jak namapovat porty u VPS, případně ještě něco nastavit a jestli to vůbec bude fungovat.
4smart.cz
Administrátor
Příspěvky: 1373
Registrován: úte 12. říj 2010 9:16:11
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od 4smart.cz »

Mapování portů se na 4smart.cz provádí s pomocí www admin. rozhraní.
SSH tunel by i s neveřejnou IPv4 mělo jít nastavit. Minimálně bude třeba forwardovat port 22.
Mohlo by to fungovat i pro více spojení současně.

Vyzkoušejte a uvidíte...

J.M.
sedlaczech
Příspěvky: 26
Registrován: sob 09. úno 2013 12:49:13
Bydliště: Zruč nad Sázavou
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od sedlaczech »

Vím, jak se mapují porty v rozhraní, už jsem uváděl i příklad (i když s jinými čísly).
Tak to zkusím vysvětlit ještě jinak:
1) Namapuju port 22 u VPS -> n2.4samrt.cz:4321
2) Namapuju port 12345 u VPS -> n2.4smart.cz:4322
3) Na svém zařízení zadám příkaz:

Kód: Vybrat vše

ssh -N -R 12345:localhost:80 n2.4smart.cz -p 4321
nyní je navázano spojení
4) Zadám do prohlížeče http://n2.4smart.cz:4322
-> Firefox nemůže navázat spojení se serverem n2.4smart.cz:4322.

Dělám někde chybu, nebo to prostě bez veřejné IPv4 fungovat nebude?
4smart.cz
Administrátor
Příspěvky: 1373
Registrován: úte 12. říj 2010 9:16:11
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od 4smart.cz »

Předpokládám, že man ssh jste viděl...

http://127.0.0.1:80

není to co chcete ?

Vaše zadání http://n2.4smart.cz:4322 je nesmysl.
Prohlížeč si přes resolver přeloží n2.4smart.cz a získá 77.93.202.253 a pak se snaží spojit s http serverem na portu 4322.
Žádným způsobem nepoužije jakékoliv zabezpečené připojení.

Mimochodem, co na tom portu n2.4smart.cz:4322 má běžet (předpokládám dobře webový server) ?
Port 4322 mapujete zbytečně. Předchozí příkaz pro forwardování ho zpříszupní na portu 80 localhosta, přitom použije 12345.
sedlaczech
Příspěvky: 26
Registrován: sob 09. úno 2013 12:49:13
Bydliště: Zruč nad Sázavou
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od sedlaczech »

Vycházím z http://www.cryptofest.cz/2003/slajdy/sshtunel/ssh.html
Stejně tak můžeme použít i opačné mapování (tj zpřístupnění lokálního portu na zvolený port vzdáleného stroje):
-R remoteport:localmachine:localport


Tunel má vzniknout jen mezi mým zařízením (routerem) a VPS, já se pak chci pomocí VPS dostat k zařízení (routeru) za NATem.
Na mých routerech za různými NATy běží HTTP a SSH servery a k nim se chci dostat.

Snad jsem nepochopil špatně princip reverzního ssh tunelu?
4smart.cz
Administrátor
Příspěvky: 1373
Registrován: úte 12. říj 2010 9:16:11
Kontaktovat uživatele:

Re: SSH tunneling bez veřejné IPv4

Příspěvek od 4smart.cz »

Manuálové stránky ssh říkají:
-R port:počítač:vzdálport
Určuje, že zadaný port na vzdáleném počítači (tj. serveru) má být forwardován na lokální počítač a odtud na další zadaný počítač a port. Alokuje soket, který bude naslouchat na zadaném portu na vzdálené straně, a kdy-
koli je navázáno spojení na tento port, spojení bude forwardováno přes bezpečný kanál na lokální stroj, a z něj bude navázáno spojení na zadaný počítač:vzdálport. Forwardování portů může být zadáno v konfiguračním
souboru. Privilegované porty mohou být forwardovány pouze při přihlášení jako root na vzdáleném stroji.
Kde spustit následující příkaz a co vlastně tento příkaz dělá - to jsou otázky, kterými bych začal a na které bych se snažil v první řadě najít odpověď:

Kód: Vybrat vše

ssh -N root@VerejnaIPAdresaHWUzluKdeJeMujVPS -R 81:127.0.0.1:80 -p 4321
* Tento příkaz je třeba spustít na klientech s webovým rozhraním (Vaše firewally, routery a jiné síťové prvky), které chcete zpřístupnit na dálku
* Tento příkaz se připojí na port 4321 na IP adrese HW uzlu 4smart.cz, kde se nachází Váš VPS.
* Port 4321 je namapovaným portem, odpovídající portu 22 Vašeho VPS s neveřejnou IP adresou
* Následně, pokud si ve VPS otevřu webový prohlížeč (a podmínkou je, aby to bylo ve VPS, protože socket se vytváří na localhostu) a zadám do něj URL: http://127.0.0.1:81, objeví se Vám stránka Vašeho firewallu/routeru, apod.

Takže tento příkaz je jen jednou stranou mince. Předpokládám, že prohlížeč ve VPS asi používat nebudete a místo toho si budete chtít na svém Pc otevřít tunel přes VPS ke vzdáleným síťovým prvkům.
Druhá strana mince je příkaz:

Kód: Vybrat vše

ssh -N root@VerejnaIPAdresaHWUzluKdeJeMujVPS -L 81:127.0.0.1:80 -p 4321
* Tento příkaz je určený ke spuštění na PC (desktop/notebook/...), který použijete pro vzdálenou administraci svých zařízení.
* Připojí se na port 4321 veřejné IPv4 adresy HW uzlu, kde se Váš VPS nachází.
* Vytvoří socket k portu 81 na localhostu (VPS) k localhostu (Váš PC) na portu 80
* Pokud si nyní otevřu prohlížeč na svém PC a zadám http://localhost:80, uvidím administrační webové rozhraní vzdáleného síťového prvku.

A pro sichr - jediné, co je třeba s VPS na 4smart.cz udělat je, aby v něm existoval běžící SSH server a jeho port 22 byl namapován na veřejnou IP adresu HW uzlu.
Žádné jiné porty nemapovat (není to potřeba) ! A z výše uvedeného popisu by mělo také být jasné, že ve VPS žádný příkaz z dvou výše uvedených nezadáváme.

Doufám, že tento popis v mé interpretaci je pochopitelný.
Myslím, že to ani líp vysvětlit nejde.
Pokud máte problém s pochopením této věci, tak doporučuji věnovat další čas studiu, testování a experimentům.
Je to trochu hlavolam :-)
Zamčeno