让一个进程监听0.0.0.0(或不是127.0.0.1)

这两个盒子都是RHEL5。

我有一个python RPC服务器运行在本地端口8000端口。当运行在同一台机器上的客户端尝试连接,一切正常。 当远程客户端尝试连接时,我们没有得到任何回应。

netstat显示进程运行在127.0.0.1:8000,这似乎是如果我想要允许远程连接器的问题。

我已经转发了路由器上的端口,并使用tcpdump我可以看到RPC调用进入端口8000,但它们都失败,RPC服务器永远不会收到消息。

服务器configuration允许我把主机名放在:server = SimpleXMLRPCServer((“localhost”,8000))

因为我们的/ etc / hosts文件如下所示,所以尝试使用我们的域代替localhost仍然导致127.0.0.1:

127.0.0.1 localhost.localdomain localhost 127.0.0.1 staging.<ourdomain>.com 

然后,我将/ etc / hosts更改为:

 127.0.0.1 localhost.localdomain localhost 192.168.1.140 staging.<ourdomain>.com testserver 

我已经将本地IP更改为服务器IP,但仍然没有。 netstat将显示staging..com行上hosts文件的IP地址。

我如何让一个进程在::: 8000或0.0.0.0:8000上运行,或者任何可以允许远程客户端连接的排列?

默认侦听所有端口(ipv6 + ipv4)

 0.0.0.0 = bind all ipv4 

你有没有尝试改变它听“0.0.0.0”?

 server = SimpleXMLRPCServer(("0.0.0.0", 8000)) 

防火墙吗?

服务iptables停止

显然,不要永远这样运行,但是,只是为了testing…假设没有其他安全问题。

之后,只要打开端口。

快速检查清单:netstat -ln的输出是否显示:: 8000的监听服务? 如果没有,更改代码来侦听所有接口或特定的接口。

iptables是禁用的?

你能连接到该端口和ip从另一个主机在同一个子网? 这将排除一个中间防火墙或其他natted入站连接的问题。

由于这是一个tcp连接,所以也有可能你的连接不能被build立,如果服务器没有返回路由或者是某种性质的话,这可能会发生,尽pipe如果你已经通过入站连接SSH。