![LAN 외부에서 Jetty Server에 어떻게 액세스하나요?](https://rvso.com/image/770109/LAN%20%EC%99%B8%EB%B6%80%EC%97%90%EC%84%9C%20Jetty%20Server%EC%97%90%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%98%EB%82%98%EC%9A%94%3F.png)
원래 이 질문을 stackoflow에 게시했지만 이 사이트에 더 적합할 것이라는 조언을 받았습니다.
LAN 외부의 다른 컴퓨터에서 한 컴퓨터에 배포된 Jetty Server에 액세스하려고 하는데 작동하지 않습니다. 나는 읽었다이 스레드그리고 그 사람의 조언을 따랐다.@Joakim Erdfelt그러나 그것은 작동하지 않았습니다. 내 코드는 다음과 같습니다.
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);
다음 코드를 사용하여 다른 원격 서버에서 서버에 액세스를 시도했습니다.
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);
...
그러나 이로 인해 다음 예외가 발생합니다.
HttpPostConnectException: Connect to 123.4.56.78:8080.. failed: Connection refused: connect
이 오류의 원인은 무엇입니까? 메시지가 표시되면 방화벽 액세스를 허용했기 때문에 방화벽 문제는 아닌 것 같습니다. 이 포트는 8080
다른 프로세스에도 사용되지 않습니다. 여러 포트를 사용해도 소용이 없었습니다.
감사해요
답변1
내 권장 사항 중 일부를 답변으로 옮기겠습니다. 기본적인 네트워킹 지식이 부족합니다. 이에 대한 내용을 조금 읽어 보십시오(여기예를 들어). 몇 가지 기본사항:
- 로컬 IP(네트워크 192.168.xx, 10.xxx 등)는 인터넷에서 연결할 수 없으며 인터넷 공급자(홈 라우터)에 직접 연결된 장치만 인터넷에서 직접 연결할 수 있습니다.
- 홈 라우터에 연결되어 인터넷을 탐색하면 여러 가지 일이 발생합니다. 인터넷에서 로컬 IP에 연결할 수 없기 때문에 홈 라우터는 로컬 IP를 숨기고 공용 IP로 대체합니다. 이 작업을 수행한 후 라우터는 응답을 처리할 수 있도록 연결을 기록합니다. 응답이 도착하면 동일한 프로세스가 반전됩니다. 라우터가 테이블 내에서 수신 패킷에 대해 일치하는 연결을 찾으면 공용 IP가 개인 IP로 대체되고 응답이 네트워크 내부의 올바른 장치로 전달됩니다. 이 과정을NAT(네트워크 주소 변환)
- NAT는 홈 네트워크 내부의 장치를 보호합니다(장치는 인터넷에 연결할 수 있지만 인터넷은 장치에 연결할 수 없습니다!). 그러나 홈 네트워크의 장치에 연결하기를 원하는 경우에도 NAT는 어렵습니다. 인터넷에서. 이는 라우터가 들어오는 모든 데이터 패킷에 대해 무엇을 해야 하는지 알아야 하기 때문입니다. 기본값은 다음과 같습니다. 홈 네트워크 내부의 어떤 장치도 해당 연결을 열지 않으면 들어오는 데이터 패킷이 삭제됩니다!
이제 IP가 여러 개인 이유가 명확해졌습니다. Google은 공개 IP만 볼 수 있습니다. 인터넷에서 부두 서버에 접근하려면 다음이 필요합니다.포트 포워딩. 기본적으로 홈 라우터 내부에 규칙을 생성하게 됩니다."포트 8080에서 수신한 모든 TCP 패킷을 내부 장치 XY로 전달합니다.". 이 작업을 수행하는 방법에 대해서는 라우터 설명서를 확인해야 합니다. 대부분의 라우터에는 구성을 위한 웹 인터페이스가 있습니다. 이를 통해 혼란이 해소되기를 바랍니다...