![¿Cómo acceder a Jetty Server desde fuera de la LAN?](https://rvso.com/image/770109/%C2%BFC%C3%B3mo%20acceder%20a%20Jetty%20Server%20desde%20fuera%20de%20la%20LAN%3F.png)
Originalmente publiqué esta pregunta en stackoveflow pero me informaron que sería más adecuada para este sitio.
Estoy intentando acceder a un servidor Jetty implementado en una máquina desde otra máquina fuera de la LAN, pero no funciona. he leídoeste hiloy seguí los consejos ofrecidos por@Joakim ErdfeltSin embargo, no funcionó. Mi código está a continuación:
Server server = new Server();
// HTTP connector
ServerConnector serverConnector = new ServerConnector(server, 1, 1);
serverConnector.setHost("0.0.0.0"); <-
serverConnector.setPort(8080);
serverConnector.setIdleTimeout(30000);
// Set the connector
server.addConnector(serverConnector);
Intenté acceder al servidor desde otro servidor remoto con el siguiente código:
String postUrl = "http://" + myIP + ":8080"; // myIP is set to the public IP address of Jetty Server
System.out.println("Post URL: " + postUrl);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(120 * 1000).build();
try (CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();) {
HttpPost httpPostRequest = new HttpPost(postUrl);
...
Sin embargo, esto genera la siguiente excepción:
HttpPostConnectException: Connect to 123.4.56.78:8080.. failed: Connection refused: connect
Que esta causando este error? Permití el acceso al Firewall cuando se me solicitó, por lo que no creo que sea un problema del Firewall. El puerto 8080
tampoco se utiliza para ningún otro proceso. Probé varios puertos sin éxito.
Gracias
Respuesta1
Moveré algunas de mis recomendaciones a una respuesta. Te faltan conocimientos básicos de redes, intenta leer un poco al respecto (aquíPor ejemplo). Algunos conceptos básicos:
- No se puede acceder a las IP locales (redes 192.168.xx, 10.xxx, etc.) desde Internet, solo se puede acceder directamente desde Internet al dispositivo que está conectado directamente a su proveedor de Internet (el enrutador de su hogar).
- Cuando estás conectado a tu enrutador doméstico y navegas por Internet, suceden varias cosas: como no se puede acceder a tu IP local desde Internet, tu enrutador doméstico oculta tu IP local y la reemplaza con tu IP pública. Después de hacer esto, el enrutador toma nota de la conexión para poder manejar una respuesta. Cuando llega una respuesta, se invierte el mismo proceso: si el enrutador encuentra una conexión coincidente dentro de su tabla para el paquete entrante, la IP pública se reemplaza con su IP privada y la respuesta se reenvía al dispositivo correcto dentro de su red. Este proceso se llamaNAT(Traducción de Direcciones de Red)
- NAT es una protección para sus dispositivos dentro de su red doméstica (¡sus dispositivos pueden acceder a Internet, pero Internet no puede llegar a sus dispositivos!), pero también lo dificulta si desea que se pueda acceder a un dispositivo de su red doméstica. desde Internet. Esto se debe a que su enrutador debe saber qué hacer con cada paquete de datos entrante. Y el valor predeterminado es: si ningún dispositivo dentro de su red doméstica abrió esa conexión, ¡el paquete de datos entrante se descartará!
Ahora debería quedar claro por qué tienes varias IP: Google solo puede ver tu IP pública. Para poder acceder a su servidor jetty desde Internet, necesitareenvío de puertos. Básicamente, crearás una regla dentro del enrutador de tu hogar "reenviar cada paquete TCP que reciba en el puerto 8080 al dispositivo interno XY". Deberá consultar el manual de su enrutador para saber cómo hacer esto; la mayoría de los enrutadores tienen una interfaz web para la configuración. Espero que esto aclare su confusión...