Ich bin ein Neuling im Networking.
Ich habe einen Rpi-A, der über einen 3G-Surfstick mit dem Internet verbunden ist, und einen Rpi-B, der über einen WLAN-Hotspot mit dem Internet verbunden ist.
Mir ist aufgefallen, dass Rpi-A eine öffentliche IP-Adresse und Rpi-B eine lokale/private IP hat. Beide Raspberry Pis befinden sich in unterschiedlichen Netzwerken.
Ich möchte Binärdaten von Rpi-A an Rpi-B senden. Irgendwelche Vorschläge, wie das erreicht werden kann?
Update: Ich habe den folgenden Code verwendet, um die MQTT-Verbindung zu testen. Dabei habe ich XX.XX.XX.XX durch die öffentliche IP von Raspberry Pi ersetzt. Trotzdem erhalte ich diesen Fehler ---> Fehler: [Errno 10060] Ein Verbindungsversuch ist fehlgeschlagen, weil die verbundene Partei nach einer gewissen Zeit nicht richtig geantwortet hat, oder die hergestellte Verbindung ist fehlgeschlagen, weil der verbundene Host nicht geantwortet hat. Was könnte der mögliche Grund für diesen Fehler sein? Fehlt in meinem Code etwas?
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.."
Antwort1
Wenn Sie RPi B an einem Hotspot betreiben, der nicht von Ihnen kontrolliert wird, würden Sie entweder eine Rückverbindung von Pi B zu Pi A herstellen (so etwas wie ncat sollte funktionieren) und Daten auf diesem Weg senden oder so etwas wie einen OpenVPN-Server in der Cloud verwenden und zwischen den beiden Pi routen.
Wenn Sie Zugriff auf die Port-Konfiguration des WLAN-Hotspots haben, leiten Sie etwas wie „ssh“ an Pi B weiter. (Allgemeiner Port 22/TCP bei Verwendung der Standardkonfiguration)
Antwort2
Im Netzwerk des RPi-B muss ein Router vorhanden sein, der NAT verwendet, damit RPI-B über eine öffentliche Adresse eine Verbindung zum Internet herstellen kann.
So was:
Sie müssen in die Konfiguration dieses Routers gehen, einen bestimmten Port öffnen (z. B. 22) und den gesamten eingehenden Datenverkehr an diesen Port an die IP-Adresse des RPi-B weiterleiten.
RPi-B wird über das öffentliche Internet zugänglich sein durch die Kombination von RPI-BsöffentlichIP-Adresse und Port 22.
Ab RPi-A können Sie nunSFTPum Daten an RPi-B zu senden.