Настройка правил файрвола для SSH-перенаправления локальных портов для доступа в локальной сети

Вопрос или проблема

Я пытался изучить SSH туннелирование. Поэтому я настроил локальную переадресацию портов SSH, чтобы получить доступ к веб-серверу, работающему локально на той же машине, что и SSH-сервер:

ssh -g -L *:8080:localhost:80 [email protected]

GatewayPorts yes установлено на стороне сервера. Моя машина (SSH-клиент) находится на 192.168.56.0/24 с IP-адресом 192.168.56.102. Я предполагаю, что с данной переадресацией любое соединение, установленное с 192.168.56.102:8080 внутри локальной сети, перенаправляется и может получить доступ к веб-странице. Итак, с другой машины внутри локальной сети (192.168.56.101) я пытаюсь получить доступ к странице из браузера: http://192.168.56.102:8080. Но я получил обычное предупреждение Хммм… не удается открыть эту страницу.

Я пытаюсь проверить, слушает ли машина. netstat -ano | findstr :8080 говорит:

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       812
TCP    [::]:8080              [::]:0                 LISTENING       812

Оказывается, слушает. Моя догадка теперь переходит к файрволу. Возможно, файрвол не позволяет. Поэтому я временно отключаю файрвол и снова пытаюсь получить доступ к странице по адресу: http://192.168.56.102:8080. На этот раз я получил страницу, к которой хотел получить доступ. Итак, я подумал, что мне следует добавить некоторые правила файрвола, чтобы это соединение заработало. Исходя из трафика, захваченного при успешном доступе к странице (при отправке и получении на порт 8080), как показано на изображении: захват wireshark. Были установлены следующие правила для разрешения входящего и исходящего трафика к порту 8080:

netsh advfirewall firewall add rule name="Разрешить входящий порт 8080" dir=in action=allow protocol=TCP localport=8080
netsh advfirewall firewall add rule name="Разрешить исходящий порт 8080" dir=out action=allow protocol=TCP localport=8080

Я проверил, что правила были добавлены, и файрвол включен. Теперь снова пытаюсь получить доступ к странице, но, к сожалению, опять вижу сообщение Хммм… не удается открыть эту страницу.

Я не очень хорош в написании правил файрвола и только учусь этим ssh туннелированию. Я уверен, что я где-то ошибаюсь в своем понимании. Я буду благодарен за вашу помощь. Кстати, ssh сервер – OpenSSH_9.6p1 Ubuntu-3ubuntu13.5, OpenSSL 3.0.13 на Linux-хосте, а клиент на Windows 10.

Ответ или решение

Для настройки правил брандмауэра, позволяющих доступ к SSH переадресации локального порта в вашей локальной сети, давайте пройдемся по всем шагам.

Предпосылки

Вы правильно используете SSH-туннелирование, и с настройками GatewayPorts yes на стороне сервера SSH вы должны иметь возможность получать доступ к перенаправленному порту на других машинах в вашей локальной сети. Однако, вы столкнулись с проблемами, связанными с настройками брандмауэра, что является распространенной проблемой.

Проверка перенаправления порта

Команда SSH, которую вы используете:

ssh -g -L *:8080:localhost:80 [email protected]

позволяет принимать входящие соединения на порту 8080, и делать их доступными на локальном сервере в качестве перенаправления на порт 80. Убедитесь, что SSH-сервер правильно настроен и позволяет такие подключения.

Проверка работы сервера

Вы можете использовать netstat для проверки, действительно ли сервер работает и принимает соединения:

netstat -ano | findstr :8080

Если вы видите, что порт 8080 находится в состоянии LISTENING (Слушает), значит проблема не в самом сервере.

Настройки брандмауэра

Вы правильно предположили, что брандмауэр мог блокировать подключения. Поскольку временное отключение брандмауэра решило проблему, пришло время настроить правила более аккуратно.

  1. Убедитесь, что вы правильно добавили правила брандмауэра. Ваши команды выглядят правильно, но стоит добавить немного дополнительных деталей:

    netsh advfirewall firewall add rule name="Allow Incoming Port 8080" dir=in action=allow protocol=TCP localport=8080
    netsh advfirewall firewall add rule name="Allow Outgoing Port 8080" dir=out action=allow protocol=TCP localport=8080

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

    netsh advfirewall firewall add rule name="Allow Incoming SSH Tunneling" dir=in action=allow protocol=TCP localport=22
    netsh advfirewall firewall add rule name="Allow Outgoing SSH Tunneling" dir=out action=allow protocol=TCP localport=22
  2. Также можно проверить, существуют ли другие правила брандмауэра, которые могут блокировать трафик на других уровнях. В случае, если у вас установлен сторонний антивирус или брандмауэр, убедитесь, что они не блокируют трафик на порт 8080 или порт 22.

Протестируйте доступ

После применения всех правил, попробуйте снова получить доступ к вашей веб-странице, используя:

http://192.168.56.102:8080

Дополнительные рекомендации

  • Убедитесь, что другие устройства в вашей сети не имеют аналогичных правил брандмауэра, которые могут блокировать ваши попытки.
  • Попробуйте протестировать подключение с помощью инструмента, такого как curl или telnet, чтобы удостовериться, что порт 8080 доступен:
    curl http://192.168.56.102:8080

Если проблема продолжается, возможно, стоит просмотреть логи SSH-сервера для выявления дополнительных подсказок по проблемам с подключением.

Оцените материал
Добавить комментарий

Капча загружается...