방화벽을 통해 내 RMI 서비스를 작동 시키려고합니다. 나는 this answer의 지침을 따라 포트 1099에서 RMI 레지스트리와 내 RMI 서비스를 모두 실행했지만 아직까지는 netstat
일 때 다른 포트 번호가 RMI 클라이언트와 서버에서 열리고 있습니다.자바 RMI 및 netstat 출력
[[email protected]] ~ $ netstat -ant | grep 1099
tcp6 0 0 :::1099 :::* LISTEN
tcp6 0 0 10.1.1.1:1099 10.1.1.2:33400 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.1:33378 ESTABLISHED
tcp6 0 0 10.1.1.1:33408 10.1.1.1:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.1:33408 ESTABLISHED
tcp6 0 0 10.1.1.1:46866 10.1.1.2:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.2:33404 ESTABLISHED
tcp6 0 0 10.1.1.1:33378 10.1.1.1:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:46862 10.1.1.2:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:46864 10.1.1.2:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.2:33402 ESTABLISHED
tcp6 0 0 10.1.1.1:46860 10.1.1.2:1099 ESTABLISHED
10.1.1.1 및 10.1.1.2는 모두 RMI 서버이며 서로 이야기하는 클라이언트입니다.
이 내 코드입니다 :
IRemoteService 스텁 = (IRemoteService) UnicastRemoteObject.exportObject를 (서비스, 1099);
registry = LocateRegistry.createRegistry (1099);
registry.rebind (IRemoteService.serviceName, stub);
예상 되나요? 33400, 33378 등의 포트 번호를 보는 이유는 무엇입니까? 또는 출발지와 목적지 포트가 어떻게 작동하는지 이해하고 있습니까? 모든 연결 (레지스트리 조회 및 원격 서비스 호출)이 포트 1099로만 연결되기를 기대하고있었습니다.
참고 : 위의 방화벽 환경에서는 아직 실행하지 않았으며 방화벽 상황에서 시도하기 전에 실험실에서 로컬로 시도했습니다.
내 진짜 질문은 '33404' (10.1.1.1:1099'->'10.1.1.2:33404)와 같은 포트가 1099와 다른 방화벽에서 열리도록해야 할 것 같습니까? –
방화벽 (클라이언트 포트 (33408, 33404 등)이 아닌 서버 포트 (1099) 만 열어야한다고 말하고 있습니까? –
나는 방화벽에 관해서 아무 말도하지 않았으며 나는 완전히 그리고 완전히 알레르기 반응을 보였다. 그래서 대답은 불가피하게 '아니오'인 것처럼 여기에있다. * 새 * 질문에 대해서는 서버 측 방화벽이 1099 (그리고 이전 질문에 대해 10991)에서 인바운드 연결을 허용해야합니다. 클라이언트 측 방화벽은 해당 포트로의 아웃 바운드 연결을 허용해야합니다. 어느 방화벽도 소스 포트에 대해 어떠한 판결도 내리지 않아야합니다. 그렇게함으로써 얻을 수있는 것은 없습니다. – EJP