Linux端口无法从远程机器访问

在本地有两台机器–windows和linux。 我试图在Windows机器上运行远程debugging(使用eclipse)到Linux上的一个tomcat应用程序(fedora)。 我已经在linux上启用了一个debugging端口8800,并且启动日志显示“在8800上监听transport dta_socket”现在,当我尝试将eclipse连接到它时,我得到“无法连接到远程VM。 拒绝连接。”

这里是linux上的端口描述

lsof -i:8800

命令PID用户FDtypes设备大小/关节点名称

java 21930 root 4u IPv4 59436 0t0 TCP *:sunwebadmin(LISTEN)

netstat -tulpn

原始Recv-Q发送-Q本地地址外部地址状态PID /程序名称

tcp 0 0 0.0.0.0:8800 0.0.0.0:* LISTEN 21930 / java

当我从任何一台机器打到url http:// {linux-ip}:8800时 ,Tomcat日志说debugging器无法连接:握手失败

很明显,该端口不可访问,因此debugging器无法连接。 请build议,遵循什么步骤。 任何指针也会有帮助。

你可能已经在Fedora上安装了默认的防火墙规则。

运行/etc/init.d/iptables stop

检查是否是这个问题

我的猜测是这是一个防火墙问题。 要进行诊断,请切换到root用户或使用sudo执行以下所述的这些命令:

首先, service iptables status将显示您当前的规则。 根据您的防火墙规则的深奥程度,您可能需要将其添加到主要问题中进行debugging,但实际上您正在寻找一条线路,该线路在拒绝所有连接的线路之前接受TCP端口8800。

例如

 Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination ... 14 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8800 15 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 

如果您的input链上没有REJECT行,那么防火墙可能已经closures。

解决这个问题的一种方法显然是closures防火墙( service iptables stop ),尽pipe这违背了防火墙的全部目的。

如果你需要添加一个新的防火墙规则,你有几个select:

  1. 使用Fedora附带的优秀防火墙configuration工具(system-config-firewall),可以在Gnome的System-> Administration-> Firewall菜单项中find。

  2. 在命令行上,通过执行以下命令(使用上面示例中的数字)在REJECT规则之前插入新规则: iptables -I INPUT 15 -m state --state NEW -m tcp -p tcp --dport 8800 -j ACCEPT 。 请注意,这些更改不是永久性的,在下次重新启动之后将不会保留。

  3. 手动编辑/etc/sysconfig/iptables文件并在拒绝规则之前向防火墙添加规则( -A INPUT -m state --state NEW -m tcp -p tcp --dport 8800 -j ACCEPT )。 循环防火墙服务,通过service iptables restart来获取更改。 每次启动防火墙服务时都会应用这些更改。

开始一些基本的networking故障排除。 尝试telnet到端口,看看它是否真的打开

 telnet IP 8800 

会给你

 Trying IP.ADD.RE.SS... Connected to IP.ADD.RE.SS. Escape character is '^]'. 

如果在这个REJECTS数据包之间有一个防火墙。

 Trying IP.ADD.RE.SS... telnet: connect to address IP.ADD.RE.SS: Connection refused 

如果防火墙丢弃数据包,则会发生超时。

几点:

  • 服务器日志的输出和这些命令意味着端口是开放的,tomcat正在监听。
  • 你试图通过HTTP连接到8800 – 我怀疑debugging协议是http,但我不知道。
  • 你在tomcatlogin尝试的连接中得到消息 – 表示在TCP层面一切正常,但是“握手”失败。

感谢球员的所有input..抱歉这么晚回复,但真正的错误是与LINUX机器。 它没有在我的组织使用的DNS中注册。 所以机器不能使用主机名,只能通过IP(dynamic)访问。

和我一起做了Ophidian给出的规则变化。 然后它为我工作。

再次感谢所有,您的投入帮助我解决了这个问题。