Buongiorno,
Avete idea di come:
"Configurare Server per essere reperibile da remoto."?![]()
Buongiorno,
Avete idea di come:
"Configurare Server per essere reperibile da remoto."?![]()
Ultima modifica di jabjoint; 17-01-2023 a 14:54
jabjoint
Rendere accessibile un server da remoto ("remoto" poi intendi cosa? da Internet? immagino ...) in realtà NON c'entra nulla con Java e la programmazione in generale. Sono solo questioni di "amministrazione" di tutta la infrastruttura di rete che si ha a disposizione, ovvero: firewall hardware e/o software, switch, router, ecc...
Si tratta solo di garantire che la porta sia "aperta" lungo tutta la via che va dal server fino al dispositivo che si connette ad internet (o cosa intendi tu per "remoto").
A livello di Spring Boot l'unica cosa a cui prestare attenzione è su quale indirizzo IP il server fa il bind. Se non sbaglio, Spring Boot fa per default il bind su 0.0.0.0 che vuol dire "tutte le interfacce". Quindi se hai una interfaccia di rete cablata e una wifi, il server è accessibile da entrambe.
Se invece configuri es.:
server.address = 127.0.0.1
allora fa il bind SOLO sul localhost, quindi non è raggiungibile dall'esterno della maccchina (nemmeno se un firewall sw aprisse la porta). C'è poi la questione IPv4 vs IPv6 ma non sempre è rilevante.
Per il resto non si può dire nulla .... perché nessuno può sapere quale infrastruttura di rete utilizzi o utilizzerai ....![]()
Ultima modifica di andbin; 17-01-2023 a 15:28
A seconda di come ci si connette insomma all'infrastruttura? Router-SmartPhone e collegamento /WiFi/USB/Ethernet
Non devo configurare Tomcat?
Pensavo di usare l'indirizzo:
server.address = indirizzo-IP-pubblico-router
server.port = numero-porta
Ma se mi connettessi con un collegamento tethering -usb senza un vero router quindi, come farei ad abilitare le porte dell'indirizzo?
jabjoint
Se Spring Boot parte con il server embedded, no. Nel senso che per il server embedded valgono già le property server.****
No, non puoi mettere l'IP "pubblico" su internet (insomma, quello che il provider internet ti assegna). Il server.address deve essere l'indirizzo della interfaccia di rete (la scheda di rete fisica, cablata o wifi che sia) sulla TUA macchina dove c'è il server. Perché è su quella interfaccia che il server fa il bind (o il localhost o 0.0.0.0 = tutte).
Spiega meglio tutta la infrastruttura. Hai un PC desktop su cui gira il server?
Si ma anche inserendo l'IP (192.*.*.*) della scheda di rete locale, funziona, certamente, ma solo da localhost...al pari di inserire localhost o 127.0.0.1.
Quindi in qualche modo l'indirizzo pubblico va reso accessibile...non so come...
Ho un server su cui gira perfettamente Tomcat di STS in locale.
(Vi è installato Ubuntu desktop.)
Ma questo è al momento connesso tramite USB dello smartphone.
Ultima modifica di jabjoint; 17-01-2023 a 17:04
jabjoint
Esiste anche un'altra questione: c'è un firewall software sulla macchina? Questo è la prima cosa da verificare. Fare il bind su una interfaccia di rete specifica è ok ... ma se poi il firewall sw blocca (giustamente) la porta dall'esterno ... capisci che siamo allo stesso punto ..
Non devi "sapere" l'indirizzo pubblico su internet!
Allora:
1) il server deve fare il bind su una interfaccia di rete specifica (o tutte) della TUA macchina su cui gira il server.
2) il firewall sw deve permettere l'accesso alla porta dall'esterno.
3) se la porta è accessibile dall'esterno, allora lo è dalla rete "locale" (la LAN).
4) se il router è direttamente attaccato alla LAN, allora basta configurare nel router la regola per cui tutto quello che arriva sulla porta es. 80 della WAN (la rete "ampia" es. internet) venga "girato" sulla porta es. 8080 della macchina locale 192.168.x.y. In questo caso è bene che la TUA macchina abbia un IP statico, perché se è dato dal DHCP del router, ovviamente è un problema. Ci sono router che pur usando il DHCP permettono la prenotazione del IP in base al MAC (es. a quel MAC dai sempre l'IP x).
P.S. la applicazione Spring Boot NON deve generalmente sapere l'indirizzo "pubblico" su internet. A meno che ci siano scenari particolari per cui deve fare es. un redirect "assoluto" ad una pagina web della applicazione stessa. E' ovvio che NON può fare un redirect su 192.168.x.y perché su internet nessuno lo conosce e ci arriverebbe. Ma in tal caso è meglio valutare: a) di prendere un provider che dia un IP statico; b) usare il DDNS (se previsto dal router); c) prendere un nome di dominio in modo da avere un nome stabile.
Grazie @andbin, collegandomi tramite smart-phone non riesco a vedere le impostazioni di controllo(visibili altrimenti con router), e forse non è possibile?
E' tassativo il router?
jabjoint
Allora: per collegarti ad internet hai sicuramente un qualche dispositivo ("router"), che sia acquistato da te o fornito in "comodato" dal provider non cambia/importa. In questi router, di norma tutte le connessioni verso l'esterno (verso internet) sono sempre permesse, mentre qualunque connessione dall'esterno (internet) verso l'interno è sempre normalmente rifiutata. Per ovvi motivi di sicurezza.
Se vuoi "esporre" qualcosa, un qualche servizio, su internet, quindi devi per forza configurare come minimo quel router.