Tengo dos dispositivos. Una es una Raspberry Pi y la otra una computadora Linux completa de mi escuela. Estoy tratando de establecer una conexión de socket TCP entre los dos. Esto ya lo puedo hacer entre la Pi y otra Pi, y lo mismo entre la caja Linux y otra caja parecida también de la escuela. Lo que no puedo hacer es conectar () entre Pi y la caja de Linux. Sin embargo, puedo hacer ping a cada uno de ellos, así que tengo razones para creer que están en la misma red. Supongo que hay un firewall que bloquea la conexión de Pi, pero ¿hay una mejor explicación? ¿Cómo puedo hacer que las cosas hablen?
Hay muchas posibilidades. Primero, debe recopilar más información de diagnóstico.
Pruebe traceroute -n <ip>
para ver los hosts intermedios. De hecho, podrían estar en una red local diferente con un enrutador de filtrado entre ellos.
Intente conectarse al par con telnet <ip> <port>
. Si dice Connection refused
, es probable que se pueda acceder al otro host, pero no hay nada escuchando en el puerto. Si no hay respuesta (se descarta el paquete), es probable que un filtro bloquee la conexión.
A continuación, intente nmap <ip>
. Esto le dirá qué puertos están abiertos y bloqueados.
Examine las reglas de filtrado de IP:
iptables -L INPUT
en ambos anfitriones. Puede eliminar todas las reglas (de entrada) con iptables -F INPUT
. Asegúrese de que la política predeterminada sea accept iptables -P INPUT ACCEPT
.
Es posible que se conecte a un host completamente diferente si se trata de una dirección local (la mayoría de las veces 192.168.xx o 10.xxx) y están separados por un NAT. Puede intentar bloquear el ping en el host remoto temporalmente para ver si tiene algún efecto:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
Ya no debería ser posible hacer ping al host remoto. Nota: luego, vuelva a habilitar el ping con sysctl -w net.ipv4.icmp_echo_ignore_all=0
Pruebe con un servidor de escucha TCP diferente, por ejemplo, SimpleHTTPServer de Python:
host1$ python -m SimpleHTTPServer host2$ telnet <ip> 8000
Estaba enfrentando un problema similar. En el navegador, muestra "No se puede acceder a este sitio. xxxx se negó a conectarse. ERR_CONNECTION_REFUSED". Pero en la terminal, pude hacer ping a IP_Address. Uno de los posibles problemas puede deberse al cortafuegos. Intente ejecutar estos comandos en la terminal de la máquina xxxx.
sudo firewall-cmd -state systemctl stop firewalld
esto detendrá el firewall y ahora puede volver a cargar la URL del navegador. Funcionará si el firewall estaba bloqueando el acceso. Si esto no funciona, seguramente puede consultar otra respuesta. También lo probé pero me quedé atascado en el comando nmap. "nmap - RTTVAR ha crecido a más de 2,3 segundos, disminuyendo a 2,0"