无法连接到我可以ping的计算机

时间:2014-01-18 16:53:14

标签: linux sockets networking raspberry-pi

我有两个设备。一个是Raspberry Pi,另一个是我学校的完整Linux计算机。我试图在两者之间建立TCP套接字连接。我已经可以在Pi和另一个Pi之间做到这一点,同样在Linux盒子和另一个也属于学校的盒子之间。我不能做的是在Pi和Linux盒子之间连接()。不过,我可以对每个人进行ping操作,所以我有理由相信他们在同一个网络上。我的猜测是有防火墙阻止Pi连接,但有更好的解释吗?我怎么能说话呢?

2 个答案:

答案 0 :(得分:9)

有很多种可能性。首先,您应该收集更多诊断信息。

尝试traceroute -n <ip>查看中间主机。它们确实可以位于不同的本地网络中,并且它们之间有过滤路由器。

尝试使用telnet <ip> <port>连接到对等方。如果它显示Connection refused,则可能是其他主机可以访问,但是没有任何内容正在侦听。如果没有响应(数据包被丢弃),则可能是阻止连接的过滤器。

接下来,尝试nmap <ip>。这将告诉您哪些端口是打开和阻止的。

检查IP过滤规则:

iptables -L INPUT

在两台主机上。您可以使用iptables -F INPUT删除所有(输入)规则。确保默认政策是接受iptables -P INPUT ACCEPT

如果它是本地地址(最常见的是192.168.x.x或10.x.x.x),您可能会完全连接到另一台主机,并且它们由NAT分隔。您可以尝试暂时阻止远程主机上的ping,看它是否有任何影响:

sysctl -w net.ipv4.icmp_echo_ignore_all=1

不再可以ping远程主机。 注意:之后,请使用sysctl -w net.ipv4.icmp_echo_ignore_all=0

重新启用ping

尝试使用其他TCP侦听服务器,例如python的SimpleHTTPServer:

host1$ python -m SimpleHTTPServer
host2$ telnet <ip> 8000

答案 1 :(得分:0)

我正面临类似的问题。 在浏览器上,它显示“无法访问此站点。x.x.x.x拒绝连接。ERR_CONNECTION_REFUSED”。 但是在终端上,我能够ping通IP_Address。 可能的问题之一可能是由于防火墙。 尝试在x.x.x.x机器终端上运行这些命令。

sudo firewall-cmd -state
systemctl stop firewalld

这将停止防火墙,现在您可以重新加载浏览器URL。如果防火墙阻止了访问,它将可以工作。 如果这不起作用,您一定可以参考其他答案。我也尝试过,但是被nmap命令卡住了。 “ nmap-RTTVAR已增长到2.3秒以上,减少到2.0秒”