что такое проксирование запросов

Прокси: для чего нужен и как работает

Прокси-сервер – это промежуточная часть интернет-соединения, которая объединяет устройство пользователя с сервером ресурса. Такой удаленный сервер обеспечивает прием и передачу запросов, то есть он позволяет пользоваться интернетом без прямого коннекта между ПК и конечным ресурсом. Но для чего нужен прокси и как он функционирует?

Особенности работы технологии

Каждое устройство, которое используется для выхода во Всемирную сеть, должно иметь уникальный IP-адрес установленного формата. Эта стандартизированная цифровая маркировка позволяет определить регион нахождения пользователя, его провайдера, а также идентифицировать само устройство входа.

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Чтобы понять, для чего используются прокси-сервера, нужно напомнить, что им тоже присваиваются определенные IP-адреса. При соединении пользовательского устройства через proxy запросы передаются на внешние ресурсы уже с адреса посреднического сервера. Это позволяет пользователям скрыть свой истинный сетевой адрес, а значит, и анонимность.

Зная, что это такое – прокси-сервер, стоит понять, как к нему подключиться. Самым простым способом является внесение изменений в настройки подключения к сети в браузере. Для этого нужно предварительно получить адрес бесплатного или платного прокси. После этого все запросы будут передаваться и приниматься через сторонний сервер. Также существуют специальные программы, которые позволяют выбирать различные прокси-сервера и подключаться к ним без внесения изменений в настройки браузера.

Для чего используются прокси-сервера

В массовой практике эта технология используется для маскировки IP-адреса. Если пользователи сталкиваются с блокировкой сайтов и сервисов для своего региона или конкретного устройства, то они понимают, что, значит, нужно использовать прокси. К примеру, некоторые онлайн-игры предназначены для пользователей из США, но с помощью посреднического сервера к ним могут получить доступ любые пользователи.

Также можно выделить еще несколько ситуаций, когда предпочтительно пользоваться proxy-сервером:

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Итак, что такое HTTP прокси, теперь понятно, но нужно узнать, как получить такое подключение. В интернете можно найти сайты, на которых публикуются адреса бесплатных серверов, но в случае их использования придется смириться с достаточно низкой скоростью передачи и получения данных. Если с помощью анонимного подключения нужно будет пользоваться мультимедийными возможностями или решать профессиональные задачи, то лучше использовать платные программы и сервисы. К примеру, для серьезных задач можно арендовать уполномоченный прокси-сервер, мощности которого будут использоваться только одним абонентом.

Преимущества использования прокси-серверов

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

Сегодня на рынке появляются специальные сетевые маршрутизаторы, которые по своим функциям во многом копируют возможности proxy-серверов. Но посредническая технология передачи и приема данных продолжает пользоваться популярностью. Это связано с тем, что она намного безопаснее и проще во внедрении.

Виды прокси-подключения

Прозрачная схема – вид подключения, предусматривающий перенаправление всего или части трафика на прокси. Пользователь получает возможность использовать весь объем ресурсов сервера, но при этом он ограничивается в выборе способа подключения.

Обратная схема – это более сложная технология, которая используется для равномерного распределения нагрузки между серверами. При необходимости такой вид подключения может использоваться в качестве безопасного межсетевого экрана.

Прокси-сервера можно разделить не только по способам подключения, но и по технологии шифрования трафика:

Тонкости использования бесплатных прокси

Главное преимущество открытых серверов очевидно: нет необходимости тратить деньги для их использования. Но стоит задуматься о следующих недостатках бесплатных proxy:

Соответственно, к использованию бесплатных прокси-серверов нужно подходить с аккуратностью.

Источник

Разбираем методы проксирования на основе HAProxy

Недавно пришлось разбираться с проксированием доступа к веб-серверам с помощью HAProxy. Основная проблема оказалась в шифрованном доступе. Кому интересна эта тема, добро пожаловать под кат.

Есть в нашей компании ряд веб-серверов. Для экономии адресов доступ к ним организован через HAProxy. Примерно вот так:

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

При этом конфигурация самого HAProxy крайне простая (пример №1):

backend mytest1_web
mode http
cookie SERVERID insert indirect nocache
server mytestweb1 192.168.1.5:80 check cookie mytestweb1

backend mytest2_web
mode http
cookie SERVERID insert indirect nocache
server mytestweb2 192.168.1.10:80 check cookie mytestweb2

Здесь и далее я буду приводить не полные примеры конфиг-файла, а только интересующие нас куски.

Предельно просто — слушаем 80 порт и разбираем весь входящий траффик. Если запрашивается mytest1.loc, то он попадает в access-list is_mytest1, в этом случае используется бэкенд mytest1_web, в котором мы перенаправляем траффик на внутренний хост 192.168.1.5, где у нас и находится данный сайт. Аналогично и для mytest2.loc. Все предельно просто и при этом мы экономим реальные IP адреса.

