Порт закрыт на виртуальной машине Azure Linux, хотя это разрешено группой безопасности сети (NSG)

Вот мой сценарий:

У меня есть IP-камера за брандмауэром компании, которую я хочу транслировать публично, и для этого я создал две виртуальные машины Azure (Ubuntu 19.04) - назовем их vm1 а также vm2

Если это важно, мой SKU виртуальной машины Standard B1s (1 vcpus, 1 GiB memory)

  1. Я подключаюсь к камере по SSH и оттуда выполняю перенаправление удаленного порта для RTSP следующим образом:

    ssh -R 554:localhost:554 root@<vm1-ip>
    

    И, думаю, мне нужно включить root SSH, потому что это "хорошо известный" порт.

  2. Я вхожу в vm1, и я вижу, что он прослушивает порт: sudo netstat -tlnp дает мне это:

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.0.1:554           0.0.0.0:*               LISTEN      108748/sshd: root@p
    tcp6       0      0 ::1:554                 :::*                    LISTEN      108748/sshd: root@p
    
  3. Но когда я использую nmap из от vm2, порт отображается как закрытый:

    nmap <vm1-ip> -p 554
    
    PORT    STATE  SERVICE
    554/tcp closed rtsp
    
  4. Когда я использую vlc для подключения к потоку он тоже не работает: URL, который я использую в vlc является: rtsp://<vm1-ip>/...

  5. Я подумал, что это может быть проблема с NSG (группой безопасности сети), связанной с vm1, поэтому я попытался разрешить весь входящий трафик: и, разумеется, это не решает проблему

Есть мысли по этому поводу?

Спасибо

1 ответ

У меня была та же проблема, и я решил ее, включив опцию GatewayPorts в файле конфигурации SSH-сервера на виртуальной машине Azure. Эта опция позволяет удаленным хостам подключаться к локальным перенаправленным портам. По умолчанию для него установлено значение «нет», что означает, что разрешены только соединения с адреса обратной связи (127.0.0.1).

Чтобы включить опцию GatewayPorts, вам необходимо выполнить следующие шаги:

  • Войдите на виртуальную машину Azure как пользователь root или пользователь с привилегиями sudo.
  • Отредактируйте файл /etc/ssh/sshd_config в предпочитаемом вами текстовом редакторе, например nano или vi.
  • Найдите строку с надписью #GatewayPorts no и раскомментируйте ее, удалив символ #. Затем измените значение с «нет» на «да» или «clientspecified». Значение yes означает, что SSH-сервер привяжет локальный порт к любому адресу, а значение clientspecified означает, что SSH-клиент укажет адрес для привязки. Например, вы можете использовать-R 554:0.0.0.0:554привязать к какому-либо адресу или-R 554:127.0.0.1:554или-R 554:localhost:554для привязки к конкретному адресу.
  • Сохраните и закройте файл.
  • Перезапустите службу SSH с помощью команды sudo systemctl restart sshd или sudo service sshd restart, в зависимости от вашего дистрибутива Linux.
Другие вопросы по тегам