Рейтинг:1

Перенаправление обратного прокси

флаг sa

Не могли бы вы помочь мне?

sudo эхо "1" > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 1.1.1.1
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

Я использую эти правила iptables для создания серверов балансировки нагрузки. Я просто распространяю содержимое .mp4 и .mp3, но эти правила используют пропускную способность сервера, которую я использую для этой пересылки, а не пропускную способность целевого сервера.

Как я могу решить эту проблему? Пользователь должен использовать пропускную способность целевого сервера вместо сервера перенаправления. Спасибо.

Lester avatar
флаг fr
«Пользователь должен использовать полосу пропускания сервера назначения вместо сервера перенаправления». Как вы думаете, почему это сработает? Вы отправляете трафик на прокси-сервер и выполняете NAT, конечно, его «пропускная способность будет использоваться». Изучите другой метод, например использование прокси-сервера HTTP с перенаправлениями.
Makoa avatar
флаг sa
Да, некоторая пропускная способность будет использоваться, но сервер перенаправления перегружен, потому что кажется, что он использует эти файлы .mp4 и .mp3 вместо того, чтобы просто перенаправлять пользователей на целевой сервер. Целевой сервер, который должен предоставлять эти файлы пользователям вместо перенаправления. Разве это невозможно сделать с помощью iptables?
vidarlo avatar
флаг ar
Нет, ты не можешь. Когда вы делаете маршрутизацию, трафик идет через вас. Тем не менее, маршрутизация во многих случаях дешевле, чем чтение с диска, поэтому может иметь смысл иметь маршрутизатор, способный обрабатывать трафик. Маршрутизаторы 10G в наши дни не редкость.
Рейтинг:2
флаг ar

Как я могу решить эту проблему? Пользователь должен использовать пропускную способность целевого сервера вместо сервера перенаправления. Спасибо.

Вообще есть несколько способов:

  1. Используйте циклический DNS. Все серверы имеют одно и то же имя, но разные IP-адреса. Клиенты выбирают случайный сервер.
  2. Используйте перенаправления для отправки пользователей на соответствующий сервер.
  3. Используйте Anycast. Все сервера имеют одинаковый IP. Из-за того, как работает маршрутизация, пользователи обычно подключаются к локальному.

Round Robin DNS и перенаправления, как правило, можно настроить самостоятельно. Для Anycast вам нужно будет либо самостоятельно объявить BGP в нескольких регионах, либо подключиться к нескольким интернет-провайдерам по всему миру.

Другой отличной идеей было бы просто проигнорировать проблему и поставить перед собой такой сервис, как Cloudflare или Akami, и позволить им заниматься балансировкой нагрузки. Если вам нужен больший контроль, вы также можете разместить контент в облачном решении, таком как Azure или Google Cloud, где вам в меньшей степени придется беспокоиться о загрузке для получения вещей из хранилища BLOB-объектов.


Что делают ваши правила

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

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

Makoa avatar
флаг sa
К сожалению, то, что я ищу, больше связано с iptables
vidarlo avatar
флаг ar
Тогда вы лаете не на то дерево.
vidarlo avatar
флаг ar
@Makoa Я обновил ответ, чтобы объяснить, почему он ведет себя именно так.
Makoa avatar
флаг sa
«Сервер, который на самом деле является маршрутизатором, должен касаться пакетов, чтобы переписать заголовки, и все пакеты должны проходить через этот сервер». - Это объясняет, почему мой сервер перенаправления использует большую пропускную способность, большое спасибо.

Ответить или комментировать

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