그래서 저는 헤드리스 Raspberry Pi의 Ubuntu에서 실행되고 포트 80에서 수신 대기하며 자체적으로 외부 IoT 장치와 트래픽을 전달하는 독립형 중개자 서비스 형태의 간단한 솔루션을 찾고 있습니다. 자체 내부 기능을 갖춘 독립적인 네트워크 웹 서버.
장면은 이렇습니다.
Ubuntu 20.10을 실행하는 전용 Raspberry PI. 주소가 192.168인 eth0 네트워크가 있습니다..Pi와 장치가 나란히 있고 다른 네트워크 장치가 실행되고 있지 않기 때문에 이는 IoT 장치를 연결하기 위한 역방향 케이블에 지나지 않습니다. PI에는 172에 wlan0 네트워크도 있습니다...*이며 Apache를 실행하지만 PI의 페이지를 제공하는 동시에 기본 HTTP/HTTPS 포트를 IoT 상자에 대한 통과에 사용할 수 있도록 대체 수신 포트가 있습니다.
IoT 박스는 턴키 장치이므로 소프트웨어를 설치할 수 없습니다. 포트 80을 통해 액세스할 수 있는 자체 웹 브라우저가 있습니다. 현재는 HTTPS 포트를 모릅니다. 두 네트워크 모두 개인 WRT 인터넷이므로 이것이 문제가 되지 않는다고 생각합니다. IoT 장치는 웹 페이지에 액세스하기 위해 HTTP 비밀번호가 필요할 수 있지만 정확히 최신이 아니기 때문에 기본 인증이나 일을 너무 복잡하게 만들지 않는 것으로 작동할 수 있기를 바랍니다. 잘 모르겠습니다. 연결은 다음과 같습니다. 모두 인터넷 방화벽 뒤에 있는 개인 네트워크이므로 보호됩니다.
내가 원하는 것은 172에 있는 어느 컴퓨터에서나 탐색할 수 있는 것입니다...* 로컬 Wi-Fi, PI의 포트 80에 연결되어 192.168.*의 포트 80에서 IoT 장치 웹 서버의 콘텐츠에 액세스할 수 있습니다..회로망. 대부분의 경우 PI는 유선 이더넷만 사용할 수 있는 IoT 장치에 원격 Wi-Fi 액세스를 제공하는 데 중점을 두고 있습니다.
두 인터페이스 사이에서 한 네트워크에서 다른 네트워크로 전체 포트 세트를 전달하려는 것이 아니라 IoT의 웹 페이지가 마치 PI에서 제공되는 것처럼 액세스할 수 있도록 하기 위해 필요한 것뿐입니다.
나는 많은 것을 시도했습니다. PI는 netplan 및 ufw를 사용하여 설정되며 두 네트워크 모두 PI에서 액세스할 수 있으며 대체 포트를 통해 PI의 Apache 서버를 탐색할 수 있습니다. PI에서 IoT 장치 페이지로 이동할 수도 있습니다. 따라서 두 네트워크 모두 작동되어 액세스할 수 있으며 ufw AFAIK를 사용하여 관련 포트를 열었습니다.
그런 다음 ufw를 사용하여 포트 전달을 시도했는데 PI의 한 포트만 PI의 다른 포트로 전달하는 것 같았는데 이는 내가 원하는 것이 아닙니다. 완전히 확신할 수는 없지만 몇 가지 예제 변형을 시도해 보면 그렇게 작동하는 것 같습니다. 문제는 분명히 유사한 구성을 가진 여러 예제 레시피를 봤지만 설명은그들이 어떻게 작동하는지부족한 것 같아서 무엇을 하려는지 이해하지 못한 채 시도만 하고, 안 되면 진단도 추론도 하지 못하는 거죠.
그러다가 PortFusion이 가능한 후보처럼 보인다는 사실을 발견했습니다. 작동하는 버전을 찾는 데 오랜 시간이 걸렸습니다. 최신 소스 코드 1.2.2는 오류 없이 빌드할 수 없었지만(Haskell에 있음) 결국 ARM(v1.2.1)에서 작동하는 버전을 찾았지만 그럴 수 없었습니다. 제대로 작동하지 않았고, 문서와 예제가 제한되어 있었고, 본질적으로 포기한 것이었고 질문할 곳도 없었습니다. 그래서 포기했어요.
그런 다음 또 다른 잠재적 후보처럼 보였지만 클라이언트와 서버 부분이 모두 필요한 것 같았고 IoT 장치에 아무것도 설치할 수 없었기 때문에 frp에 연결하려고 했던 frp가 올바른 도구가 아닌 것 같았습니다.
또한 SSH를 사용하여 터널을 설정하는 것에 대한 언급도 본 적이 있지만 수신 측에서 SSH를 사용해야 하는 것 같습니다. SSH에 아무것도 설치할 수 없기 때문에 이는 옵션이 아닙니다. 누군가는 netcat이 비슷한 일을 한다고 제안하기도 했습니다. 아마도요? 그런데 어떻게 양방향으로 만들 수 있나요? IoT 장치의 나가는 응답이 어떻게 HTTP 요청의 외부 발신자에게 다시 전달되어야 하는지 명확하지 않습니다.
이런 경우인 것 같습니다~해야 한다매우 간단한 일이지만 문제의 일부는 작업에 적합한 도구(포트 전달, NAT, 터널링, 브리징, 프록시 또는 이들의 조합)가 무엇인지 실제로 알지 못한다는 것입니다. 이러한 모든 도구에 대한 문서는 내가 원하는 것과 아무 관련이 없는 가정을 하는 예제를 포함하여 대체로 문서화 상태가 좋지 않거나 도구 자체가 단순히 다른 작업을 수행하도록 설계되었습니다.
Overlapping, netplan, networkmanager, networkd, iptables, ufw, ssh, netcat 등 관련이 있는 것처럼 보이는 도구가 많이 있으며 모든 종류의 이상한 일이 잘못될 수 있습니다. 특히 다음과 같이 이러한 서로 다른 도구 사이를 전환하기 시작하면 일부 도구는 다음과 같이 보입니다. 똑같고 서로 간섭합니다.
누군가 나에게 올바른 방향을 알려주고 어떤 도구를 사용하여 어떤 종류의 서비스를 설정해야 하는지 제안할 수 있다면 지금은 약간 정체되어 전혀 알 수 없습니다.