SSH port forwarding: Tomcat nefunguje z internetu

Honza

SSH port forwarding: Tomcat nefunguje z internetu
« kdy: 19. 08. 2010, 08:27:41 »
Ahoj,

cíl: přistoupit k tomcatu přes veřejnou ip na portu 80

situace:
Mám domácím PC s pevnou lokální IP, na niž my ISP směruje provoz z veřejné IP (nejspíš je lokální IP nastavená v DMZ na routeru od ISP). Přes nmap-online.com je vidět otevřené porty spuštěných služeb na tomto PC, např. SSH na 22. Běží zde Linux Mint 9 (= ubuntu 10.04) a na něm tomcat6 na portu 8080. Tento port ale přes nmap-online.com vidět není.

Na localhostu se na tomcat dostanu (http://localhost:8080) - vše funguje, jak má.
Po spuštění příkazu:
Kód: [Vybrat]
sudo ssh -R 80:localhost:8080 honza@honza-desktopfunguje tomcat i na portu 80 (http://localhost) - opět vše OK.

problém: Nedostanu se tam z venku (testuju z mobilu a z práce) ani přes http://verejnaip:8080 ani pres http://verejnaip. Z venku se oba oprty tváří jako přístupné, ale bez běžící služby. Když jsem měl spuštěný apache na portu 80, z venku jsem se na něj dostal bez problémů.

zkoušel jsem:
nastavit tomcat, aby běžel na portu 80, ale pak nebyl přístupný ani na localhostu

Neumím, a žádám Vás o radu jak:
nastavit port forwarding
nebo
nakofigurovat tomcat
nebo obojí...

Díky, Honza
« Poslední změna: 23. 08. 2010, 23:56:13 od Petr Krčmář »


Honza

Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #1 kdy: 19. 08. 2010, 08:32:25 »
PS: z práce máme asi docela hustej firewall, takže odtud se ven dostanu jen na portu 80 a jen, když po něm teče http

jmeno

Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #2 kdy: 19. 08. 2010, 09:07:28 »
nechte  tomcat na portu 8080 a pres modul proxy ajp do apache si to hodte na standardni 80

<Location /examples/>
   ProxyPass ajp://localhost:8009/examples/ smax=0 ttl=60 retry=5
</Location>


alfi

Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #3 kdy: 19. 08. 2010, 09:59:06 »
Kód: [Vybrat]
sudo ssh -R 80:localhost:8080 honza@honza-desktop

ssh defaultně poslouchá jen na localhost rozhraní :-)

-R [bind_address:]port:host:hostport
...
By default, the listening socket on the server will be bound to the loopback interface only.  This may be overridden by specifying a bind_address.  An empty bind_address, or the address ‘*’, indicates that the remote socket should listen on all interfaces.  Specifying a remote bind_address will only succeed if the server’s GatewayPorts option is enabled (see sshd_config(5)).

asi bych použil spíš opačnou variantu tunelu
-L [bind_address:]port:host:hostport
kde se dá vynutit poslouchání na všech rozhraních o něco lépe
-g      Allows remote hosts to connect to local forwarded ports.

Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #4 kdy: 19. 08. 2010, 11:42:22 »
Při ladění takových problémů je dobré dát:
Kód: [Vybrat]
netstat -tlpna hned vidíš, která aplikace na kterém portu naslouchá a hlavně jestli na všech rozhraních, nebo jen na localhostu. BTW: javovské servery se většinou na 80 nepouštějí, ale dává se před ně reverzní proxy (HTTP nebo AJP).


PCnity

  • *****
  • 706
    • Zobrazit profil
    • E-mail
Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #5 kdy: 20. 08. 2010, 01:07:11 »
Skus v praci toto:

sudo ssh -L 80:127.0.0.1:8080 honza@tvoja_verejna_ip_doma
potom v browseri http://127.0.0.1/

Nechapem preco si to otvaral opacnou stranou...

Kebyze vsak mam takyto problem ja, riesil by som to asi tak ze by som installoval apache pocuvajuci na *:80 a *:443 ktory sa odvolava na tomcat pri .jsp.

Alebo aspon tomcat nastavit aby bol [okliestene] pristupny na HOST:80 [nie local a nie 127.0.0.1]

Kazdopadne SSH tunnel je bezpecny a -Lkovy by mal bezproblemov fungovat.

PCnity

  • *****
  • 706
    • Zobrazit profil
    • E-mail
Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #6 kdy: 20. 08. 2010, 01:11:37 »
Aha... Pokial z prace nemas pristupne SSH a chces teda aby sa aj ostatni dostali na tvoj tomcat [a chces sa lavou rukou skrabat v pravo!]:

U teba doma na localhoste:

sudo ssh -R -N -f TVOJA_IP_ADRESA:80:localhost:8080 honza@localhost

[TVOJA_IP_ADRESA = nie ta verejna, ale ta ktoru mas od ISP... Cize napriklad 10.0.1.123]

Tymto otvoris reverzne tunnel ktory bude pocuvat na tvoja_ip:80 a preposielat na localhost:8080 s tym ze ho otvoris na localhoste logicky.

Verejna IP [ISP] -> Tvoja IP -> SSH:80 -> Localhost:8080 :)

Honza

Re: SSH port forwarding: tomcat nefunguje z internetu (jen na localhostu)
« Odpověď #7 kdy: 23. 08. 2010, 06:52:59 »
VYŘEŠENO:

Nakonec jsem použil mod_proxy v apache. Dle toho, co jsem k tomu našel, se to tak celkem běžně řeší.

Děkuji za Vaše reakce. Tolik možností jsem nečekal.