Используйте SSH, если к маршрутизатору подключено несколько устройств Raspberry

Используйте SSH, если к маршрутизатору подключено несколько устройств Raspberry

Итак, у меня есть несколько Raspberry Pi 4B (8), подключенных к моему FritzBox через кабели Ethernet. Все Pi имеют SSH, активированный в настройках, и могут использовать SSH в локальной сети, набрав "ssh[email protected]". Я настроил службу dynDNS для своего маршрутизатора, чтобы иметь к нему доступ, не зная точного IP-адреса. Это тоже сработало отлично.

Затем я использовал опцию «Разрешить доступ» FritzBox, чтобы перенаправить порты 22 и 3389 на один из RPi. Теперь я могу использовать SSH и MS Remote Desktop на этом компьютере.

Проблема: Все остальные RPi имеют headless-установки Raspberry OS Lite, и мне также нужен SSH из Интернета для них. Но поскольку первый RPi уже использует порт 22, я не могу использовать другие RPi с портом 22.

Есть метод, называемый перенаправлением портов, о котором я много раз читал в интернете. Но никто толком не объяснил его. Так что мне нужно найти способ сделать это:

Маршрутизатор

|-> внешний порт 2200 -> порт 22 Pi № 0

|

|-> внешний порт 2201 -> порт 22 Pi № 1

|

|-> внешний порт 2202 -> порт 22 Pi № 2

|

|-> внешний порт 2203 -> порт 22 Pi № 3

Но я понятия не имею, как это работает ;D

Какой файл конфигурации мне нужно отредактировать на RPi или какие настройки мне нужно изменить на маршрутизаторе, чтобы добиться этого?

Спасибо за ответ :)

(P.S. Я новичок в сетевых технологиях. Я занимаюсь программированием на Java для ПК и иногда ботов Discord в качестве хобби уже около 2 лет. Но я понятия не имею, как работает вся эта интернет-штука, и хочу научиться этому XD)

решение1

Есть метод, который называется port-redirecting, о котором я много раз читал в интернете. Но никто толком не объяснил его.

На большинстве маршрутизаторов разрешение внешнего доступа к внутреннему хосту IPv4 — это буквально одна и та же функция, независимо от того, нужно ли менять порт или нет. Если у вашего Raspberry Pi частный IP-адрес, маршрутизатору в любом случае придется выполнять NAT, поэтому «перенаправление портов» является его частью и на самом деле не является отдельной вещью.

В вашем случае, похоже, FRITZ!Box позволяет вам вводить разные «внешние» и «внутренние» порты, если вы выбираете «Другое приложение» в том же разделе «Разрешить доступ».

Судя по скриншотамнайдено в гуглеэто было бы:

  • Применение: [Другое применение]
  • Протокол: [TCP]
  • Порт к устройству: [22] через [22]
  • Порт, запрошенный извне (IPv4): [2201]

(Поле помечено как специфичное для IPv4, поскольку в IPv6 вы подключаетесь напрямую к собственному адресу Pi, а не к адресу маршрутизатора, поэтому не будет никакого разделения между портами «внешний» и «внутренний/к устройству».)

Какой файл конфигурации мне нужно отредактировать на RPi или какие настройки мне нужно изменить на маршрутизаторе, чтобы добиться этого?

Обычно это одинилидругой, в зависимости от того, что вы хотите.

  • Маршрутизатор
    |-> внешний порт 2200 -> порт22Пи № 0
    |-> внешний порт 2201 -> порт22Пи № 1
    |-> внешний порт 2202 -> порт22Пи № 2
    

    Вероятно, это то, что вы называете «перенаправлением портов». Это требует, чтобы маршрутизатор транслировал порты, и не требует никаких изменений на самом Pi.

    Это, как правило, характерно для IPv4; хотя в IPv6 это все еще технически возможно, считается, что этого «следует избегать». (Это в основном потому, что в IPv6каждыйиз ваших Пи имели бысвой собственный(Внешний адрес, поэтому проблема коллизии порта 22 будет спорной.)

    На FRITZ!Box это, похоже, скрыто под опцией «Другое приложение» на той же странице «Разрешить доступ», которую вы уже используете.

  • Маршрутизатор
    |-> внешний порт 2200 -> порт2200Пи № 0
    |-> внешний порт 2201 -> порт2201Пи № 1
    |-> внешний порт 2202 -> порт2202Пи № 2
    

    Это не требует какой-либо перезаписи со стороны маршрутизатора (работает одинаково как в IPv4, так и в IPv6), но требует, чтобы служба SSH на Pi прослушивала соответствующий порт.

    В Linux эта Portопция есть /etc/ssh/sshd_config— вам, вероятно, следует добавить ее дважды: и для порта по умолчанию 22, и для вашего пользовательского порта 2200.

ТымогКонечно, можно сделать и то, и другое, например, переписать внешний порт 2200 на порт Pi 3300, но это просто не нужно.

Также есть возможностьнетсделать другие Pi доступными извне вообще. Вместо этого вы могли бы использовать ssh -Jдля подключения ко всем из них через 0-й Pi, например ssh -J public.ip lan.ip.pi2.

Связанный контент