Я хочу использовать Raspberry Pi в своем коттедже на выходных. Raspberry Pi предназначен для регистрации температур и отправки их на удаленный сервер с фиксированным IP-адресом, который сохраняет данные и отображает их на простом веб-сайте.
Однако может возникнуть ситуация, когда я хочу что-то изменить на Raspberry Pi. Например, обновления системы или изменения в программе, которая отправляет данные на сервер или что-то еще.
С предложенной настройкой я не смог бы подключиться к Raspberry Pi за пределами его локальной сети.
ПРИМЕЧАНИЕ. Я не хочу менять сеть, и на существующем маршрутизаторе нет возможности переадресации портов, dynDNS или VPN.
Я недавно перечитал UDP дырокол. Основная идея заключается в том, что клиент отправляет пакет UDP на известный адрес сервера (т. Е. С включенным общедоступным IP-адресом или dynDNS). Клиент B, который хочет подключиться к клиенту A, запрашивает у сервера общедоступный IP-адрес и номер порта клиента A.
Затем он может подключиться к клиенту A напрямую по общедоступному IP-адресу и порту, который является динамическим. Поскольку клиент A сначала подключается к серверу через используемый порт, NAT будет пересылать пакеты клиенту A.
Надеюсь, я правильно изложил идею, более или менее…
Все это звучит хорошо, но проблема в том, что это не гарантируется для работы с TCP-соединением, так как маршрутизатор может «понимать» рукопожатие TCP-соединения и, если оно не создано правильно, оно не будет пересылать пакеты.
Итак, как я могу открыть сессию SSH от клиента B к клиенту A без клиента A, сидящего за маршрутизатором с dynDNS, с фиксированным общедоступным IP-адресом или возможностью переадресации портов? Использование центрального сервера с общедоступным, фиксированным IP-адресом или доменным именем было бы жестким.