Назад | Перейти на главную страницу

Совместное использование Интернета с машины Windows на машину Linux через ssh

У нас есть доступ к безопасной инфраструктуре Linux через машину Windows. У linux infra нет доступа к Интернету, но у машины Windows есть.

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

Мне интересно, можем ли мы предоставить linux infra доступ в Интернет через хост Windows через удаленный туннель с помощью putty.

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

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

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

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

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

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

Если сервер 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://serverfault.com
    
  • На других серверах (если это разрешено брандмауэром) вы можете использовать:

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

Этот конфиг не тестировался.