Настройте 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 и настройку порта, указанную выше. Тогда все работает нормально!