Общий доступ к Интернету с компьютера с Windows на компьютер с Linux через ssh

У нас есть доступ к защищенной инфраструктуре Linux через компьютер под управлением Windows. У linux инфра нет доступа к интернету, но у Windows машина есть.

На этой машине с Windows мы установили putty и можем подключиться к ней с помощью linux. Мы можем настроить туннели от машины Windows до инфраструктуры Linux в обоих направлениях (локальном и удаленном).

Что мне интересно, так это то, можем ли мы предоставить linux infra доступ в интернет через хост Windows, через удаленный туннель с использованием замазки.

Нам нужен только доступ по http / https, потому что это для обновлений безопасности Debian и подготовки новых компьютеров (которые сейчас не могут установить какой-либо пакет из-за отсутствия доступа в Интернет).

Схема достаточно ясна, но я не знаю, как реализовать ее на практике:

Я думаю, что мне понадобится своего рода HTTP-прокси на компьютере с Windows, который прослушивает порт, на который направляется удаленный туннель?

Как настроить фронтальную машину ssh так, чтобы другие узлы, использующие ее в качестве шлюза, подключались через туннель ssh?

Кроме того, как DNS будет работать в этом случае?

Спасибо за указатели!

1 ответ

Если сервер SSH позволяет это (что является настройкой по умолчанию для большинства дистрибутивов Linux), вы можете настроить переадресацию TCP с помощью PuTTY (и любого другого клиента SSH).

  • Определите порт на сервере SSH, который доступен и не используется, например, 8080.

  • В PuTTY установите правило, которое будет туннелировать TCP-трафик от этого порта 8080 на SSH-сервере через SSH к вашей системе Windows и перенаправлять его на прокси-сервер (proxy.example.com порт 8080):

  • На сервере SSH установите http_proxy а также https_proxy Переменные окружения и многие приложения смогут использовать этот прокси-сервер через переадресацию порта ssh (для некоторых приложений потребуется изменить свои собственные настройки, чтобы использовать прокси-сервер):

    export http_proxy="http://username:password@localhost:8080"
    export https_proxy=$http_proxy
    

    и проверить, например:

    curl -vv http://faultserver.ru
    
  • На других серверах (если позволяет брандмауэр) вы можете использовать:

    export http_proxy="http://username:password@<ip-of-ssh-server>:8080"
    

Этот конфиг не был проверен.

Другие вопросы по тегам