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

Можно ли направить HTTP-трафик через другой сервер?

Вопрос нуба. У меня три удаленных сервера (S1, S2 и S3). Один из них имеет подключение к Интернету (S1), а два других (S2 и S3) могут только доступ к S1 - например, у меня настроен SSH без пароля с S1 на S2 и S3.

Однако это означает, что я не могу выполнять обновления или управлять пакетами на S2 и S3. Есть ли способ сделать HTTP-запрос на S2 и S3, который туннелируется через S1, в основном обеспечивая доступ в Интернет? Применяется ли SSH-туннель? Если да, то есть ли какой-нибудь ресурс, который пошагово подскажет, как это сделать в моем случае?

Спасибо.

Самый простой способ предоставить доступ в Интернет (http / https) к системам, у которых нет прямого доступа в Интернет, - это использовать прокси, например Кальмар. Установите прокси на S1 и настройте S2 и S3 для использования прокси (например, установив переменную среды http_proxy или обновив файл конфигурации вашего приложения)

Через прокси

Прокси будет выполнять перенаправление трафика в зависимости от запроса клиента.

Преимущества

  • Вы можете перенаправить свой трафик, как хотите (например, соответствующее доменное имя)
  • Журнал доступа централизован на сервере 1

Через Apache

Если вы используете Apache на сервере 1, вы можете создать виртуальный хост для прокси-сервера вашего запроса на серверы 2 и 3.

Преимущества

  • Вы можете использовать разные доменные имена для доступа к каждому веб-серверу.
  • Веб-журналы будут централизованы на сервере 1
  • Вы можете использовать центральную аутентификацию
  • Вы можете заблокировать подозрительный веб-трафик с помощью правил apache на сервере 1 до доступа к серверам 2 и 3.

Неудобства

  • чтобы подключиться к ssh 2 и 3, вам нужно будет подключиться через сервер 1, затем используйте команду ssh для подключения к серверу 2 и 2

Через NAT

Если вы используете NAT (адрес трансляции сети), вы можете установить пару внешних IP + портов, связанных с внутренним IP + Port

Преимущества

  • Сервер как будто напрямую подключен к Интернету, поэтому вы можете получить к нему доступ только с помощью пары IP + порт.

Неудобства

  • Вам понадобится 1 порт для каждого веб-сервера и каждого ssh

Как предложил Берт Ниф, Squid - хорошее решение. Другой вариант, который я бы порекомендовал, - это прокси-сервер SOCKS, который использует туннель SSH, как вы предложили. Он может работать даже с некоторыми менеджерами пакетов: https://askubuntu.com/questions/35223/syntax-for-socks-proxy-in-apt-conf

Ссылка предназначена для ubuntu, но tsocks не относится к ubuntu.

Вот пример того, как: https://www.linode.com/docs/networking/ssh/setting-up-an-ssh-tunnel-with-your-linode-for-safe-browsing

Или просто погуглите 'socks proxy ssh'