인터넷을 통해 라즈베리파이와 통신하기

인터넷을 통해 라즈베리파이와 통신하기

저는 네트워킹의 초보자입니다.

Rpi-A는 3G 서핑 스틱을 통해 인터넷에 연결되어 있고 Rpi-B는 WiFi 핫스팟을 통해 인터넷에 연결되어 있습니다.

Rpi-A에는 공용 IP 주소가 있고 Rpi-B에는 로컬/개인 IP 주소가 있는 것으로 나타났습니다. 두 라즈베리 파이는 서로 다른 네트워크에 있습니다.

Rpi-A에서 Rpi-B로 바이너리 데이터를 보내고 싶습니다. 이를 어떻게 달성할 수 있는지에 대한 제안이 있으십니까?

업데이트: 아래 코드를 사용하여 MQTT 연결을 테스트했습니다. XX.XX.XX.XX를 라즈베리파이의 공개 IP로 대체합니다. 그래도 이 오류가 발생합니다---> 오류: [Errno 10060] 연결된 당사자가 일정 시간 후에 제대로 응답하지 않아서 연결 시도가 실패했거나 연결된 호스트가 응답하지 않아 설정된 연결에 실패했습니다. 이 오류의 가능한 원인은 무엇입니까? 내 코드에 빠진 것이 있나요?

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.."

답변1

귀하가 제어하지 않는 핫스팟에서 RPi B를 실행하는 경우. Pi B에서 Pi A로의 역방향 연결을 생성하고(ncat과 같은 방식으로 작동해야 함) 해당 방식으로 데이터를 전송하거나 클라우드의 OpenVPN 서버와 같은 것을 사용하여 2 Pi 사이를 라우팅합니다.

Wi-Fi 핫스팟 구성 포트에 액세스할 수 있는 경우 ssh와 같은 포트를 Pi B로 전달합니다. (표준 구성을 사용하는 경우 일반 포트 22/tcp)

답변2

RPi-B의 네트워크에는 RPI-B가 공용 주소를 통해 인터넷에 연결할 수 있도록 NAT를 사용하는 라우터가 있어야 합니다.

이와 같이:

여기에 이미지 설명을 입력하세요

해당 라우터의 구성으로 들어가서 특정 포트(예: 22)를 열고 해당 포트로 들어오는 모든 트래픽을 RPi-B의 IP 주소로 전달해야 합니다.

RPi-B는 RPI-B의 조합을 통해 공용 인터넷에 액세스할 수 있습니다.공공의IP 주소 및 포트 22.

이제 RPi-A에서 다음을 사용할 수 있습니다.SFTPRPi-B로 데이터를 보냅니다.

관련 정보