Настройте SUN RPC на экземпляре Amazon EC2

Кто-нибудь может помочь? Я застрял. У меня есть экземпляр EC2 и клиент-серверное приложение Sun RPC, которое отлично работает локально.

Серверная часть работает нормально на экземпляре EC2 (запускается, ждет клиентских подключений.

Клиентская часть, работающая на моем домашнем ПК, всегда говорит:

localhost: RPC: Remote system error - Connection refused

Я запустил rpcinfo -p на клиенте и сервере, они выглядят нормально для меня:

Сервер EC2:

   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
 536871049    2   udp  36832
 536871049    2   tcp  43244

Клиент:

   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
       199    1   udp  35634
       199    1   tcp  43545
 536871049    2   udp  52507
 536871049    2   tcp  57459
 536871048    1   udp  49297
 536871048    1   tcp  54609

Я открыл порт 111 для входящего TCP на экземпляре EC2. Он выглядит открытым от клиента: nping -p 111 ec2-XX-XXX-XX-XX.us-west-2.compute.amazonaws.com возвращает ответ.

У кого-нибудь есть идеи?

1 ответ

Ах, как и mootmoot указал, я был на месте работает мой клиент.

Однако, когда я изменил это, это все еще не работало. Помимо порта 111 вы также должны открыть порт, на котором запущена служба. Моя программа имеет номер 536871049, поэтому я должен открыть порт 43244 для TCP (протокол, который я использовал).

Но каждый раз, когда вы перезапускаете сервис, номер порта меняется при вызове кода сервера шаблонов:

transp = svctcp_create(RPC_ANYSOCK, 0, 0);

который связывает службу с произвольным портом. Поэтому мне пришлось настроить свой собственный сокет для известного порта, а затем изменить вызов выше, чтобы использовать этот сокет.

Затем вы можете войти в AWS и открыть входящие соединения с сервером EC2 через порты 111 и настройку порта, указанную выше. Тогда все работает нормально!

Другие вопросы по тегам