2017-04-24 15 views
0

誰でも手助けできますか?私は立ち往生している。私は、EC2インスタンスと、クライアント/サーバのSun RPCアプリケーションをローカルに正常に動作させています。Amazon EC2インスタンスでSUN RPCを設定する

サーバ部分はクライアント接続を待ち、開始(EC2インスタンス上で[OK]を実行します

私の自宅のPC上で実行しているクライアント部分は常に言う:。

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 'で登録します。このすべては、ファイアウォールの前の1980年代初期に考案されました。 Sun-RPCは、30年後にインターネットに展開するという理由から実際には適していません。 – EJP

答えて

0

ああ、mootmootが指摘したように、クライアントをローカルに実行していました。

しかし、私はそれを変更してもまだ動作しませんでした。ポート111以外にも、サービスが実行されているポートを開く必要があります。私のプログラムの番号は536871049なので、TCP(私が使っていたプロトコル)のためにポート43244を開かなければなりません。

しかし、あなたがサービスを再起動するたびテンプレート・サーバ・コードの呼び出しとして、ポート番号が変更されます。

transp = svctcp_create(RPC_ANYSOCK, 0, 0); 

arbitaryポートにサービスをバインドします。だから私は知られているポートに対して自分のソケットを設定し、そのソケットを使うために上記の呼び出しを変更しなければなりませんでした。

次に、ポート111のEC2サーバーと上記のポート設定のインバウンド接続をAWSに開くことができます。それはすべてうまく動作します!

関連する問題