telnet到localhost拒绝,但通过IP工作?

时间:2011-08-12 22:27:46

标签: linux jboss ip localhost telnet

我有一个奇怪的问题,具体是关于Jboss的JNDI和Linux。 如果我通过ssh(Putty)在服务器上并运行以下命令:

telnet localhost 1099

它告诉我拒绝连接,但是......如果我跑:

telnet x 1099

其中x是服务器的IP地址,它在实际服务器上连接所有这些。

这怎么可能?不应该通过localhost工作?我也没试过127.0.0.1。

3 个答案:

答案 0 :(得分:7)

听起来该程序绑定到特定的IP地址或网络接口。运行netstat -tnlp | grep :1099,您可能会看到它正在侦听非环回接口。

如果您可以指示应用程序侦听0.0.0.0(IPv4通配符地址),则可以从计算机上的任何网络接口访问它。

答案 1 :(得分:1)

我猜你的JBoss实例是以 - host = x (或 -bx )选项启动的,其中 x 是IP地址(不是127.0.0.1,不是0.0.0.0而不是localhost)。这意味着JNDI只会监听 x

您可以通过检查JMXConsole中的系统属性来确定是否是这种情况。找到MBean jboss:name = SystemProperties,type = Service 。找到名为 showAll 的操作并调用它。将显示系统属性。查找 jboss.bind.address 的值,您可能会发现它显示 x 而不是0.0.0.0,它听起来就是您真正想要的。

话虽如此,您可能会对命名(jndi)服务上的绑定地址进行特定覆盖。 - host = -b 选项设置属性 jboss.bind.address ,该属性成为默认绑定几乎所有网络服务的地址,但可以将单个服务配置为与 jboss.bind.address 不同的特定绑定地址。查看JMXConsole中的 jboss:service = Naming MBean,并查找 BindAddress 属性。该地址表示可以连接的接口。 (如果它是0.0.0.0,那么所有你的接口。

希望有所帮助。

答案 2 :(得分:0)

你确定环回接口已启动吗?

# ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          ...

如果您没有看到UP LOOPBACK RUNNING,而只看到LOOPBACK,请使用ifconfig lo up启动环回界面,然后重试。