Comunicarse con raspberry pi a través de internet

Comunicarse con raspberry pi a través de internet

Soy un novato en el networking.

Tengo un Rpi-A conectado a Internet a través de un surf-stick 3G y un Rpi-B conectado a Internet a través de un punto de acceso WiFi.

Noté que Rpi-A tiene una dirección IP pública y Rpi-B tiene una IP local/privada. Ambas Raspberry Pi están en redes diferentes.

Quiero enviar datos binarios de Rpi-A a Rpi-B. ¿Alguna sugerencia sobre cómo se puede lograr esto?

actualización: utilicé el siguiente código para probar la conexión MQTT. reemplazando XX.XX.XX.XX con IP pública de raspberry Pi. Aun así, termino recibiendo este error---> error: [Errno 10060] Un intento de conexión falló porque la parte conectada no respondió adecuadamente después de un período de tiempo, o la conexión establecida falló porque el host conectado no respondió. ¿Cuál podría ser la posible razón de este error? ¿Falta algo en mi código?

import paho.mqtt.client as mqtt
import time

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))

client = mqtt.Client()
client.on_connect = on_connect

client.connect("xx.xx.xxx.x", 1883, 60)

client.loop_start()

while True:
  time.sleep(2)
  client.publish('Due_0.72/cmd/in','hello')
  print "publish.."

Respuesta1

Si está ejecutando RPi B en un punto de acceso que usted no controla. Podría crear una conexión inversa de Pi B a Pi A (algo como ncat debería funcionar) y enviar datos de esa manera o usar algo como un servidor OpenVPN en la nube y enrutar entre los 2 Pi.

Si tiene acceso al puerto de configuración del punto de acceso Wi-Fi, reenvíe algo como ssh a Pi B. (Puerto general 22/tcp si usa la configuración estándar)

Respuesta2

En la red del RPi-B debe haber un enrutador que utilice NAT para permitir que el RPI-B se conecte a Internet a través de una dirección pública.

Como esto:

ingrese la descripción de la imagen aquí

Tienes que ingresar a la configuración de ese enrutador y abrir un puerto específico (por ejemplo 22) y reenviar todo el tráfico entrante a ese puerto a la dirección IP del RPi-B.

RPi-B será accesible a la Internet pública a través de la combinación de RPI-BpúblicoDirección IP y puerto 22.

Ahora, desde RPi-A puedes usarSFTPpara enviar datos a RPi-B.

información relacionada