Порт закрыт на виртуальной машине Azure Linux, хотя это разрешено группой безопасности сети (NSG)
Вот мой сценарий:
У меня есть IP-камера за брандмауэром компании, которую я хочу транслировать публично, и для этого я создал две виртуальные машины Azure (Ubuntu 19.04) - назовем их vm1
а также vm2
Если это важно, мой SKU виртуальной машины Standard B1s (1 vcpus, 1 GiB memory)
Я подключаюсь к камере по SSH и оттуда выполняю перенаправление удаленного порта для RTSP следующим образом:
ssh -R 554:localhost:554 root@<vm1-ip>
И, думаю, мне нужно включить root SSH, потому что это "хорошо известный" порт.
Я вхожу в
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
Но когда я использую
nmap
из отvm2
, порт отображается как закрытый:nmap <vm1-ip> -p 554 PORT STATE SERVICE 554/tcp closed rtsp
Когда я использую
vlc
для подключения к потоку он тоже не работает: URL, который я использую вvlc
является:rtsp://<vm1-ip>/...
Я подумал, что это может быть проблема с 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.