Подключение к серверу RMI, который находится за брандмауэром? - PullRequest
0 голосов
/ 16 марта 2010

Я знаю, что мое приложение RMI работает правильно - оно работает нормально, когда сервер находится на локальном хосте и внутри локальной сети, но при подключении к внешнему серверу RMI оно завершается неудачно при попытке выполнить вызов-заглушку

Таким образом, сервер привязан к localhost (внутренний IP - 192.168.1.73), но клиент указывает внешний IP (45.4.234.56), который затем перенаправляется на внутренний сервер. Как вы решаете эту проблему?

спасибо

1 Ответ

2 голосов
/ 16 марта 2010

«Самый простой» подход для администратора вашей сети - добавить переадресацию IP с определенного порта брандмауэра на ваш сервер.

Если предположить, что это не вариант (и, вероятно, нет), тогда RMI поддерживает туннелирование по HTTP. Производительность низкая, но она гораздо более дружественна к брандмауэрам.

http://java.sun.com/javase/6/docs/technotes/guides/rmi/faq.html#firewallOut

Этот изношенный метод популярен с он почти не требует настройки и работает довольно хорошо в огненной среде которые позволяют вам обрабатывать HTTP через прокси, но запретить регулярно исходящие соединения TCP.

Если Java RMI не может сделать нормальный (или SOCKS) подключение к предполагаемому сервер, и он замечает, что HTTP прокси-сервер настроен, он будет попытка туннелировать запросы Java RMI через этот прокси-сервер, по одному время.

...