Встал вопрос отказоустойчивости, тем более что в соседнем городе у нас тоже есть сервера, где мы можем поднять данные веб-сайты. Ну и есть виртуалка с линуксом в облаке Amazon, которая делает тоже самое, но для сайтов, расположенных в облаке. Можем ли мы использовать 2 HAProxy подряд? Поднимаем примерно такую тестовую схему и смотрим:

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Конфигурации HAProxy2 и HAProxy3 не изменились, однако в HAProxy1 добавился параметр балансировки (пример №2):

backend mytest1_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server HAProxy1 1.1.1.1:80 check cookie haproxy1_1
server HAProxy2 3.3.3.3:80 check cookie haproxy2_1

backend mytest2_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server HAProxy1 1.1.1.1:80 check cookie haproxy1_3
server HAProxy2 3.3.3.3:80 check cookie haproxy2_3

Все отлично заработало. Казалось бы, можно радоваться, но тут сайты решено было переделать под работу через SSL. И начались проблемы.

Вернемся к началу и рассмотрим все с начала. Первое допущение — нам не нужно шифровать траффик между прокси-сервером и самим сайтом. Второе — нам не нужно заботиться о привязке сертификата к сайту, то есть у нас везде используются самоподписанные сертификаты.

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Что нам нужно сделать? Сгенерировать и установить на нашем HAProxy сервере самоподписанный сертификат, тогда клиент, обращаясь на сайт, будет попадать на наш прокси-сервер, брать его сертификат, устанавливать защищенное соединение с сервером и дальше перенаправляться на веб-сайт. Причем для всех сайтов, находящихся за прокси-сервером, будет использоваться один сертификат.

Итак, приступим. Генерируем:

Записываем в один файл:

cat server.key > /etc/ssl/mytest.loc.pem
cat server.crt >> /etc/ssl/mytest.loc.pem

И редактируем конфигурацию HAProxy(пример №3):

backend mytest1_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb1 192.168.1.5:80 check cookie mytestweb1

backend mytest2_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb2 192.168.1.10:80 check cookie mytestweb2

Кстати, проверять конфигурацию перед перезапуском — это очень полезная привычка:

Проверяем и видим, что все отлично работает.

Что ж, а теперь возьмем случай, когда на каждом сайте свой сертификат, причем не самоподписанный, а купленный. И в нем есть строгая привязка к имени сайта. В этом случае мы можем решить вопрос двумя способами: разместить сертификаты для сайтов на HAProxy сервере или проксировать TCP вместо HTTP. Но в обоих случаях мы не сможем обойтись одним IP адресом для двух наших сайтов.

Рассмотрим первый случай:

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

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

backend mytest1_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb1 192.168.1.5:80 check cookie mytestweb1

backend mytest2_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb2 192.168.1.10:80 check cookie mytestweb2

Вроде все понятно, если траффик пришел на интерфейс с адресом 1.1.1.1, значит, клиент запрашивает сайт mytest1.loc. Значит, мы выдаем ему сертификат этого сайта и дальше проксируем на backend mytest1_web.

Во-втором случае мы пробрасываем полностью весь TCP-траффик, который пришел к нам на 443 порт. Это стоит сделать, например, тогда, когда вы по каким-либо причинам не хотите, чтоб сертификаты сайтов хранились на прокси сервере. Или, например, не доверяете внутренней сети между прокси и веб серверами.

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Конфигурация HAProxy будет примерно следующая(пример №5):

frontend mytest1_frontend
bind 1.1.1.1:443
mode tcp
use_backend mytest1_webssl

backend mytest1_webssl
mode tcp
option ssl-hello-chk
server mytestweb 192.168.1.5:443

frontend mytest2_frontend
bind 9.9.9.9:443
mode tcp
use_backend mytest2_webssl

backend mytest2_webssl
mode tcp
option ssl-hello-chk
server mytestweb 192.168.1.10:443

Вроде вполне понятная конфигурация. Наверно, стоит сказать, что поскольку мы прокидываем весь TCP траффик, мы не можем анализировать его, и поэтому наличие любых access-lists в frontend части будет выдавать ошибку.

Настало время вернуться к нашей задаче с разделением web сайтов по разным городам. Для начала рассмотрим более простой случай:

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Поскольку между HAProxy1 и HAProxy2 у нас интернет, то даже при использовании самоподписанных сертификатов мы не можем использовать HTTP PROXY MODE на HAProxy1, иначе теряется весь смысл в шифровании такого соединения. Будем использовать на HAProxy1 tcp mode, а на HAProxy2 http mode.

Конфигурация для HAProxy1 (пример №6):

frontend https_frontend
bind *:443
mode tcp
use_backend https_web

backend https_web
mode tcp
option ssl-hello-chk
server haproxy2 1.1.1.1:443

Конфигурация для HAProxy2 будет идентична конфигурации в примере №3ю

Настало время добавить вторую часть серверов:
что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Конфигурация для HAProxy1 (пример №7):

frontend https_frontend
bind *:443
mode tcp
use_backend https_web

