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

Bon*_*lin 3 sockets linux networking raspberry-pi

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

pet*_*ter 9

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

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

尝试连接到同行telnet <ip> <port>.如果它说Connection refused,可能是其他主机可以访问,但没有任何东西正在监听端口.如果没有响应(数据包被丢弃),则可能是阻止连接的过滤器.

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

检查IP过滤规则:

iptables -L INPUT
Run Code Online (Sandbox Code Playgroud)

在两个主机上.您可以删除所有(输入)规则iptables -F INPUT.确保默认策略为accept iptables -P INPUT ACCEPT.

如果它是本地地址(通常为192.168.xx或10.xxx),则可能完全连接到不同的主机,并且它们由NAT分隔.您可以尝试暂时阻止远程主机上的ping,看看它是否有任何影响:

sysctl -w net.ipv4.icmp_echo_ignore_all=1
Run Code Online (Sandbox Code Playgroud)

不再可以ping远程主机.注意:之后,重新启用pingsysctl -w net.ipv4.icmp_echo_ignore_all=0

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

host1$ python -m SimpleHTTPServer
host2$ telnet <ip> 8000
Run Code Online (Sandbox Code Playgroud)