在Amazon EC2实例上设置SUN RPC

时间:2017-04-24 03:41:49

标签: amazon-web-services amazon-ec2 sunrpc

有人可以帮忙吗?我被卡住了。我有一个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

我在EC2实例上为TCP入站打开了端口111。它从客户端看起来是开放的:nping -p 111 ec2-XX-XXX-XX-XX.us-west-2.compute.amazonaws.com返回响应。

任何想法?

1 个答案:

答案 0 :(得分:0)

啊,正如mootmoot指出的那样,我在本地运行我的客户端。

然而,当我改变它时,它仍然无效。除了端口111,您还必须打开运行该服务的端口。我的程序号为536871049,所以我必须为TCP打开端口43244(我正在使用的协议)。

但是,每次重新启动服务时,端口号都会随着模板服务器代码调用而改变:

transp = svctcp_create(RPC_ANYSOCK, 0, 0);

将服务绑定到任意端口。因此,我必须针对已知端口设置自己的套接字,然后更改上面的调用以使用该套接字。

然后,您可以进入AWS,打开端口111上的EC2服务器的入站连接以及上面的端口设置。一切正常!