2017-04-24 152 views
0

誰能幫助?我卡住了。我有一個EC2實例和一個客戶端/服務器Sun RPC應用程序,可以在本地正常工作。設置SUN RPC在Amazon EC2實例

服務器部分運行在EC2實例OK(啓動,等待客戶端連接

我的家用電腦上運行始終在客戶端部分說:

localhost: RPC: Remote system error - Connection refused 

-p上我已經運行的rpcinfo客戶端和服務器,他們看起來OK對我說:

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 

我在EC2實例上打開了TCP入站端口111。它看起來從客戶端打開:nping -p 111 ec2-XX-XXX-XX-XX.us-west-2.compute.amazonaws.com返回響應。

任何人任何想法?

+0

我認爲錯誤消息已經告訴你問題:你的應用程序試圖連接到RPC主機名'localhost'。檢查你的應用程序設置 – mootmoot

+0

'portmapper'動態地將端口分配給RPC服務,或者是服務動態分配它們自己的端口並將它們註冊到'portmapper'中。所有這些都是在20世紀80年代早期的防火牆之前設計的。 30年後,Sun-RPC確實不適合在互聯網上部署這個原因。 – EJP

回答

0

啊,因爲mootmoot指出的那樣,我在本地運行我的客戶。

然而,當我改變了這一切,它仍然沒有奏效。除了端口111,您還必須打開服務運行的端口。我的程序有一個號碼536871049,所以我必須爲TCP(我使用的協議)打開端口43244。

但是,每次你重新啓動該服務,端口號改變爲模板服務器代碼調用:

transp = svctcp_create(RPC_ANYSOCK, 0, 0); 

結合的服務到arbitary端口。所以我必須在已知的端口上設置自己的套接字,然後更改上面的調用以使用該套接字。

然後你就可以進入AWS的開放,加上入站連接到EC2服務器上的端口111的端口設置以上。這一切然後工作正常!