backend https_web
mode tcp
balance roundrobin
option ssl-hello-chk
server haproxy2 1.1.1.1:443 check
server haproxy3 3.3.3.3:443 check

Все отличие данного примера от предыдущего — наличие балансировки и отказоустойчивости между HAProxy2 и HAProxy3, которые по нашему условию должны находиться в разных городах.

Что ж, последний пример будет в случае наличия несамоподписанных сертификатов. Предположим, что они установлены на HAProxy серверах — как в примере №4:

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

Конфигурация для HAProxy1 будет как в предыдущем примере, а для HAProxy2 — как в примере №4. Такая же для HAProxy3 с небольшими изменениями реальных адресов а frontend части.

Также стоит сказать, что можно все 3 HAProxy сервера настроить в TCP MODE — и это тоже будет работоспособное решение.

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

Небольшой апдейт. Мне тут подумалось, что если мы пробрасываем трафик, то нам незачем использовать на HAProxy2 и HAProxy3 набор различных IP адресов, гораздо проще просто использовать разные порты.
Давайте рассмотрим вот такую схему:
что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

backend mytest1_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb1 1.1.1.1:80 check cookie mytestweb1
server mytestweb1 2.2.2.2:80 check cookie mytestweb1

backend mytest2_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb2 1.1.1.1:80 check cookie mytestweb2
server mytestweb2 2.2.2.2:80 check cookie mytestweb2

backend mytest3_web
mode http
balance roundrobin
cookie SERVERID insert indirect nocache
server mytestweb3 2.2.2.2:80 check cookie mytestweb3

frontend mytest1_frontend
bind 3.3.3.3:443
mode tcp
use_backend mytest_webssl1

backend mytest_webssl1
mode tcp
balance roundrobin
option ssl-hello-chk
server mytestweb1 1.1.1.1:55551
server mytestweb2 2.2.2.2:55551

frontend mytest2_frontend
bind 4.4.4.4:443
mode tcp
use_backend mytest_webssl2

backend mytest_webssl2
mode tcp
balance roundrobin
option ssl-hello-chk
server mytestweb1 1.1.1.1:55552
server mytestweb2 2.2.2.2:55552

frontend mytest3_frontend
bind 5.5.5.5:443
mode tcp
use_backend mytest_webssl3

backend mytest_webssl3
mode tcp
balance roundrobin
option ssl-hello-chk
server mytestweb2 2.2.2.2:55553

И конфигурация HAProxy3:

frontend mytest1_frontend
bind 2.2.2.2:55551 ssl crt /etc/ssl/mytest1.loc.pem
mode http
option httpclose
option forwardfor
reqadd X-Forwarded-Proto:\ https
use_backend mytest1_web

frontend mytest2_frontend
bind 2.2.2.2:55552 ssl crt /etc/ssl/mytest2.loc.pem
mode http
option httpclose
option forwardfor
reqadd X-Forwarded-Proto:\ https
use_backend mytest2_web

frontend mytest3_frontend
bind 2.2.2.2:55553 ssl crt /etc/ssl/mytest3.loc.pem
mode http
option httpclose
option forwardfor
reqadd X-Forwarded-Proto:\ https
use_backend mytest3_web

backend mytest1_web
mode http
balance roundrobin
stats enable
cookie SERVERID insert indirect nocache
server mytestweb1 192.168.1.5:80 check cookie mytestweb1

backend mytest2_web
mode http
balance roundrobin
stats enable
cookie SERVERID insert indirect nocache
server mytestweb2 192.168.1.10:80 check cookie mytestweb2

backend mytest3_web
mode http
balance roundrobin
stats enable
cookie SERVERID insert indirect nocache
server mytestweb3 192.168.1.15:80 check cookie mytestweb3

Источник

Nginx — или проксирование запросов?

В локальной сети крутятся несколько виртуальных машин, как web сервера, так и войс чаты, почтовик и.т.п.
Имеется только 1 внешний IP.
На данный момент стоит роутер Mikrotik 951, который НАТом по определенным портам раскидывает запросы на нужные сервера. Уверен, такая схема не совсем верная.

Сейчас конечно так и работает, но всё делится только по портам на роутере.

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

что такое проксирование запросов. Смотреть фото что такое проксирование запросов. Смотреть картинку что такое проксирование запросов. Картинка про что такое проксирование запросов. Фото что такое проксирование запросов

В случае HTTP, в каждом запросе содержится доменное имя, к которому идёт обращение. И по этому заголовку, на принявшей запрос стороне, можно на уровне HTTP распределять трафик на разные сервера.

В случае teamspeak, запрос на домен, на другой домен и запрос на ip совершенно идентичны для принимающей их стороны. Т.е. что бы вы не делали, у вас всегда будет

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

Там домен нужен только для того, чтобы на клиенте превратить его в ip, и с клиента уже запрос идёт просто по ip, и мы не можем его приняв сказать, какой домен был прописан в настройках клиента.

То же и с почтой, кстати.

Развёртывание своего DNS вообще никак не повлияет на это всё. =)

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *